fix DeprecationWarnings on 3.10
[relay.git/.git] / relay / __main__.py
1 import asyncio
2 import aiohttp.web
3 import logging
4 import platform
5 import sys
6 import Crypto
7 import time
8
9 from . import app, CONFIG
10
11
12 def crypto_check():
13     vers_split = platform.python_version().split('.')
14     pip_command = 'pip3 uninstall pycrypto && pip3 install pycryptodome'
15
16     if Crypto.__version__ != '2.6.1':
17         return
18
19     if int(vers_split[1]) > 7 and Crypto.__version__ == '2.6.1':
20         logging.error('PyCrypto is broken on Python 3.8+. Please replace it with pycryptodome before running again. Exiting in 10 sec...')
21         logging.error(pip_command)
22         time.sleep(10)
23         sys.exit()
24
25     else:
26         logging.warning('PyCrypto is old and should be replaced with pycryptodome')
27         logging.warning(pip_command)
28
29
30 async def start_webserver():
31     runner = aiohttp.web.AppRunner(app)
32     await runner.setup()
33     try:
34         listen = CONFIG['listen']
35     except:
36         listen = 'localhost'
37     try:
38         port = CONFIG['port']
39     except:
40         port = 8080
41
42     logging.info('Starting webserver at {listen}:{port}'.format(listen=listen,port=port))
43
44     site = aiohttp.web.TCPSite(runner, listen, port)
45     await site.start()
46
47 def main():
48     loop = asyncio.new_event_loop()
49     asyncio.set_event_loop(loop)
50     asyncio.ensure_future(start_webserver(), loop=loop)
51     loop.run_forever()
52
53
54 if __name__ == '__main__':
55     crypto_check()
56     main()