Ejemplo n.º 1
0
def stats():
    return jsonify({
        'current_instances': len(redis.smembers('ports')),
        'total_instances': redis.get('instances'),
        'current_users': len(redis.smembers('users')),
        'challenges': len(challenge_data)
    })
Ejemplo n.º 2
0
def disconnect(user):
    instance_id = redis.get(user)
    if instance_id is not None:
        instance = Instance.get(instance_id)
        instance.users.remove(user)
        redis.delete(user)
    return 'disconnected'
Ejemplo n.º 3
0
def create_instance():
    challenge = request.json.get('challenge')
    user = str(request.json.get('user'))
    if challenge not in challenge_data:
        return abort(404)
    if redis.get(user) is not None:
        return abort(403)
    return jsonify(get_instance_for(user, challenge).to_json())
Ejemplo n.º 4
0
def request_reset(id):
    user = request.json['user']
    if redis.get(user) != id:
        return abort(403)
    instance = Instance.get(id)
    instance.users.remove(user)
    instance.save()
    redis.sadd(f'{user}_avoid', instance.container.id)
    new_instance = get_instance_for(user, instance.challenge)
    redis.set(user, new_instance.container_id)
    return jsonify(new_instance.to_json())
Ejemplo n.º 5
0
def user_instance(user):
    instance = redis.get(user)
    if instance is not None:
        return jsonify(Instance.from_string(instance))
    return abort(404)