Exemple #1
0
def static(request, file_path):
    try:
        with open(path.join('static', file_path), 'rb') as f:
            content = f.read()
    except FileNotFoundError:
        return Response('not found', 404)
    content_type, _ = mimetypes.guess_type(file_path)
    return Response(body=content, content_type=content_type)
Exemple #2
0
def static(request, filename):
    if not filename.endswith('.js') and not filename.endswith('.css'):
        return Response('not found', 404)
    try:
        with open(filename, 'rb') as f:
            content = f.read()
    except FileNotFoundError:
        return Response('not found', 404)
    content_type, _ = mimetypes.guess_type(filename)
    return Response(body=content, content_type=content_type)
Exemple #3
0
def accounts_update(request, user_id):
    item = db.PlaidItem.query.get(int(request.body['plaid_item_id']))
    if item.user_id != user_id:
        return Response(code=403)
    item.name = request.body['name'] or None
    db.session.commit()
    return Response.json(True)
Exemple #4
0
def logout(request):
    response = Response(code=303, location='/')
    response.set_secure_cookie(request,
                               'user_id',
                               None,
                               secure=True,
                               max_age=datetime.timedelta())
    return response
Exemple #5
0
def login(request):
    email = request.body['email']
    password = request.body['password']
    if 'register' in request.body:
        user = db.User.register(email, password)
        db.session.commit()
        location = '/accounts'
    else:
        user = db.User.login(email, password)
        if user is None:
            return Response('bad email/password', 403)
        location = '/outcomes'
    response = Response(code=303, location=location)
    response.set_secure_cookie(request,
                               'user_id',
                               user.user_id,
                               secure=True,
                               max_age=datetime.timedelta(days=30))
    return response
Exemple #6
0
def fetch_transactions(request, user_id):
    relogin_items = transactions.process_user(user_id)
    if len(relogin_items) > 0:
        return Response.render(
            request, 'relogin.jinja2', {
                'environment': config.plaid.environment,
                'plaid_public_key': config.plaid.public_key,
                'relogin_items': relogin_items,
            })
    else:
        return Response(code=303, location='/outcomes')
Exemple #7
0
def _trace(code):
    args = [
        '../nsjail/nsjail', '--use_cgroupv2', '--cgroupv2_mount',
        '/sys/fs/cgroup/NSJAIL', '-Mo', '--chroot', chroot_dir, '-E',
        'LANG=en_US.UTF-8', '-R/usr', '-R/lib', '-R/lib64',
        '-R%s:/traceface' % traceface_dir, '-D/traceface', '--user', 'nobody',
        '--group', 'nogroup', '--time_limit', '2', '--disable_proc',
        '--iface_no_lo', '--cgroup_mem_max',
        str(50 * MB), '--cgroup_pids_max', '1', '--quiet', '--',
        '/usr/bin/python3', '-q', 'traceface', '-s'
    ]
    p = subprocess.run(args, input=code, capture_output=True, timeout=5)
    return Response(p.stdout, content_type='text/html; charset=UTF-8')
Exemple #8
0
 def wrapped(request):
     user_id = request.get_secure_cookie('user_id',
                                         datetime.timedelta(days=30))
     if user_id is None:
         return Response(code=401)
     return view_fn(request, int(user_id))
Exemple #9
0
def fetch_transactions(request, user_id):
    transactions.process_user(user_id)
    return Response(code=303, location='/outcomes')
Exemple #10
0
def trace(request):
    if len(request.body['paste']) > 0:
        return Response(code=303, location='/trace/' + request.body['paste'])
    code = request.body['code'].encode('utf-8')
    return _trace(code)
Exemple #11
0
def root(request):
    return Response(html, content_type='text/html; charset=UTF-8')
Exemple #12
0
def plaid_link_token(request, user_id):
    item = db.PlaidItem.query.get(int(request.body['plaid_item_id']))
    if item.user_id != user_id:
        return Response(code=403)
    link_token = plaid.link_token(user_id, item.access_token)
    return Response.json(link_token)