Exemple #1
0
def create_tokens(collection_id, files, is_g2p):
    tokens = []
    num_errors = 0
    error_line, error_file = None, None
    for file in files:
        if is_g2p:
            i_f = file.stream.read().decode("utf-8").split('\n')
            for idx, line in enumerate(i_f):
                try:
                    text, src, scr, *pron = line.split('\t')[0:]
                    pron = '\t'.join(p for p in pron)
                    token = Token(text,
                                  file.filename,
                                  collection_id,
                                  score=scr,
                                  pron=pron,
                                  source=src)
                    tokens.append(token)
                    db.session.add(token)
                except ValueError as error:
                    num_errors += 1
                    error_line = idx + 1
                    error_file = file.filename
                    continue
        else:
            content = file.stream.read().decode("utf-8").strip().split('\n')
            for c in content:
                # we split each file by new lines
                if c[-1] == ',':
                    # this is a hack for the SQL stuff.
                    c = c[:-1]
                token = Token(c, file.filename, collection_id)
                tokens.append(token)
                # add token to database
                db.session.add(token)

    if num_errors > 0:
        flash(
            f'{num_errors} villur komu upp, fyrsta villan í {error_file} í línu {error_line}',
            category='danger')

    db.session.commit()

    # save token text to file
    for token in tokens:
        token.save_to_disk()
    db.session.commit()

    # reset the number of tokens in the collection
    collection = Collection.query.get(collection_id)
    collection.update_numbers()
    db.session.commit()
    return tokens
Exemple #2
0
def consumer_create(request):
    if request.method == "POST":
        form = ConsumerCreateForm(request.POST)
        if form.is_valid():
            consumer = Consumer()
            consumer.name = form.cleaned_data['name']
            consumer.description = form.cleaned_data['description']
            consumer.user_id = request.user.username
            consumer.refresh_key_secret()
            consumer.save()
            
            token = Token()
            token.key = Token.generate_token()
            token.secret = Token.generate_token()
            token.consumer = consumer
            token.user = request.user.username
            token.type = 'A'
            token.save()
            
            return HttpResponseRedirect('/accounts/profile')
    else: 
        form = ConsumerCreateForm()    

    params = {'form': form}
    return render_to_response('oauth/consumer_form.tpl', params,
                              context_instance=RequestContext(request))
Exemple #3
0
    def save_token(token, request, *args, **kwargs):
        client_id = request.client.client_id
        user_id = request.user.id

        # Make sure there is only one grant token for every (client, user)
        mongo.db.tokens.remove({'client_id': client_id, 'user_id': user_id})

        expires_in = token.pop('expires_in')
        expires = datetime.utcnow() + timedelta(seconds=expires_in)

        token = Token(
            client_id=request.client.client_id,
            user_id=user_id,
            token_type=token['token_type'],
            access_token=token['access_token'],
            refresh_token=token['refresh_token'],
            expires=expires,
        )

        # Add the access token to the Redis cache and set it to
        # expire at the appropriate time.
        redis.setex(token.access_token, expires_in, user_id)

        spec = {'user_id': user_id, 'client_id': client_id}

        # Replace token if it exists already, insert otherwise.
        mongo.db.tokens.update(spec, _to_json(token), upsert=True)
def create_token(request, url_id=None, **kwargs):
    kwargs['extra_context'] = {}
    if request.method == 'POST':
        form = TokenAddForm(request.POST)
        if form.is_valid():
            email = form.cleaned_data['email']
            token = Token(
                url=form.cleaned_data['url'],
                valid_until=form.cleaned_data['valid_until'],
                forward_count=form.cleaned_data['forward_count'],
                email=email,
                name=form.cleaned_data['name'],
            )
            token.save()
            messages.add_message(
                request, messages.SUCCESS,
                'Token successfully created for %s.' % token.email)
            return HttpResponseRedirect(reverse('token_list'))
    else:
        initial_data = None
        if not url_id is None:
            url = ProtectedURL.objects.get(id=url_id)
            initial_data = {
                'url': url.url,
            }
        form = TokenAddForm(initial=initial_data)
    kwargs['extra_context']['form'] = form
    return direct_to_template(request,
                              template='token_auth/create_token.html',
                              **kwargs)
