diff options
author | Jefferson Stachelski <jstachel@thoughtworks.com> | 2015-11-06 13:33:47 -0200 |
---|---|---|
committer | Jefferson Stachelski <jstachel@thoughtworks.com> | 2015-11-06 13:33:47 -0200 |
commit | 2a5c8fd4575af9f19db56e4603a8c221020711fd (patch) | |
tree | 7152fb249889d4612783659ea5c211b2efe6a886 /service/pixelated/bitmask_libraries/soledad.py | |
parent | 50f599dcc5297b3b29827b2ac02e6a9885b52d62 (diff) |
Refactor - Removed class SoledadSession
The SoledadSession class was removed and some methods implemented there
was moved to LeapSessionFactory and LeapProvider
Diffstat (limited to 'service/pixelated/bitmask_libraries/soledad.py')
-rw-r--r-- | service/pixelated/bitmask_libraries/soledad.py | 74 |
1 files changed, 8 insertions, 66 deletions
diff --git a/service/pixelated/bitmask_libraries/soledad.py b/service/pixelated/bitmask_libraries/soledad.py index 0546a158..406e9fc1 100644 --- a/service/pixelated/bitmask_libraries/soledad.py +++ b/service/pixelated/bitmask_libraries/soledad.py @@ -13,15 +13,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 errno - -import os from leap.soledad.client import Soledad from leap.soledad.common.crypto import WrongMacError, UnknownMacMethodError -from pixelated.bitmask_libraries.certs import LeapCertificate - -SOLEDAD_TIMEOUT = 120 -SOLEDAD_CERT = '/tmp/ca.crt' class SoledadDiscoverException(Exception): @@ -34,71 +27,20 @@ class SoledadWrongPassphraseException(Exception): super(SoledadWrongPassphraseException, self).__init__(*args, **kwargs) -class SoledadSessionFactory(object): - @classmethod - def create(cls, provider, user_token, user_uuid, encryption_passphrase): - return SoledadSession(provider, encryption_passphrase, user_token, user_uuid) - - -class SoledadSession(object): - def __init__(self, provider, encryption_passphrase, user_token, user_uuid): - self.provider = provider - self.config = provider.config - self.user_uuid = user_uuid - self.user_token = user_token +class SoledadFactory(object): - self.soledad = self._init_soledad(encryption_passphrase) - - def _init_soledad(self, encryption_passphrase): + @classmethod + def create(cls, user_token, user_uuid, encryption_passphrase, secrets, local_db, server_url, api_cert): try: - server_url = self._discover_soledad_server() - - self._create_database_dir() - secrets = self._secrets_path() - local_db = self._local_db_path() - - return Soledad(self.user_uuid, + return Soledad(user_uuid, passphrase=unicode(encryption_passphrase), secrets_path=secrets, - local_db_path=local_db, server_url=server_url, - cert_file=LeapCertificate(self.provider).provider_api_cert, + local_db_path=local_db, + server_url=server_url, + cert_file=api_cert, shared_db=None, - auth_token=self.user_token, + auth_token=user_token, defer_encryption=False) except (WrongMacError, UnknownMacMethodError), e: raise SoledadWrongPassphraseException(e) - - def _leap_path(self): - return "%s/soledad" % self.config.leap_home - - def _secrets_path(self): - return "%s/%s.secret" % (self._leap_path(), self.user_uuid) - - def _local_db_path(self): - return "%s/%s.db" % (self._leap_path(), self.user_uuid) - - def _create_database_dir(self): - try: - os.makedirs(self._leap_path()) - except OSError as exc: - if exc.errno == errno.EEXIST and os.path.isdir(self._leap_path()): - pass - else: - raise - - def sync(self): - return self.soledad.sync() - - def _discover_soledad_server(self): - try: - json_data = self.provider.fetch_soledad_json() - - hosts = json_data['hosts'] - host = hosts.keys()[0] - server_url = 'https://%s:%d/user-%s' % \ - (hosts[host]['hostname'], hosts[host]['port'], - self.user_uuid) - return server_url - except Exception, e: - raise SoledadDiscoverException(e) |