use pycryptodome instead of pycrypto
authorIzalia Mae <izalia@barkshark.tk>
Wed, 20 Nov 2019 03:08:14 +0000 (22:08 -0500)
committerIzalia Mae <izalia@barkshark.tk>
Wed, 20 Nov 2019 03:08:14 +0000 (22:08 -0500)
relay/__main__.py
requirements.txt

index 0bb2f7b..847f765 100644 (file)
@@ -1,9 +1,32 @@
 import asyncio
 import aiohttp.web
 import logging
+import platform
+import sys
+import Crypto
+import time
 
 from . import app, CONFIG
 
+
+def crypto_check():
+    vers_split = platform.python_version().split('.')
+    pip_command = 'pip3 uninstall pycrypto && pip3 install pycryptodome'
+
+    if Crypto.__version__ != '2.6.1':
+        return
+
+    if int(vers_split[1]) > 7 and Crypto.__version__ == '2.6.1':
+        logging.error('PyCrypto is broken on Python 3.8+. Please replace it with pycryptodome before running again. Exiting in 10 sec...')
+        logging.error(pip_command)
+        time.sleep(10)
+        sys.exit()
+
+    else:
+        logging.warning('PyCrypto is old and should be replaced with pycryptodome')
+        logging.warning(pip_command)
+
+
 async def start_webserver():
     runner = aiohttp.web.AppRunner(app)
     await runner.setup()
@@ -28,4 +51,5 @@ def main():
 
 
 if __name__ == '__main__':
+    crypto_check()
     main()
index 748c6e4..6b42e7f 100644 (file)
@@ -5,7 +5,7 @@ chardet==3.0.4
 idna==2.7
 idna-ssl==1.1.0
 multidict==4.3.1
-pycrypto==2.6.1
+pycryptodome==3.9.4
 PyYAML==3.13
 simplejson==3.16.0
 yarl==1.2.6