示例#1
0
def add_user_request():
    token = token_validator(request.headers['token'])
    if token is not None and g.user.auth == AuthLeval.ADMIN:
        data = request.get_json(force=True)
        try:
            newUser = User(data['user_name'], data['password'],
                           int(data['auth']), data['email'])
            status = add_user(newUser)
            if status == "success":
                resp = Response(response='{"status": "' + status + '"}',
                                status=200)
                _thread.start_new_thread(
                    send_mail,
                    (data['email'],
                     "Hi\n Your user name for Bassa is " + data['user_name'] +
                     " and your password is " + data['password']))
            else:
                resp = Response(response='{"error":"' + status + '"}',
                                status=400)
        except Exception as e:
            resp = Response(response='{"error":"' + str(e) + '"}', status=400)
        resp.headers['token'] = token
        resp.headers['Access-Control-Expose-Headers'] = 'token'
        return resp
    elif token is not None:
        return '{"error":"not authorized"}', 403
    else:
        return '{"error":"token error"}', 403
示例#2
0
def send_file_from_path():
	token = None
	if request.args.get('share') is not None:
		token = 'sample-token-for-sharing-feature'
	if token is None:
		token = token_validator(request.headers['token'])
	if token is not None:
		try:
			gid = request.args.get('gid')
			logging.info('User asked for file, having GID (ugid) ' + gid)
			file_name = file_name_formatter(gid) + '.zip'
			download_path = get_zip_path(gid)
		except Exception as e:
			logging.error(" get file API (/api/file) got wrong arguments, thrown an error :: %s" % e)
			return Response("error", status=400)
		
		try:
			return send_file(filename_or_fp=download_path, attachment_filename=file_name,
							 as_attachment=True)
		except Exception as e:
			logging.error("File sending has a exception. When sending file, we got :: %s" % e)
			return Response("File you are trying to access is not available to us. Please ask admin to check the server"
							, status=404)
	else:
		return Response("Invalid Token in request", 403)
示例#3
0
def start_compression():
	token = None
	if request.args.get('share') is not None:
		token = 'sample-token-for-sharing-feature'
	if token is None:
		token = token_validator(request.headers['token'])
	if token is not None:
		gid_list = request.get_json()['gid']  # list of file identifiers to compress
		gid_list.sort()
		ugid_of_compressed_file = ''
		subprocess_params = ''  # parameters required to start compression handler
		for elem in gid_list:
			ugid_of_compressed_file += elem
			subprocess_params += elem + ' '
		# check status of file existence
		if os.path.exists(get_zip_path(ugid_of_compressed_file)):
			response_dict = {'process_id': ugid_of_compressed_file, 'progress': get_compression_progress(ugid_of_compressed_file)}
			return jsonify(response_dict)

		script_path = os.path.abspath(os.path.dirname(__file__))
		subprocess.call("python3 {}/compression_handler.py {} &".format(script_path, subprocess_params), shell=True)
		response_dict = {'process_id': ugid_of_compressed_file, 'progress': 0}
		return jsonify(response_dict)
	else:
		return Response("Invalid Token in request", 403)
示例#4
0
def check_compression_progress():
	token = token_validator(request.headers['token'])
	if token is not None:
		process_id = request.args.get('gid')
		status = get_compression_progress(comp_id=process_id)
		response_dict = {'process_id': process_id, 'progress': status}
		return jsonify(response_dict)
	else:
		return Response("Invalid Token in request", 403)
示例#5
0
def remove_download_request(id):
    token = token_validator(request.headers['token'])
    if token is not None:
        try:
            status = remove_download(id, g.user.userName)
            resp = Response(response='{"status":"' + status + '"}',
                            status=(200 if status == "success" else 400))
        except Exception as e:
            resp = Response(response='{"error":"' + str(e) + '"}', status=400)
        resp.headers['token'] = token
        resp.headers['Access-Control-Expose-Headers'] = 'token'
        return resp
    elif token is not None:
        return '{"error":"not authorized"}', 403
    else:
        return '{"error":"token error"}', 403
