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
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)
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)
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)
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
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
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
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
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
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
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