diff options
Diffstat (limited to 'service/pixelated/bitmask_libraries')
-rw-r--r-- | service/pixelated/bitmask_libraries/certs.py | 20 | ||||
-rw-r--r-- | service/pixelated/bitmask_libraries/session.py | 1 | ||||
-rw-r--r-- | service/pixelated/bitmask_libraries/smtp.py | 3 | ||||
-rw-r--r-- | service/pixelated/bitmask_libraries/soledad.py | 4 |
4 files changed, 19 insertions, 9 deletions
diff --git a/service/pixelated/bitmask_libraries/certs.py b/service/pixelated/bitmask_libraries/certs.py index ed597ca8..4ee28a19 100644 --- a/service/pixelated/bitmask_libraries/certs.py +++ b/service/pixelated/bitmask_libraries/certs.py @@ -14,6 +14,8 @@ # You should have received a copy of the GNU Affero General Public License # along with Pixelated. If not, see <http://www.gnu.org/licenses/>. import os +import requests +import json from leap.common import ca_bundle @@ -46,7 +48,17 @@ class LeapCertificate(object): def _local_server_cert(self): cert_file = os.path.join(self._certs_home, '%s.ca.crt' % self._server_name) - if os.path.isfile(cert_file): - return cert_file - else: - return None + if not os.path.isfile(cert_file): + self._download_server_cert(cert_file) + + return cert_file + + def _download_server_cert(self, cert_file_name): + response = requests.get('https://%s/provider.json' % self._server_name) + provider_data = json.loads(response.content) + ca_cert_uri = str(provider_data['ca_cert_uri']) + + response = requests.get(ca_cert_uri) + with open(cert_file_name, 'w') as file: + file.write(response.content) + file.close diff --git a/service/pixelated/bitmask_libraries/session.py b/service/pixelated/bitmask_libraries/session.py index 9f21fbe6..b23d964f 100644 --- a/service/pixelated/bitmask_libraries/session.py +++ b/service/pixelated/bitmask_libraries/session.py @@ -14,7 +14,6 @@ # You should have received a copy of the GNU Affero General Public License # along with Pixelated. If not, see <http://www.gnu.org/licenses/>. import errno -import logging import traceback import sys diff --git a/service/pixelated/bitmask_libraries/smtp.py b/service/pixelated/bitmask_libraries/smtp.py index d5236e8e..d4f68f94 100644 --- a/service/pixelated/bitmask_libraries/smtp.py +++ b/service/pixelated/bitmask_libraries/smtp.py @@ -55,7 +55,6 @@ class LeapSmtp(object): if not os.path.exists(os.path.dirname(cert_path)): os.makedirs(os.path.dirname(cert_path)) - session = requests.session() cert_url = '%s/%s/cert' % (self._provider.api_uri, self._provider.api_version) cookies = {"_session_id": self._srp_session.session_id} @@ -94,7 +93,7 @@ class LeapSmtp(object): if not self._smtp_service: try: self.start() - except Exception as e: + except: logger.warning("Couldn't start the SMTP server now, will try again when the user tries to use it") return False return True diff --git a/service/pixelated/bitmask_libraries/soledad.py b/service/pixelated/bitmask_libraries/soledad.py index e6607bde..1c46f2ab 100644 --- a/service/pixelated/bitmask_libraries/soledad.py +++ b/service/pixelated/bitmask_libraries/soledad.py @@ -18,7 +18,7 @@ import errno import os from leap.keymanager import KeyManager from leap.soledad.client import Soledad -from leap.soledad.common.crypto import WrongMac, UnknownMacMethod, MacMethods +from leap.soledad.common.crypto import WrongMac, UnknownMacMethod from .certs import which_bundle @@ -69,7 +69,7 @@ class SoledadSession(object): return Soledad(self.leap_srp_session.uuid, unicode(encryption_passphrase), secrets, local_db, server_url, which_bundle(self.provider), self.leap_srp_session.token, defer_encryption=False) - except (WrongMac, UnknownMacMethod, MacMethods), e: + except (WrongMac, UnknownMacMethod), e: raise SoledadWrongPassphraseException(e) def _leap_path(self): |