示例#6
0
def unblock_user_request(username):
    token = token_validator(request.headers['token'])
    if token is not None and g.user.auth == AuthLeval.ADMIN:
        try:
            status = unblock_user(username)
            resp = Response(response='{"status":"' + status + '"}',
                            status=(200 if status == "success" else 400))
        except Exception as e:
            resp = Response(response='{"error":"' + str(e) + '"}', status=400)
        resp.headers['token'] = token
        resp.headers['Access-Control-Expose-Headers'] = 'token'
        return resp
    elif token is not None:
        return '{"error":"not authorized"}', 403
    else:
        return '{"error":"token error"}', 403
示例#7
0
def get_downloads_request(limit):
    token = token_validator(request.headers['token'])
    if token is not None:
        try:
            status = get_downloads(int(limit))
            if not isinstance(status, str):
                resp = Response(response=json.dumps(status), status=200)
            else:
                resp = Response('{"error":"' + status + '"}', status=400)
        except Exception as e:
            resp = Response(response='{"error":"' + str(e) + '"}', status=400)
        resp.headers['token'] = token
        resp.headers['Access-Control-Expose-Headers'] = 'token'
        return resp
    elif token is not None:
        return '{"error":"not authorized"}', 403
    else:
        return '{"error":"token error"}', 403
示例#8
0
def get_topten_heaviest_users():
    token = token_validator(request.headers['token'])
    if token is not None and g.user.auth == AuthLeval.ADMIN:
        try:
            status = get_heavy_users()
            if not isinstance(status, str):
                resp = Response(response=json.dumps(status), status=200)
            else:
                resp = Response('{"error":"' + status + '"}', status=400)
        except Exception as e:
            resp = Response(response='{"error":"' + str(e) + '"}', status=400)
        resp.headers['token'] = token
        resp.headers['Access-Control-Expose-Headers'] = 'token'
        return resp
    elif token is not None:
        return '{"error":"not authorized"}', 403
    else:
        return '{"error":"token error"}', 403
示例#9
0
def update_user_request(username):
    token = token_validator(request.headers['token'])
    if token is not None and g.user.auth == AuthLeval.ADMIN:
        data = request.get_json(force=True)
        try:
            newUser = User(data['user_name'], data['password'],
                           int(data['auth']), data['email'])
            status = update_user(newUser, username)
            resp = Response(response='{"status":"' + status + '"}',
                            status=(200 if status == "success" else 400))
        except Exception as e:
            resp = Response(response='{"error":"' + str(e) + '"}', status=400)
        resp.headers['token'] = token
        resp.headers['Access-Control-Expose-Headers'] = 'token'
        return resp
    elif token is not None:
        return '{"error":"not authorized"}', 403
    else:
        return '{"error":"token error"}', 403
示例#10
0
def get_download(id):
    token = token_validator(request.headers['token'])
    if token is not None:
        try:
            status = get_download_path(int(id))
            if status is not None and status != "db connection error":
                if verbose:
                    print(status)
                return send_file(status,
                                 as_attachment=True,
                                 mimetype='multipart/form-data')
            else:
                return '{"error":"file not found"}', 404
        except Exception as e:
            resp = Response(response="{'error':'" + str(e) + "'}", status=400)
            return resp
    elif token is not None:
        return '{"error":"not authorized"}', 403
    else:
        return '{"error":"token error"}', 403
示例#11
0
def add_download_request():
    token = token_validator(request.headers['token'])
    if token is not None:
        data = request.get_json(force=True)
        try:
            if check_if_bandwidth_exceeded(g.user.userName):
                resp = Response(response='{"quota":"exceeded"}', status=400)
            else:
                newDownload = Download(data['link'], g.user.userName)
                status = add_download(newDownload)
                resp = Response(response='{"status":"' + status + '"}',
                                status=200 if status == "success" else 400)
        except Exception as e:
            resp = Response(response='{"error":"' + str(e) + '"}', status=400)
        resp.headers['token'] = token
        resp.headers['Access-Control-Expose-Headers'] = 'token'
        return resp
    elif token is not None:
        return '{"error":"not authorized"}', 403
    else:
        return '{"error":"token error"}', 403