diff --git a/lib/megaserver/__init__.py b/lib/megaserver/__init__.py index 910bef15..955d4725 100644 --- a/lib/megaserver/__init__.py +++ b/lib/megaserver/__init__.py @@ -1,3 +1,3 @@ -from client import Client -from server import Server +from lib.megaserver.client import Client +from lib.megaserver.server import Server __all__ = ['Client', 'Server'] diff --git a/lib/megaserver/client.py b/lib/megaserver/client.py index 66e196f8..2b96c7a1 100644 --- a/lib/megaserver/client.py +++ b/lib/megaserver/client.py @@ -1,17 +1,19 @@ import base64, json, random, struct, time, sys, traceback if sys.version_info[0] >= 3: + PY3 = True import urllib.request as urllib xrange = range else: + PY3 = False import urllib from core import httptools from threading import Thread -from file import File -from handler import Handler +from lib.megaserver.file import File +from lib.megaserver.handler import Handler from platformcode import logger -from server import Server +from lib.megaserver.server import Server class Client(object): @@ -184,7 +186,7 @@ class Client(object): from Cryptodome.Cipher import AES except: from Crypto.Cipher import AES - decryptor = AES.new(key, AES.MODE_CBC, '\0' * 16) + decryptor = AES.new(key, AES.MODE_CBC, b'\0' * 16) return decryptor.decrypt(data) def aes_cbc_decrypt_a32(self,data, key): @@ -194,7 +196,7 @@ class Client(object): return sum((self.aes_cbc_decrypt_a32(a[i:i+4], key) for i in xrange(0, len(a), 4)), ()) def dec_attr(self, attr, key): - attr = self.aes_cbc_decrypt(attr, self.a32_to_str(key)).rstrip('\0') - if not attr.endswith("}"): - attr = attr.rsplit("}", 1)[0] + "}" - return json.loads(attr[4:]) if attr[:6] == 'MEGA{"' else False + attr = self.aes_cbc_decrypt(attr, self.a32_to_str(key)).rstrip(b'\0') + if not attr.endswith(b"}"): + attr = attr.rsplit(b"}", 1)[0] + b"}" + return json.loads(attr[4:]) if attr[:6] == b'MEGA{"' else False diff --git a/lib/megaserver/file.py b/lib/megaserver/file.py index e91fe1f8..54c5e5a5 100644 --- a/lib/megaserver/file.py +++ b/lib/megaserver/file.py @@ -1,4 +1,4 @@ -from cursor import Cursor +from lib.megaserver.cursor import Cursor class File(object): diff --git a/lib/megaserver/handler.py b/lib/megaserver/handler.py index 323ef8a2..ba4b5461 100644 --- a/lib/megaserver/handler.py +++ b/lib/megaserver/handler.py @@ -1,10 +1,12 @@ import time, os, re, sys if sys.version_info[0] >= 3: + PY3 = True from http.server import BaseHTTPRequestHandler import urllib.request as urllib import urllib.parse as urlparse else: + PY3 = False from BaseHTTPServer import BaseHTTPRequestHandler import urlparse import urllib @@ -61,15 +63,17 @@ class Handler(BaseHTTPRequestHandler): self.send_pls(self.server._client.files) return False + if PY3: filename = urllib.unquote(url)[1:] + else: filename = urllib.unquote(url)[1:].decode("utf-8") if not self.server._client.file or urllib.unquote(url)[1:] != self.server._client.file.name: for f in self.server._client.files: - if f.name == urllib.unquote(url)[1:].decode("utf-8"): + if f.name == filename: self.server._client.file = f break - if self.server._client.file and urllib.unquote(url)[1:].decode("utf-8") == self.server._client.file.name: + if self.server._client.file and filename == self.server._client.file.name: range = False self.offset = 0 size, mime = self._file_info() diff --git a/lib/megaserver/server.py b/lib/megaserver/server.py index 35319951..32241945 100644 --- a/lib/megaserver/server.py +++ b/lib/megaserver/server.py @@ -1,9 +1,11 @@ import sys, traceback if sys.version_info[0] >= 3: from http.server import HTTPServer + from socketserver import ThreadingMixIn else: from BaseHTTPServer import HTTPServer -from SocketServer import ThreadingMixIn + from SocketServer import ThreadingMixIn + from threading import Thread from platformcode import logger diff --git a/servers/mega.py b/servers/mega.py index 8334b0c9..d9526bb9 100755 --- a/servers/mega.py +++ b/servers/mega.py @@ -12,6 +12,7 @@ from platformcode import platformtools, logger files = None def test_video_exists(page_url): + # from core .support import dbg;dbg() types= "File" msg = "The link has a problem." id_video = None