Fix Mega per Kodi 19
This commit is contained in:
@@ -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']
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from cursor import Cursor
|
||||
from lib.megaserver.cursor import Cursor
|
||||
|
||||
|
||||
class File(object):
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user