Ejemplo n.º 1
0
def verify(block):
    print('BRIGHTID')
    db = ArangoClient(hosts=config.ARANGO_SERVER).db('_system')
    verifieds = db.aql.execute('''
        FOR v in verifications
            FILTER v.name == 'SeedConnected'
                AND v.rank > 0
                AND v.block == @block
            RETURN v.user
    ''',
                               bind_vars={'block': block})

    batch_db = db.begin_batch_execution(return_result=True)
    verifications = batch_db.collection('verifications')
    for i, verified in enumerate(verifieds):
        verifications.insert({
            'name': 'BrightID',
            'user': verified,
            'block': block,
            'timestamp': int(time.time() * 1000),
            'hash': utils.hash('BrightID', verified)
        })
        if i % 1000 == 0:
            batch_db.commit()
            batch_db = db.begin_batch_execution(return_result=True)
            verifications = batch_db.collection('verifications')
    batch_db.commit()

    verifiedCount = db['verifications'].find({
        'name': 'BrightID',
        'block': block
    }).count()
    print(f'verifieds: {verifiedCount}\n')
Ejemplo n.º 2
0
def verify(block):
    print('Update verifications for apps')
    db = ArangoClient(hosts=config.ARANGO_SERVER).db('_system')
    parser = Parser()
    apps = {
        app["_key"]: app['verification']
        for app in db['apps'] if app.get('verification')
    }
    batch_db = db.begin_batch_execution(return_result=True)
    batch_col = batch_db.collection('verifications')
    counter = 0
    for user in db['users']:
        verifications = {}
        for v in db['verifications'].find({
                'block': block,
                'user': user['_key']
        }):
            verifications[v['name']] = True
            for k in v:
                if k in ['_key', '_id', '_rev', 'user', 'name']:
                    continue
                verifications[f'{v["name"]}.{k}'] = v[k]

        for app in apps:
            try:
                expr = parser.parse(apps[app])
                variables = expr.variables()
                verifications.update(
                    {k: False
                     for k in variables if k not in verifications})
                verified = expr.evaluate(verifications)
            except:
                print('invalid verification expression')
                continue

            if verified:
                batch_col.insert({
                    'app': True,
                    'name': app,
                    'user': user['_key'],
                    'block': block,
                    'timestamp': int(time.time() * 1000)
                })
                counter += 1
                if counter % 1000 == 0:
                    batch_db.commit()
                    batch_db = db.begin_batch_execution(return_result=True)
                    batch_col = batch_db.collection('verifications')
    batch_db.commit()
def verify(block):
    print('SOCIAL RECOVERY SETUP')
    db = ArangoClient(hosts=config.ARANGO_SERVER).db('_system')
    snapshot_db = ArangoClient(hosts=config.ARANGO_SERVER).db('snapshot')
    verifieds = snapshot_db.aql.execute('''
        FOR u IN users
            LET recoveryConnections = LENGTH(
                FOR c IN connections
                    FILTER c._from == u._id AND c.level == 'recovery'
                    RETURN c
            )
            FILTER recoveryConnections > 2
            RETURN u._key
    ''')

    batch_db = db.begin_batch_execution(return_result=True)
    verifications = batch_db.collection('verifications')
    for i, verified in enumerate(verifieds):
        verifications.insert({
            'name':
            'SocialRecoverySetup',
            'user':
            verified,
            'block':
            block,
            'timestamp':
            int(time.time() * 1000),
            'hash':
            utils.hash('SocialRecoverySetup', verified)
        })
        if i % 1000 == 0:
            batch_db.commit()
            batch_db = db.begin_batch_execution(return_result=True)
            verifications = batch_db.collection('verifications')
    batch_db.commit()

    verifiedCount = db['verifications'].find({
        'name': 'SocialRecoverySetup',
        'block': block
    }).count()
    print(f'verifieds: {verifiedCount}\n')