Beispiel #1
0
    def __init__(self, url, source_replica_uid, creds, crypto, cert_file):
        """
        Initialize the sync target.

        :param url: The server sync url.
        :type url: str
        :param source_replica_uid: The source replica uid which we use when
                                   deferring decryption.
        :type source_replica_uid: str
        :param creds: A dictionary containing the uuid and token.
        :type creds: creds
        :param crypto: An instance of SoledadCrypto so we can encrypt/decrypt
                        document contents when syncing.
        :type crypto: soledad._crypto.SoledadCrypto
        :param cert_file: Path to the certificate of the ca used to validate
                          the SSL certificate used by the remote soledad
                          server.
        :type cert_file: str
        """
        if url.endswith("/"):
            url = url[:-1]
        self._url = str(url) + "/sync-from/" + str(source_replica_uid)
        self.source_replica_uid = source_replica_uid
        self._auth_header = None
        self._uuid = None
        self.set_creds(creds)
        self._crypto = crypto
        # TODO: DEPRECATED CRYPTO
        self._deprecated_crypto = old_crypto.SoledadCrypto(crypto.secret)
        self._insert_doc_cb = None

        # Twisted default Agent with our own ssl context factory
        factory = get_compatible_ssl_context_factory(cert_file)
        self._http = Agent(reactor, factory)

        if DO_STATS:
            self.sync_exchange_phase = [0]
def deprecate_client_crypto(client):
    secret = client._crypto.secret
    _crypto = old_crypto.SoledadCrypto(secret)
    setattr(client._dbsyncer, '_crypto', _crypto)
    return client