コード例 #1
0
    def create_account(self, email_address, response):
        # This method assumes that the existence of an account for the
        # provider and email_address has been checked by the caller;
        # callers may have different methods of performing the check
        # (redwood auth versus get_account())
        namespace = Namespace()
        account = GenericAccount(namespace=namespace)

        # The server endpoints can ONLY be set at account creation and
        # CANNOT be subsequently changed in order to prevent MITM attacks.
        account.provider = self.provider_name
        if self.provider_name == 'custom':
            account.imap_endpoint = (response['imap_server_host'],
                                     response['imap_server_port'])
            account.smtp_endpoint = (response['smtp_server_host'],
                                     response['smtp_server_port'])

        # Shim for back-compatability with legacy auth
        # The old API does NOT send these but authentication now uses them
        # so set them (included here, set in update_account()).
        for username in ['imap_username', 'smtp_username']:
            if username not in response:
                response[username] = email_address
        for password in ['imap_password', 'smtp_password']:
            if password not in response:
                response[password] = response['password']

        return self.update_account(account, response)
コード例 #2
0
ファイル: generic.py プロジェクト: lukaszle/sync-engine
    def create_account(self, email_address, response):
        # This method assumes that the existence of an account for the
        # provider and email_address has been checked by the caller;
        # callers may have different methods of performing the check
        # (redwood auth versus get_account())
        namespace = Namespace()
        account = GenericAccount(namespace=namespace)

        # The server endpoints can ONLY be set at account creation and
        # CANNOT be subsequently changed in order to prevent MITM attacks.
        account.provider = self.provider_name
        if self.provider_name == 'custom':
            account.imap_endpoint = (response['imap_server_host'],
                                     response['imap_server_port'])
            account.smtp_endpoint = (response['smtp_server_host'],
                                     response['smtp_server_port'])

        # Shim for back-compatability with legacy auth
        # The old API does NOT send these but authentication now uses them
        # so set them (included here, set in update_account()).
        for username in ['imap_username', 'smtp_username']:
            if username not in response:
                response[username] = email_address
        for password in ['imap_password', 'smtp_password']:
            if password not in response:
                response[password] = response['password']

        return self.update_account(account, response)
コード例 #3
0
    def create_account(self, db_session, email_address, response):
        try:
            account = db_session.query(GenericAccount).filter_by(
                email_address=email_address).one()
        except sqlalchemy.orm.exc.NoResultFound:
            namespace = Namespace()
            account = GenericAccount(namespace=namespace)

        account.email_address = response['email']
        account.password = response['password']
        account.date = datetime.datetime.utcnow()

        provider_name = self.provider_name
        account.provider = provider_name
        if provider_name == 'custom':
            account.imap_endpoint = (response['imap_server_host'],
                                     response['imap_server_port'])
            account.smtp_endpoint = (response['smtp_server_host'],
                                     response['smtp_server_port'])

        # Hack to ensure that account syncs get restarted if they were stopped
        # because of e.g. invalid credentials and the user re-auths.
        # TODO(emfree): remove after status overhaul.
        if account.sync_state != 'running':
            account.sync_state = None

        return account
コード例 #4
0
def make_imap_account(db_session, email_address):
    import platform
    from inbox.models.backends.generic import GenericAccount
    from inbox.models import Namespace
    account = GenericAccount(email_address=email_address,
                             sync_host=platform.node(),
                             provider='custom')
    account.password = '******'
    account.namespace = Namespace()
    db_session.add(account)
    db_session.commit()
    return account
コード例 #5
0
ファイル: base.py プロジェクト: uvatbc/sync-engine
def make_imap_account(db_session, email_address):
    import platform
    from inbox.models.backends.generic import GenericAccount
    from inbox.models import Namespace
    account = GenericAccount(email_address=email_address,
                             sync_host=platform.node(),
                             provider='custom')
    account.password = '******'
    account.namespace = Namespace()
    db_session.add(account)
    db_session.commit()
    return account
コード例 #6
0
def add_fake_yahoo_account(db_session, email_address='*****@*****.**'):
    import platform
    from inbox.models.backends.generic import GenericAccount
    from inbox.models import Namespace
    account = GenericAccount(email_address=email_address,
                             sync_host=platform.node(),
                             provider='yahoo')
    account.imap_password = '******'
    account.smtp_password = '******'
    account.namespace = Namespace()
    db_session.add(account)
    db_session.commit()
    return account
コード例 #7
0
ファイル: base.py プロジェクト: gisho/sync-engine
def add_fake_yahoo_account(db_session, email_address='*****@*****.**'):
    import platform
    from inbox.models.backends.generic import GenericAccount
    from inbox.models import Namespace
    account = GenericAccount(email_address=email_address,
                             sync_host=platform.node(),
                             provider='yahoo')
    account.imap_password = '******'
    account.smtp_password = '******'
    account.namespace = Namespace()
    db_session.add(account)
    db_session.commit()
    return account
