Add encrypted file upload for windows
This commit is contained in:
@@ -38,19 +38,21 @@ from .thumbnail import thumbnail
|
||||
|
||||
log = logging.getLogger('gajim.plugin_system.httpupload')
|
||||
|
||||
if os.name != 'nt':
|
||||
try:
|
||||
try:
|
||||
if os.name == 'nt':
|
||||
from cryptography.hazmat.backends.openssl import backend
|
||||
else:
|
||||
from cryptography.hazmat.backends import default_backend
|
||||
from cryptography.hazmat.primitives.ciphers import Cipher
|
||||
from cryptography.hazmat.primitives.ciphers import algorithms
|
||||
from cryptography.hazmat.primitives.ciphers.modes import GCM
|
||||
encryption_available = True
|
||||
except Exception as e:
|
||||
log.debug(e)
|
||||
encryption_available = False
|
||||
else:
|
||||
from cryptography.hazmat.primitives.ciphers import Cipher
|
||||
from cryptography.hazmat.primitives.ciphers import algorithms
|
||||
from cryptography.hazmat.primitives.ciphers.modes import GCM
|
||||
encryption_available = True
|
||||
except Exception as e:
|
||||
DEP_MSG = 'For encryption of files, ' \
|
||||
'please install python-cryptography!'
|
||||
log.debug('Cryptography Import Error: ' + str(e))
|
||||
log.info('Decryption/Encryption disabled due to errors')
|
||||
encryption_available = False
|
||||
log.info('Cryptography not available on Windows for now')
|
||||
|
||||
# XEP-0363 (http://xmpp.org/extensions/xep-0363.html)
|
||||
NS_HTTPUPLOAD = 'urn:xmpp:http:upload'
|
||||
@@ -65,6 +67,8 @@ class HttpuploadPlugin(GajimPlugin):
|
||||
|
||||
@log_calls('HttpuploadPlugin')
|
||||
def init(self):
|
||||
if not encryption_available:
|
||||
self.available_text = DEP_MSG
|
||||
self.config_dialog = None # HttpuploadPluginConfigDialog(self)
|
||||
self.controls = []
|
||||
self.events_handlers = {}
|
||||
@@ -466,10 +470,14 @@ class StreamFileWithProgress:
|
||||
self.encrypted_upload = encrypted_upload
|
||||
self.backing.seek(0, os.SEEK_END)
|
||||
if self.encrypted_upload:
|
||||
if os.name == 'nt':
|
||||
self.backend = backend
|
||||
else:
|
||||
self.backend = default_backend()
|
||||
self.encryptor = Cipher(
|
||||
algorithms.AES(key),
|
||||
GCM(iv),
|
||||
backend=default_backend()).encryptor()
|
||||
backend=self.backend).encryptor()
|
||||
self._total = self.backing.tell() + TAGSIZE
|
||||
else:
|
||||
self._total = self.backing.tell()
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[info]
|
||||
name: HttpUpload
|
||||
short_name: httpupload
|
||||
version: 0.5.1
|
||||
version: 0.5.2
|
||||
description: This plugin is designed to send a file to a contact or muc by using httpupload.<br/>
|
||||
Your server must support <a href="http://xmpp.org/extensions/xep-0363.html">XEP-0363: HTTP Upload</a>.<br/>
|
||||
Conversations supported this.<br/>
|
||||
|
||||
Reference in New Issue
Block a user