def run_script(self): # Request script content first content, err = get_script_content(self.response, "name") if err: return err script_name = content.get('name') caller_did, caller_app_did = did_auth() target_did, target_app_did = caller_did, caller_app_did # Request the Target DID and Target App Validation if present context = content.get('context', {}) if context: target_did = context.get('target_did', None) target_app_did = context.get('target_app_did', None) if not target_did: logging.debug( f"Error while executing script named '{script_name}': target_did not set" ) return self.response.response_err(BAD_REQUEST, "target_did not set") if not target_app_did: logging.debug( f"Error while executing script named '{script_name}': target_app_did not set" ) return self.response.response_err(BAD_REQUEST, "target_app_did not set") params = content.get('params', None) data = self.__run_script(script_name, caller_did, caller_app_did, target_did, target_app_did, params) return self.response.response_ok(data)
def did_get_param_pre_proc(response, *args, access_vault=None, access_backup=None): did, app_id = did_auth() if did is None: return did, None, response.response_err(UNAUTHORIZED, "auth failed") if access_vault: r, msg = can_access_vault(did, access_vault) if r != SUCCESS: return did, app_id, None, response.response_err(r, msg) if access_backup: r, msg = can_access_backup(did) if r != SUCCESS: return did, None, response.response_err(r, msg) content = dict() for arg in args: data = request.args.get(arg, None) if data is None: return did, app_id, None, response.response_err( BAD_REQUEST, "parameter " + arg + " is null") else: content[arg] = data return did, content, None
def did_post_json_param_pre_proc(response, *args, access_vault=None, access_backup=None): did, app_id = did_auth() if did is None: return did, None, response.response_err(UNAUTHORIZED, "auth failed") content = request.get_json(force=True, silent=True) if content is None: return did, None, response.response_err( BAD_REQUEST, "parameter is not application/json") if access_vault: r, msg = can_access_vault(did, access_vault) if r != SUCCESS: return did, app_id, None, response.response_err(r, msg) if access_backup: r, msg = can_access_backup(did) if r != SUCCESS: return did, None, response.response_err(r, msg) for arg in args: data = content.get(arg, None) if data is None: return did, None, response.response_err( BAD_REQUEST, "parameter " + arg + " is null") return did, content, None
def run_script_url(self, target_did, target_app_did, script_name, params): # Get caller info caller_did, caller_app_did = did_auth() data = self.__run_script(script_name, caller_did, caller_app_did, target_did, target_app_did, params) return self.response.response_ok(data)
def pre_proc(response, access_vault=None): did, app_id = did_auth() if (did is None) or (app_id is None): return did, app_id, response.response_err(UNAUTHORIZED, "auth failed") if access_vault: r, msg = can_access_vault(did, access_vault) if r != SUCCESS: return did, app_id, response.response_err(r, msg) return did, app_id, None
def get_sync_state(self): did, app_id = did_auth() if (did is None) or (app_id is None): return self.response.response_err(UNAUTHORIZED, "auth failed") info = get_vault_backup_info(did) if info: data = {"hive_backup_state": info[VAULT_BACKUP_INFO_STATE]} else: data = {"hive_backup_state": VAULT_BACKUP_STATE_STOP} return self.response.response_ok(data)
def inter_backup_ftp_end(self): did, app_id = did_auth() if not did: return self.response.response_err( UNAUTHORIZED, "Backup internal backup_communication_end auth failed") user, passwd = get_vault_backup_ftp_record(did) if not user: return self.response.response_err( BAD_REQUEST, "There is not backup process for " + did) if self.mode != HIVE_MODE_TEST: self.backup_ftp.remove_user(user) remove_vault_backup_ftp_record(did) return self.response.response_ok()
def list_files(self): did, app_id = did_auth() if (did is None) or (app_id is None): return self.response.response_err(UNAUTHORIZED, "auth failed") r, msg = can_access_vault(did, VAULT_ACCESS_R) if r != SUCCESS: return self.response.response_err(r, msg) docs, resp_err = v2_wrapper(self.ipfs_files.list_folder_with_path)(did, app_id, request.args.get('path')) if resp_err: return resp_err file_info_list = list(map(lambda d: HiveFile.get_info_by_metadata(d), docs)) return self.response.response_ok({"file_info_list": file_info_list})
def download_file(self): resp = Response() did, app_id = did_auth() if (did is None) or (app_id is None): resp.status_code = UNAUTHORIZED return resp r, msg = can_access_vault(did, VAULT_ACCESS_R) if r != SUCCESS: resp.status_code = r return resp data, resp_err = v2_wrapper(self.ipfs_files.download_file_with_path)(did, app_id, request.args.get('path')) if resp_err: return resp_err return data
def download_file(self): resp = Response() did, app_id = did_auth() if (did is None) or (app_id is None): resp.status_code = UNAUTHORIZED return resp r, msg = can_access_vault(did, VAULT_ACCESS_R) if not r: resp.status_code = FORBIDDEN return resp file_name = request.args.get('path') data, status_code = query_download(did, app_id, file_name) if status_code != SUCCESS: resp.status_code = status_code return resp return data
def get_sync_state(self): did, app_id = did_auth() if (did is None) or (app_id is None): return self.response.response_err(UNAUTHORIZED, "auth failed") info = get_vault_backup_info(did) if info: if VAULT_BACKUP_INFO_MSG not in info: result = VAULT_BACKUP_MSG_SUCCESS else: result = info[VAULT_BACKUP_INFO_MSG] data = { "hive_backup_state": info[VAULT_BACKUP_INFO_STATE], "result": result } else: data = { "hive_backup_state": VAULT_BACKUP_STATE_STOP, "result": VAULT_BACKUP_MSG_SUCCESS } return self.response.response_ok(data)
def list_files(self): did, app_id = did_auth() if (did is None) or (app_id is None): return self.response.response_err(UNAUTHORIZED, "auth failed") r, msg = can_access_vault(did, VAULT_ACCESS_R) if not r: return self.response.response_err(BAD_REQUEST, msg) path = get_save_files_path(did, app_id) name = request.args.get('path') if name is None: full_path_name = path else: name = filter_path_root(name) full_path_name = (path / name).resolve() if not (full_path_name.exists() and full_path_name.is_dir()): return self.response.response_err(NOT_FOUND, "folder not exists") try: files = os.listdir(full_path_name.as_posix()) except Exception as e: return self.response.response_ok({"files": []}) file_info_list = list() for file in files: full_file = full_path_name / file stat_info = full_file.stat() file_info = { "type": "file" if full_file.is_file() else "folder", "name": file, "size": stat_info.st_size, "last_modify": stat_info.st_mtime, } file_info_list.append(file_info) return self.response.response_ok({"file_info_list": file_info_list})
def __get_backup_file_check(self, resp): did, app_id = did_auth() if did is None: resp.status_code = UNAUTHORIZED return resp, None r, msg = can_access_backup(did) if r != SUCCESS: resp.status_code = r return resp, None file_name = request.args.get('file') file_name = filter_path_root(file_name) backup_path = get_vault_backup_path(did) file_full_name = (backup_path / file_name).resolve() if not file_full_name.exists(): resp.status_code = NOT_FOUND return resp, None if not file_full_name.is_file(): resp.status_code = FORBIDDEN return resp, None return resp, file_full_name