コード例 #8
0
ファイル: base.py プロジェクト: nohobby/sync-engine
def generic_account(db):
    import platform
    from inbox.models.backends.generic import GenericAccount
    from inbox.models import Namespace

    ns = Namespace()
    account = GenericAccount(email_address="*****@*****.**", sync_host=platform.node(), provider="custom")
    account.namespace = ns
    account.create_emailed_events_calendar()
    account.password = "******"
    db.session.add(account)
    db.session.commit()
    return account
コード例 #9
0
def test_gracefully_handle_new_namespace(db, api_client):
    new_namespace = Namespace()
    new_account = GenericAccount()
    new_account.password = '******'
    new_namespace.account = new_account
    db.session.add(new_namespace)
    db.session.add(new_account)
    db.session.commit()
    cursor = get_cursor(api_client, int(time.time()),
                        new_namespace)
    url = url_concat('/n/{}/delta/streaming'.format(new_namespace.public_id),
                     {'timeout': .1, 'cursor': cursor})
    r = api_client.get_raw(url)
    assert r.status_code == 200
コード例 #10
0
ファイル: generic.py プロジェクト: GEverding/inbox
    def create_account(self, db_session, email_address, response):
        try:
            account = db_session.query(GenericAccount).filter_by(
                email_address=email_address).one()
        except sqlalchemy.orm.exc.NoResultFound:
            namespace = Namespace()
            account = GenericAccount(namespace=namespace)

        account.email_address = response['email']
        account.password = response['password']
        account.date = datetime.datetime.utcnow()

        provider_name = self.provider_name
        account.provider = provider_name
        if provider_name == 'custom':
            account.imap_endpoint = (response['imap_server_host'],
                                     response['imap_server_port'])
            account.smtp_endpoint = (response['smtp_server_host'],
                                     response['smtp_server_port'])

        # Hack to ensure that account syncs get restarted if they were stopped
        # because of e.g. invalid credentials and the user re-auths.
        # TODO(emfree): remove after status overhaul.
        if account.sync_state != 'running':
            account.sync_state = None

        return account
コード例 #11
0
def add_account_with_different_namespace_id(db_session,
                                            email_address='*****@*****.**'):
    import platform
    from inbox.models.backends.generic import GenericAccount
    from inbox.models import Namespace
    account = GenericAccount(id=11,
                             email_address=email_address,
                             sync_host=platform.node(),
                             provider='yahoo')
    account.imap_password = '******'
    account.smtp_password = '******'
    account.namespace = Namespace()
    db_session.add(account)
    db_session.commit()
    assert account.namespace.id != account.id
    return account
コード例 #12
0
 def create_account(self, email_address, response):
     # This method assumes that the existence of an account for the
     # provider and email_address has been checked by the caller;
     # callers may have different methods of performing the check
     # (redwood auth versus get_account())
     namespace = Namespace()
     account = GenericAccount(namespace=namespace)
     return self.update_account(account, response)
コード例 #13
0
ファイル: generic.py プロジェクト: rayleyva/inbox
def create_account(db_session, email_address, response):
    provider_name = provider_from_address(email_address)
    if provider_name == "unknown":
        raise NotSupportedError('Inbox does not support the email provider.')

    try:
        account = db_session.query(GenericAccount).filter_by(
            email_address=email_address).one()
    except sqlalchemy.orm.exc.NoResultFound:
        namespace = Namespace()
        account = GenericAccount(namespace=namespace)

    account.email_address = response['email']
    account.password = response['password']
    account.date = datetime.datetime.utcnow()
    account.provider = provider_name

    return account
コード例 #14
0
ファイル: test_account.py プロジェクト: nkhuyu/sync-engine
def add_fake_imap_account(db_session, provider, email_address, password):
    from inbox.models import Namespace
    from inbox.models.backends.generic import GenericAccount
    namespace = Namespace()
    account = GenericAccount(namespace=namespace,
                             provider=provider,
                             email_address=email_address,
                             password=password)
    db_session.add(account)
    db_session.commit()
    return account
コード例 #15
0
 def create_account(self, account_data):
     namespace = Namespace()
     account = GenericAccount(namespace=namespace)
     account.provider = "custom"
     account.create_emailed_events_calendar()
     account.sync_should_run = False
     return self.update_account(account, account_data)
コード例 #16
0
ファイル: generic.py プロジェクト: rf-/sync-engine
    def create_account(self, db_session, email_address, response):
        try:
            account = db_session.query(GenericAccount).filter_by(email_address=email_address).one()
        except sqlalchemy.orm.exc.NoResultFound:
            namespace = Namespace()
            account = GenericAccount(namespace=namespace)

        account.email_address = response["email"]
        if response.get("name"):
            account.name = response["name"]
        account.password = response["password"]
        account.date = datetime.datetime.utcnow()

        provider_name = self.provider_name
        account.provider = provider_name
        if provider_name == "custom":
            account.imap_endpoint = (response["imap_server_host"], response["imap_server_port"])
            account.smtp_endpoint = (response["smtp_server_host"], response["smtp_server_port"])

        # Ensure account has sync enabled after authing.
        account.enable_sync()

        return account
