コード例 #1
0
ファイル: admin.py プロジェクト: wangzh0ng/tinyAWDplatform-1
def load_to_redis():
    chals=Challenges.query.all()
    teams=db.session.query(Teams).join(Origin).all()
    chals_dict={}
    teams_dict={}
    for chal in chals:
        chals_dict[chal.id]=json.dumps({
            'id': chal.id,
            'name': chal.name,
            'dockername': chal.dockername,
            'type': chal.type,
            'score': chal.score,
            'command': chal.command,
            'flagcommand': chal.flagcommand,
            'desc': chal.desc
        })
    if len(chals_dict):
        redis_store.hmset('chals',chals_dict)
    for team in teams:
        teams_dict[team.id]=json.dumps({
            'id': team.id,
            'name': team.name,
            'nickname': team.nickname,
            'score': team.score,
            'password': team.origin_pass[0].password,
            'attackid':team.attackid,
            'instances': []
        })
    if not redis_store.hget('attackpack',team.attackid):
        redis_store.hset('attackpack',team.attackid,team.id)
    if len(teams_dict):
        redis_store.hmset('teams',teams_dict)
コード例 #2
0
def team_list():
    ans = []
    result_in_json = {}
    teams_in_redis = redis_store.hgetall('teams')
    if not teams_in_redis:
        total = db.session.query(db.func.count(Teams.id)).scalar()
        if request.args.has_key('page'):
            page = int(request.args['page'])
            teams = db.session.query(Teams).join(Origin).limit(20).offset(
                (page - 1) * 20).all()
        else:
            teams = db.session.query(Teams).join(Origin).all()
        for team in teams:
            json_team = {
                'id': team.id,
                'name': team.name,
                'nickname': team.nickname,
                'score': team.score,
                'password': team.origin_pass[0].password,
                'attackid': team.attackid,
                'instances': []
            }
            if not redis_store.hget('attackpack', team.attackid):
                redis_store.hset('attackpack', team.attackid, team.id)
            ans.append({
                'id': team.id,
                'name': team.name,
                'nickname': team.nickname,
                'score': team.score
            })
            result_in_json[team.id] = json.dumps(json_team)
        redis_store.hmset('teams', result_in_json)
    else:
        total = len(teams_in_redis)
        if request.args.has_key('page') and request.args['page'] != '':
            page = int(request.args['page'])
            has_page = True
        else:
            has_page = False
        counter = 0
        for teamid in teams_in_redis:
            if has_page and counter < (page - 1) * 20:
                counter += 1
                continue
            team = json.loads(teams_in_redis[teamid])
            ans.append({
                'id': team['id'],
                'name': team['name'],
                'nickname': team['nickname'],
                'score': team['score']
            })
            if has_page and len(ans) == 20:
                break
    return jsonify({'total': total, 'users': ans})
コード例 #3
0
ファイル: admin.py プロジェクト: wangzh0ng/tinyAWDplatform-1
def chals():
    ans=[]
    chals_in_redis=redis_store.hgetall('chals')
    if not chals_in_redis:
        total=db.session.query(db.func.count(Challenges.id)).scalar()
        if request.args.has_key('page'):
            page=int(request.args['page'])
            chals=Challenges.query.limit(20).offset((page-1)*20).all()
        else:
            chals=Challenges.query.all()
        result_json={}
        for chal in chals:
            chal_json={
                'id':chal.id,
                'name':chal.name,
                'dockername':chal.dockername,
                'type':chal.type,
                'score':chal.score,
                'command':chal.command,
                'flagcommand':chal.flagcommand,
                'desc':chal.desc
            }
            ans.append(chal_json)
            result_json[chal.id]=json.dumps(chal_json)
        if len(result_json):
            redis_store.hmset('chals',result_json)
    else:
        total=len(chals_in_redis)
        if request.args.has_key('page'):
            page=int(request.args['page'])
            has_page=True
        else:
            has_page=False
        counter=0
        for chalid in chals_in_redis:
            if has_page and counter<(page-1)*20:
                counter+=1
                continue
            ans.append(json.loads(chals_in_redis[chalid]))
            if has_page and len(ans)==20:
                break
    return jsonify({
        'total':total,
        'chals':ans
    })