Fix Mega per Kodi 19

This commit is contained in:
Alhaziel01
2020-08-18 16:42:18 +02:00
parent a6a301e855
commit 293948d189
6 changed files with 23 additions and 14 deletions

View File

@@ -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']

View File

@@ -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

View File

@@ -1,4 +1,4 @@
from cursor import Cursor
from lib.megaserver.cursor import Cursor
class File(object):

View File

@@ -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()

View File

@@ -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