Exemple #5
0
    def _tokensetter(self, token, req, *args, **kwargs):
        from models import Token
        from flask import current_app as app
        session = app.db.session
        if req.user:
            toks = req.user and Token.query.filter_by(
                client_id=req.client.client_id,
                user_id=req.user.id) or Token.query.filter_by(
                    client_id=req.client.client_id)
            # make sure that every client has only one token connected to a user
            for t in toks:
                session.delete(t)

        expires_in = token.get('expires_in')
        expires = datetime.utcnow() + timedelta(seconds=expires_in)

        tok = Token(
            access_token=token['access_token'],
            refresh_token=token['refresh_token'],
            token_type=token['token_type'],
            _scopes=token['scope'],
            expires=expires,
            client_id=req.client.client_id,
            user_id=req.user and req.user.id or None,
        )
        session.add(tok)
        session.commit()
        return tok
Exemple #6
0
def generate_token():

    token = ''.join(random.choice(string.ascii_uppercase + string.digits)
                    for x in range(32))

    insertToken = Token(
        name='first_token',
        token=token
    )

    session.add(insertToken)
    session.commit()
    
    try:
        newToken = session.query(Token).filter_by(token=token).one()
        return make_response(
            jsonify(
                status=200,
                result = {
                    'token': newToken.token
                }
            ), 200
        )
    except Exception:
        return make_response(
            jsonify(
                status=500,
                result = {
                    'message': 'Something went wrong'
                }
            ), 500
        )
Exemple #7
0
async def get_token(form_data: OAuth2PasswordRequestForm = Depends()):
    """
    Used for getting the jwt token,
    takes a form data with {"username": ... , "password": ...}
    but username is email in our case
    """
    credentials_exception = HTTPException(
        status_code=status.HTTP_401_UNAUTHORIZED,
        detail="Incorrect username or password",
        headers={"WWW-Authenticate": "Bearer"},
    )
    # checks if the username is in the db
    user = await User.get(email=form_data.username
                          ).values_list("email", "password_hash")
    if not user:
        raise credentials_exception
    # list of tuples
    user_email = user[0][0]
    user_hash = user[0][1]

    # checks if password matches
    if not verify_password(user_hash, form_data.password):
        raise credentials_exception

    access_token = create_access_token(data={"sub": user_email})

    return Token(access_token=access_token, token_type="bearer")
Exemple #8
0
 def set_token(token, request, *args, **kwargs):
     logger.debug('set token - user: {}\n'.format(request.user.userId))
     tok = Token(**token)
     tok.userId = request.user.userId
     tok.client_id = request.client.client_id
     tok.save()
     return tok
Exemple #9
0
def lexer(input: str, skip_whitespace: bool = True) -> [Token]:
    tokens = []
    pos = 0
    while pos <= len(input):
        if skip_whitespace:
            match = re_ws_skip.search(input, pos)

            if match:
                pos = match.start()
            else:
                return tokens

        matches = [re.match(input, pos) for re, _ in rules]

        try:
            match = [(match, rules[idx][1])
                     for idx, match in enumerate(matches) if match][0]
        except IndexError as e:
            print(input[pos])
            raise LexerError(pos)

        if match[1] is not 'COMMENT':
            tokens.append(Token(match[1], match[0].group(0)))
        pos = match[0].end()

    return tokens
