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)
Пример #2
0
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
Пример #3
0
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
Пример #4
0
    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)
Пример #5
0
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
Пример #6
0
    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)
Пример #7
0
 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()
Пример #8
0
    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})
Пример #9
0
    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
Пример #10
0
    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
Пример #11
0
    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)
Пример #12
0
    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})
Пример #13
0
    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