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')
|
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.backends import default_backend
|
||||||
from cryptography.hazmat.primitives.ciphers import Cipher
|
from cryptography.hazmat.primitives.ciphers import Cipher
|
||||||
from cryptography.hazmat.primitives.ciphers import algorithms
|
from cryptography.hazmat.primitives.ciphers import algorithms
|
||||||
from cryptography.hazmat.primitives.ciphers.modes import GCM
|
from cryptography.hazmat.primitives.ciphers.modes import GCM
|
||||||
encryption_available = True
|
encryption_available = True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
log.debug(e)
|
DEP_MSG = 'For encryption of files, ' \
|
||||||
encryption_available = False
|
'please install python-cryptography!'
|
||||||
else:
|
log.debug('Cryptography Import Error: ' + str(e))
|
||||||
|
log.info('Decryption/Encryption disabled due to errors')
|
||||||
encryption_available = False
|
encryption_available = False
|
||||||
log.info('Cryptography not available on Windows for now')
|
|
||||||
|
|
||||||
# XEP-0363 (http://xmpp.org/extensions/xep-0363.html)
|
# XEP-0363 (http://xmpp.org/extensions/xep-0363.html)
|
||||||
NS_HTTPUPLOAD = 'urn:xmpp:http:upload'
|
NS_HTTPUPLOAD = 'urn:xmpp:http:upload'
|
||||||
@@ -65,6 +67,8 @@ class HttpuploadPlugin(GajimPlugin):
|
|||||||
|
|
||||||
@log_calls('HttpuploadPlugin')
|
@log_calls('HttpuploadPlugin')
|
||||||
def init(self):
|
def init(self):
|
||||||
|
if not encryption_available:
|
||||||
|
self.available_text = DEP_MSG
|
||||||
self.config_dialog = None # HttpuploadPluginConfigDialog(self)
|
self.config_dialog = None # HttpuploadPluginConfigDialog(self)
|
||||||
self.controls = []
|
self.controls = []
|
||||||
self.events_handlers = {}
|
self.events_handlers = {}
|
||||||
@@ -466,10 +470,14 @@ class StreamFileWithProgress:
|
|||||||
self.encrypted_upload = encrypted_upload
|
self.encrypted_upload = encrypted_upload
|
||||||
self.backing.seek(0, os.SEEK_END)
|
self.backing.seek(0, os.SEEK_END)
|
||||||
if self.encrypted_upload:
|
if self.encrypted_upload:
|
||||||
|
if os.name == 'nt':
|
||||||
|
self.backend = backend
|
||||||
|
else:
|
||||||
|
self.backend = default_backend()
|
||||||
self.encryptor = Cipher(
|
self.encryptor = Cipher(
|
||||||
algorithms.AES(key),
|
algorithms.AES(key),
|
||||||
GCM(iv),
|
GCM(iv),
|
||||||
backend=default_backend()).encryptor()
|
backend=self.backend).encryptor()
|
||||||
self._total = self.backing.tell() + TAGSIZE
|
self._total = self.backing.tell() + TAGSIZE
|
||||||
else:
|
else:
|
||||||
self._total = self.backing.tell()
|
self._total = self.backing.tell()
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
[info]
|
[info]
|
||||||
name: HttpUpload
|
name: HttpUpload
|
||||||
short_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/>
|
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/>
|
Your server must support <a href="http://xmpp.org/extensions/xep-0363.html">XEP-0363: HTTP Upload</a>.<br/>
|
||||||
Conversations supported this.<br/>
|
Conversations supported this.<br/>
|
||||||
|
|||||||
Reference in New Issue
Block a user