Exemple #10
0
def save_token(token, request, *args, **kwargs):
    print("token setter")
    toks = Token.query.filter_by(
        client_id=request.client.client_id,
        user_id=request.user.id
    )
    print(toks)
    # make sure that every client has only one token connected to a user
    for t in toks:
        db.session.delete(t)

    expires_in = token.pop('expires_in')
    expires = datetime.utcnow() + timedelta(seconds=expires_in)

    tok = Token(
        access_token=token['access_token'],
        refresh_token=token['refresh_token'],
        token_type=token['token_type'],
        _scopes=token['scope'],
        expires=expires,
        client_id=request.client.client_id,
        user_id=request.user.id,
    )
    print(tok)
    db.session.add(tok)
    db.session.commit()
    return tok
Exemple #11
0
def save_token(token, request, *args, **kwargs):
    ''' Saves a token.

        This will delete any other tokens associated with the client once run.
        This means that any existing refresh tokens will be lost and the new
        one is the only refresh that can be used from that point onward. Which
        is a reasonable way to handle things, although technically the length
        a refresh token is valid for is not specified in the spec, so if you
        want longer lived refresh tokens this will have to be modified.
    '''

    toks = Token.query.filter_by(client_id=request.client.client_id,
                                 user_id=request.user.id)
    # make sure that every client has only one token connected to a user
    for t in toks:
        db.session.delete(t)

    expires_in = token.pop('expires_in')
    expires = datetime.utcnow() + timedelta(seconds=expires_in)

    tok = Token(
        access_token=token['access_token'],
        refresh_token=token['refresh_token'],
        token_type=token['token_type'],
        _scopes=token['scope'],
        expires=expires,
        client_id=request.client.client_id,
        user_id=request.user.id,
    )
    db.session.add(tok)
    db.session.commit()
    return tok
Exemple #12
0
def make_refresh_token(refresh_token: str) -> dict:
    """ формирование нового access_token по refresh_token """

    token = Token.query.filter(
        and_(Token.refresh_token == refresh_token, Token.used == False))

    if token.count() > 0:
        token = token.first()

        new_token = Token(token.user_client_id)
        db.session.add(new_token)
        db.session.commit()

        token.used = True
        db.session.add(token)
        db.session.commit()

        result = {
            "access_token": new_token.access_token,
            "token_type": "bearer",
            "expires_in": 86400,
            "refresh_token": new_token.refresh_token,
        }
    else:
        result = {
            "description": "Refresh token not found or it was used",
            "errors": [{
                "type": "bad request"
            }],
        }

    return result
Exemple #13
0
def forgot_password():
    content = request.get_json(silent=True)

    with db.connect() as session:
        user = (session.query(User).filter_by(
            username=content["username"]).first())

        if user and content["email"] == user.email:

            data = user.get_data()
            data["uuid"] = str(uuid4())

            # Store token in database
            expiry_date = datetime.utcnow() + timedelta(seconds=600)
            token = Token(token=data["uuid"],
                          token_expire=expiry_date,
                          token_type="PW_RESET",
                          blacklisted=False)
            session.add(token)

            # Create and send email
            token = encode_email_token(data)
            url = url_for("reset_password", token=token, _external=True)

            send_forgot_email(url, content["email"])

            return {"succes": True, "message": "Reset request sent."}

        return {"success": False, "message": "Nope. Didn't work! :("}
Exemple #14
0
def mockdata():

    user = User(
        username="******",
        email="*****@*****.**",
        is_admin=False,
    )

    user.set_password("pass")

    question_cool = Question(body="Is it cool?")

    question_neat = Question(body="Is this neat?")

    token_cool = Token(name="cool")
    token_neat = Token(name="neat")

    mod_cool = Modifier(yes_modifier=1,
                        no_modifier=-1,
                        token=token_cool,
                        question=question_cool)

    mod_neat = Modifier(yes_modifier=1,
                        no_modifier=-1,
                        token=token_neat,
                        question=question_neat)

    resp_yes_neat = Response(user=user, answer="yes", question=question_neat)

    resp_no_cool = Response(user=user, answer="no", question=question_cool)

    data = [
        user, question_cool, question_neat, token_cool, token_neat, mod_cool,
        mod_neat, resp_no_cool, resp_yes_neat
    ]
    app.logger.info("Inserting mock data...")
    for datum in data:
        db.session.add(datum)
        try:
            db.session.commit()
        except Exception as e:
            db.session.rollback()
            app.logger.error("Error inserting mock data: {}".format(e))
        finally:
            db.session.close()

    app.logger.info("Mock data inserted")
