Upload supports empty files
This commit is contained in:
parent
9263d0cc06
commit
b1ada6ad69
1 changed files with 29 additions and 25 deletions
52
mega/mega.py
52
mega/mega.py
|
@ -531,37 +531,41 @@ class Mega(object):
|
|||
mac_str = '\0' * 16
|
||||
mac_encryptor = AES.new(k_str, AES.MODE_CBC, mac_str)
|
||||
iv_str = a32_to_str([ul_key[4], ul_key[5], ul_key[4], ul_key[5]])
|
||||
if file_size > 0:
|
||||
for chunk_start, chunk_size in get_chunks(file_size):
|
||||
chunk = input_file.read(chunk_size)
|
||||
upload_progress += len(chunk)
|
||||
|
||||
for chunk_start, chunk_size in get_chunks(file_size):
|
||||
chunk = input_file.read(chunk_size)
|
||||
upload_progress += len(chunk)
|
||||
encryptor = AES.new(k_str, AES.MODE_CBC, iv_str)
|
||||
for i in range(0, len(chunk)-16, 16):
|
||||
block = chunk[i:i + 16]
|
||||
encryptor.encrypt(block)
|
||||
|
||||
#fix for files under 16 bytes failing
|
||||
if file_size > 16:
|
||||
i += 16
|
||||
else:
|
||||
i = 0
|
||||
|
||||
encryptor = AES.new(k_str, AES.MODE_CBC, iv_str)
|
||||
for i in range(0, len(chunk)-16, 16):
|
||||
block = chunk[i:i + 16]
|
||||
encryptor.encrypt(block)
|
||||
if len(block) % 16:
|
||||
block += '\0' * (16 - len(block) % 16)
|
||||
mac_str = mac_encryptor.encrypt(encryptor.encrypt(block))
|
||||
|
||||
#fix for files under 16 bytes failing
|
||||
if file_size > 16:
|
||||
i += 16
|
||||
else:
|
||||
i = 0
|
||||
#encrypt file and upload
|
||||
chunk = aes.encrypt(chunk)
|
||||
output_file = requests.post(ul_url + "/" + str(chunk_start),
|
||||
data=chunk, timeout=self.timeout)
|
||||
completion_file_handle = output_file.text
|
||||
|
||||
block = chunk[i:i + 16]
|
||||
if len(block) % 16:
|
||||
block += '\0' * (16 - len(block) % 16)
|
||||
mac_str = mac_encryptor.encrypt(encryptor.encrypt(block))
|
||||
|
||||
#encrypt file and upload
|
||||
chunk = aes.encrypt(chunk)
|
||||
output_file = requests.post(ul_url + "/" + str(chunk_start),
|
||||
data=chunk, timeout=self.timeout)
|
||||
if self.options.get('verbose') is True:
|
||||
# upload progress
|
||||
print('{0} of {1} uploaded'.format(upload_progress, file_size))
|
||||
else:
|
||||
output_file = requests.post(ul_url + "/0",
|
||||
data='', timeout=self.timeout)
|
||||
completion_file_handle = output_file.text
|
||||
|
||||
if self.options.get('verbose') is True:
|
||||
# upload progress
|
||||
print('{0} of {1} uploaded'.format(upload_progress, file_size))
|
||||
|
||||
file_mac = str_to_a32(mac_str)
|
||||
|
||||
#determine meta mac
|
||||
|
|
Loading…
Reference in a new issue