コード例 #17
0
    def create_account(self, db_session, email_address, response):
        try:
            account = db_session.query(GenericAccount).filter_by(
                email_address=email_address).one()
        except sqlalchemy.orm.exc.NoResultFound:
            namespace = Namespace()
            account = GenericAccount(namespace=namespace)

        account.email_address = response['email']
        account.password = response['password']
        account.date = datetime.datetime.utcnow()

        provider_name = self.provider_name
        account.provider = provider_name
        if provider_name == 'custom':
            account.imap_endpoint = (response['imap_server_host'],
                                     response['imap_server_port'])
            account.smtp_endpoint = (response['smtp_server_host'],
                                     response['smtp_server_port'])

        # Ensure account has sync enabled after authing.
        account.enable_sync()

        return account
コード例 #18
0
def add_generic_imap_account(db_session, email_address='*****@*****.**'):
    import platform
    from inbox.models.backends.generic import GenericAccount
    from inbox.models import Namespace
    account = GenericAccount(email_address=email_address,
                             sync_host=platform.node(),
                             provider='custom')
    account.imap_endpoint = ('imap.custom.com', 993)
    account.smtp_endpoint = ('smtp.custom.com', 587)
    account.imap_password = '******'
    account.smtp_password = '******'
    account.namespace = Namespace()
    db_session.add(account)
    db_session.commit()
    return account
コード例 #19
0
ファイル: generic.py プロジェクト: mbilker/sync-engine
    def create_account(self, email_address, response):
        # This method assumes that the existence of an account for the
        # provider and email_address has been checked by the caller;
        # callers may have different methods of performing the check
        # (redwood auth versus get_account())
        namespace = Namespace()
        account = GenericAccount(namespace=namespace)

        # Verification for legacy auth account creation attempts.
        for username in ['imap_username', 'smtp_username']:
            if username not in response:
                response[username] = email_address
        for password in ['imap_password', 'smtp_password']:
            if password not in response:
                response[password] = response['password']

        return self.update_account(account, response)
コード例 #20
0
def generic_account(db):
    import platform
    from inbox.models.backends.generic import GenericAccount
    from inbox.models import Namespace
    ns = Namespace()
    account = GenericAccount(email_address='*****@*****.**',
                             sync_host=platform.node(),
                             provider='custom')
    account.namespace = ns
    account.create_emailed_events_calendar()
    account.password = '******'
    db.session.add(account)
    db.session.commit()
    return account
コード例 #21
0
ファイル: base.py プロジェクト: gisho/sync-engine
def add_generic_imap_account(db_session, email_address='*****@*****.**'):
    import platform
    from inbox.models.backends.generic import GenericAccount
    from inbox.models import Namespace
    account = GenericAccount(email_address=email_address,
                             sync_host=platform.node(),
                             provider='custom')
    account.imap_endpoint = ('imap.custom.com', 993)
    account.smtp_endpoint = ('smtp.custom.com', 587)
    account.imap_password = '******'
    account.smtp_password = '******'
    account.namespace = Namespace()
    db_session.add(account)
    db_session.commit()
    return account
コード例 #22
0
ファイル: generic.py プロジェクト: Klaudit/inbox
    def create_account(self, db_session, email_address, response):
        try:
            account = db_session.query(GenericAccount).filter_by(
                email_address=email_address).one()
        except sqlalchemy.orm.exc.NoResultFound:
            namespace = Namespace()
            account = GenericAccount(namespace=namespace)

        account.email_address = response['email']
        account.password = response['password']
        account.date = datetime.datetime.utcnow()

        provider_name = self.provider_name
        account.provider = provider_name
        if provider_name == 'custom':
            account.imap_endpoint = (response['imap_server_host'],
                                     response['imap_server_port'])
            account.smtp_endpoint = (response['smtp_server_host'],
                                     response['smtp_server_port'])

        return account
コード例 #23
0
def create_account(db_session, email_address, response):
    provider_name = provider_from_address(email_address)
    if provider_name == "unknown":
        raise NotSupportedError('Inbox does not support the email provider.')

    try:
        account = db_session.query(GenericAccount).filter_by(
            email_address=email_address).one()
    except sqlalchemy.orm.exc.NoResultFound:
        namespace = Namespace()
        account = GenericAccount(namespace=namespace)

    account.email_address = response['email']
    account.password = response['password']
    account.date = datetime.datetime.utcnow()
    account.provider = provider_name

    return account