Exemple #15
0
 def sign_stuff():
     # note: sign_hash() blocks gevent event loop for about a second.
     ksisig = ksi.sign_hash(HashVal(hash_in, parsed_args['algorithm']))
     token = Token(hash=binascii.unhexlify(hash_in),
                   sig=ksisig.serialize(),
                   by='myself')
     session.add(token)
     session.commit()
Exemple #16
0
def create_token(uid):
    '''
    生成token
    '''
    shal = '%s=%s=%s' % ('Token', uid, time.time())
    shal_uid = hashlib.sha1(shal.encode('utf-8')).hexdigest()

    token = Token(id=next_id(), uid=uid, key=shal_uid)
    yield from token.save()
    return token['key']
Exemple #17
0
def generate_token():
    global token
    auth = ''.join(
        random.choice(string.ascii_uppercase + string.digits +
                      string.ascii_lowercase) for _ in range(15))
    token = Token(auth)

    with open('token.json', 'w') as f:
        f.flush()
        f.write(token.toJSON())
Exemple #18
0
def create_access_token(
    data: dict,
    expires_delta: timedelta = timedelta(days=ACCESS_TOKEN_EXPIRE_DAYS)
) -> Token:
    """Creates a JWT with default time delta of 30 minutes"""
    expire = datetime.utcnow() + expires_delta
    to_encode = data.copy()
    to_encode.update({"exp": expire})
    access_token = jwt.encode(to_encode, key=SECRET, algorithm=ALGORITHM)
    return Token(access_token=access_token, token_type=TOKEN_TYPE)
    def regist_token(self, request):
        if Token.query(Token.token == request.token).fetch():
            return RegistTokenResult(result="DUP")

        token = Token(token=request.token, os='ios')
        token.put()

        push_to(token, u"환영합니다! 벙커원 교회 주보 알림목록에 등록되었습니다!", 0)

        return RegistTokenResult(result="OK")
Exemple #20
0
def create_user(name, email, token):
    user = User(name=name, email=email)
    session.add(user)
    session.commit()

    # TODO: generate unique tokens for each user
    # temporary implementation
    token = Token(user_id=user.id, key=token)
    session.add(token)
    session.commit()
    return token.key
Exemple #21
0
def load_token():
    global token
    print("[DEBUG] Loading token")
    try:
        with open('token.json') as f:
            data = json.load(f)

        token = Token(data["auth"])
        return True
    except:
        return False
Exemple #22
0
def releaseTokens(user_id):
    ret = {}
    ret['refresh_token'] = uuid.uuid4().hex
    ret['token'] = jwt.encode({'id': user_id},
                              config.secret,
                              algorithm='HS256')
    ret['token'] = ret['token'].decode('utf-8')
    print('[+] New token is ', ret['refresh_token'])
    new_token = Token(user_id=user_id, token=ret['refresh_token'])
    db.session.add(new_token)
    db.session.commit()
    return ret
Exemple #23
0
def notification():

    if request.method == "POST":
        token = request.get_json()

        db.create_all()
        print(token['token'])
        obj = Token(tokenID=token['token'])
        db.session.add(obj)
        db.session.commit()
        return jsonify(sucess=True)
    return render_template("notification.html")
Exemple #24
0
def auth(mail, pwhash):
    user = User.query.filter_by(mail=mail).first()
    if (user != None):
        if (user.pwhash == pwhash):
            oldt = user.token[0] if len(user.token) == 1 else None
            if (oldt != None):
                oldt.token = generate_token()
                oldt.update_expiration()
            else:
                db.session.add(Token(uid=user.uid, token=generate_token()))
            db.session.commit()
            return jsonify(user.json())
    return "denied"
def save_token_to_database(token):
    if not Token.query.filter_by(user_id=current_user.id).first():
        token = Token(
            user_id=current_user.id,
            token=token,
        )
        db.session.add(token)
    else:
        token_instance = Token.query.filter_by(user_id=current_user.id).first()
        token_instance.token = token

    db.session.commit()
    return token
Exemple #26
0
def tokenize(text, content):
    if content == '':
        return []
    if isinstance(content, str):
        content = unicode(content, 'utf8')
    tokens = []
    for seq, word in enumerate(vc.tokenize(content)):
        token = Token(word=word,
                      corpus=text.corpus,
                      text=text,
                      seq=seq)
        tokens.append(token)
    return tokens
Exemple #27
0
def add_user_token():
    # Creates a fresh UUID and stores it in the database
    # If a token for a user_id already exists, return the existing token
    req_data = request.get_json()
    user_id = User.query.filter_by(username=req_data['username']).first().id
    user_token = Token.query.filter_by(user_id=user_id).first()
    if user_token:
        return user_token.token
    else:
        new_uuid = str(uuid4())
        token = Token(token=new_uuid, user_id=user_id)
        db.session.add(token)
        db.session.commit()
        return new_uuid
Exemple #28
0
def token():  # 生成token,生成后存储到数据库。
    appid_in = Appid.query.get(1)
    appid = appid_in.appid
    secret = appid_in.secret
    url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={}&secret={}".format(
        appid, secret)
    ret = requests.get(url=url)
    content = ret.content.decode("utf-8")
    js = json.loads(content)
    access_token = js['access_token']
    token = Token(token=access_token)
    db.session.add(token)
    db.session.commit()
    return access_token
    def regist_token(self, request):
        if Token.query(Token.token == request.token).fetch():
            return RegistTokenResult(result="DUP")

        token = urllib.unquote(request.token)
        token = Token(token=request.token,
                      os=request.os,
                      width=request.width,
                      height=request.height)
        token.put()

        push_to(token, u"환영합니다! 벙커원 교회 주보 알림목록에 등록되었습니다!", 0)

        return RegistTokenResult(result="OK")
Exemple #30
0
def monitor_token():
    """
    监听 kafka 日志数据,出现新数据时,过滤出 transfer 函数对应的日志,从 web3 获取 token
    :return:
    """
    if not config.get('kafka', 'log_topic', fallback=None):
        logger_err.error('config.ini 中没有 log_topic 参数,退出 monitor_token 任务')
        return
    elif not config.get('kafka', 'token_topic', fallback=None):
        logger_err.error('config.ini 中没有 token_topic 参数,退出 monitor_token 任务')
        return
    consumer = kafka_consumer(config.get('kafka', 'log_topic'), group_id='monitor_token')
    last_block_height = None
    tx_cnt = 0  # 已处理的交易数
    for msg in consumer:
        logs = msg.value

        block_number = logs[0]['block_number']
        if last_block_height != block_number:
            logger.info(f'区块 {last_block_height} 共处理交易 {tx_cnt} 笔')
            logger.info(f'开始处理区块高度 {block_number} 下各交易的 receipt')
            last_block_height = block_number
            tx_cnt = 1
        else:
            tx_cnt += 1

        # 筛选出 token 地址
        addresses = set()
        for log in logs:
            if log['topics'].startswith(TOPIC_TRANSFER):
                addresses.add(log['address'])

        # 获取 token
        for address in addresses:
            # 如果是已经处理过的地址,则直接处理
            if address in valid_token_cache:
                valid_token_cache[address].save()
                continue
            elif address in invalid_token_cache:
                invalid_token_cache[address] = 1
                continue

            try:
                contract = w3.eth.contract(address, abi=ERC20_ABI)
                token = Token(data=address, contract=contract, block_number=block_number)
                token.save()
                valid_token_cache[address] = token
            except InvalidAddress:
                invalid_token_cache[address] = 1
                logger_err.debug(f'无法处理 token 合约地址 {address}')