def create_selenium_auth_record(self, name, script, regex): """ Create selenium auth record """ response = self._request( "/qps/rest/3.0/create/was/webappauthrecord", json={ "ServiceRequest": { "data": { "WebAppAuthRecord": { "name": name, "formRecord": { "type": "SELENIUM", "seleniumScript": { "name": "seleniumScriptOK", "data": script, "regex": regex } } } } } }, validator=lambda r: r.ok and \ dot(r.json()).ServiceResponse.responseCode == "SUCCESS" ) obj = dot(response.json()) return obj.ServiceResponse.data[0].WebAppAuthRecord.id
def create_report(self, name, webapp_id, report_template): """ Create report """ response = self._request( "/qps/rest/3.0/create/was/report", json={ "ServiceRequest": { "data": { "Report": { "name": name, "description": "Report generated by API with Dusty", "format": "XML", "type": "WAS_SCAN_REPORT", "config": { "webAppReport": { "target": { "webapps": { "WebApp": [{ "id": webapp_id }] } } } }, "template": {"id": int(report_template)} } } } }, validator=lambda r: r.ok and \ dot(r.json()).ServiceResponse.responseCode == "SUCCESS" ) obj = dot(response.json()) return obj.ServiceResponse.data[0].Report.id
def start_scan(self, name, webapp_id, option_profile, scanner_appliance, auth_record): """ Start scan """ response = self._request( "/qps/rest/3.0/launch/was/wasscan/", json={ "ServiceRequest": { "data": { "WasScan": { "name": name, "type": "VULNERABILITY", "target": { "webApp": {"id": webapp_id}, "webAppAuthRecord": auth_record, "scannerAppliance": scanner_appliance }, "profile": {"id": int(option_profile)}, "sendMail": False } } } }, validator=lambda r: r.ok and \ dot(r.json()).ServiceResponse.responseCode == "SUCCESS" ) obj = dot(response.json()) return obj.ServiceResponse.data[0].WasScan.id
def add_auth_record_to_webapp(self, webapp_id, webapp_name, auth_record_id): """ Add auth record to WebApp """ response = self._request( f"/qps/rest/3.0/update/was/webapp/{webapp_id}", json={ "ServiceRequest": { "data": { "WebApp": { "name": webapp_name, "authRecords": { "add": { "WebAppAuthRecord": [{ "id": auth_record_id }] } } } } } }, validator=lambda r: r.ok and dot(r.json() ).ServiceResponse.responseCode) obj = dot(response.json()) return obj.ServiceResponse.responseCode == "SUCCESS"
def count_scans_in_webapp(self, webapp_id): """ Count submitted/running scans in WebApp """ response = self._request( "/qps/rest/3.0/count/was/wasscan", json={ "ServiceRequest": { "filters": { "Criteria": [{ "field": "webApp.id", "operator": "EQUALS", "value": webapp_id }, { "field": "status", "operator": "IN", "value": "SUBMITTED,RUNNING" }] } } }, validator=lambda r: r.ok and \ dot(r.json()).ServiceResponse.responseCode == "SUCCESS" ) obj = dot(response.json()) try: return obj.ServiceResponse.count except: # pylint: disable=W0702 return 0 # On error - allow to try to delete stale project
def get_version(self): """ Get WAS version """ response = self._request( "/qps/rest/portal/version", validator=lambda r: r.ok and \ dot(r.json()).ServiceResponse.responseCode == "SUCCESS" ) obj = dot(response.json()) return obj.ServiceResponse.data[0]["Portal-Version"]["WAS-VERSION"]
def get_report_status(self, report_id): """ Get scan status """ response = self._request( f"/qps/rest/3.0/status/was/report/{report_id}", validator=lambda r: r.ok and \ dot(r.json()).ServiceResponse.responseCode == "SUCCESS" ) obj = dot(response.json()) return obj.ServiceResponse.data[0].Report.status
def delete_asset(self, asset_type, asset_id): """ Delete asset """ response = self._request( f"/qps/rest/3.0/delete/was/{asset_type}/{asset_id}", json={}, validator=lambda r: r.ok and dot(r.json() ).ServiceResponse.responseCode) obj = dot(response.json()) return obj.ServiceResponse.responseCode == "SUCCESS"
def create_webapp(self, name, application_url, option_profile, excludes=None): """ Create WebApp record """ if excludes is None: payload = { "ServiceRequest": { "data": { "WebApp": { "name": name, "url": application_url, "defaultProfile": { "id": int(option_profile) } } } } } else: payload = { "ServiceRequest": { "data": { "WebApp": { "name": name, "url": application_url, "defaultProfile": { "id": int(option_profile) }, "urlBlacklist": { "set": { "UrlEntry": [{ "value": item, "regex": "true" } for item in excludes] } }, "postDataBlacklist": { "set": { "UrlEntry": [{ "value": item, "regex": "true" } for item in excludes] } } } } } } response = self._request( "/qps/rest/3.0/create/was/webapp", json=payload, validator=lambda r: r.ok and \ dot(r.json()).ServiceResponse.responseCode == "SUCCESS" ) obj = dot(response.json()) return obj.ServiceResponse.data[0].WebApp.id
def get_scan_results_status(self, scan_id): """ Get scan status """ response = self._request( f"/qps/rest/3.0/status/was/wasscan/{scan_id}", validator=lambda r: r.ok and \ dot(r.json()).ServiceResponse.responseCode == "SUCCESS" ) obj = dot(response.json()) try: return obj.ServiceResponse.data[0].WasScan.summary.resultsStatus except: # pylint: disable=W0702 return "UNKNOWN"
def pytest_load_initial_conftests(early_config, parser, args): # TODO: どうにかしたい dir = '' for arg in args: m = re.match(r'--terraform-dir=(.*)', arg) if m: dir = m.groups()[0] # --terraform-dir で指定されたディレクトリから *.tf を取得 tf_files = glob.glob('{terraform_dir}/*.tf'.format(terraform_dir=dir)) # --terraform-dir で指定されたディレクトリから resource "hogehoge" "fugafuga" {} の定義を取り出す resources = defaultdict(lambda: []) for tf_file in tf_files: # hcl で記述されている .tf を開く with open(tf_file, 'r') as f: obj = dot(hcl.load(f)) # resource セクションのみ処理 if 'resource' in list(obj.keys()): terraform_resource = obj.resource for resource_key, resource in terraform_resource.items(): for name, param in resource.items(): resources[resource_key].append(name) for resource, names in resources.items(): print(resource, names) for name in names: inject_terraform_fixture(resource, name) inject_terraform_class(resource, names)
def get_graphql_params(request, data): query = request.GET.get('query') or data.get('query') if query is None: raise Error('Must provide query string.') variables = request.GET.get('variables') or data.get('variables') if variables is not None and isinstance(variables, six.text_type): try: variables = json.loads(variables) except ValueError: raise Error('Variables are invalid JSON.') operation_name = (request.GET.get('operationName') or data.get('operationName')) variables = dot(variables) for key, value in request.POST.items(): # support for apollo-upload-client if key.startswith('variables.'): # variables.my.img => { my: { img: 'variables.my.img' }} # variables.my.0.img => { my: [{ img: 'variables.my.0.img' }]} rest = key[10:] variables[rest] = key return query, variables.to_python() if variables else None, operation_name
def test_provider_fetch_data_monsters(self): """ Test to load Monsters from MobileRagnarokProvider REST API :return: """ result = PROVIDER.fetch_data(PROVIDER.get_categories().get('monsters')) items = dot(result.json()).result.items logger.info(items) self.assertTrue(items)
def search_for_webapp(self, webapp_name): """ Search for existing WebApp and get ID """ response = self._request( "/qps/rest/3.0/search/was/webapp", json={ "ServiceRequest": { "filters": { "Criteria": [{ "field": "name", "operator": "EQUALS", "value": webapp_name }] } } }, validator=lambda r: r.ok and \ dot(r.json()).ServiceResponse.responseCode == "SUCCESS" ) obj = dot(response.json()) if obj.ServiceResponse.count == 0: return None return obj.ServiceResponse.data[0].WebApp.id
dotted_dict = DottedDict({'hello': {'world': {'python': '3'}}}) print(dotted_dict['hello']) print(dotted_dict['hello.world']) print(dotted_dict['hello.world.python']) print(dotted_dict.hello) print(dotted_dict.hello.world) print(dotted_dict.hello.world.python) dotted_dict2 = DottedCollection.factory( {'hello': [{ 'world': { 'python': ['3', '7', '3'] } }]}) print(dotted_dict2['hello'][0]['world']['python'][0]) print(dotted_dict2.hello[0].world.python[0]) print(dotted_dict2.hello[0].world['python'][0]) print(dotted_dict2.hello[0].world['python.0']) print(dotted_dict2.hello['0.world'].python[0]) print(dotted_dict2['hello.0.world.python.0']) dotted_dict2['c++.path'] = {'hello': 'world'} dotted_dict2['java.path'] = ['hello'] print(dotted_dict2) dot_obj = dot({'hello': 'world'}) print(dot_obj) dotted_json = dot_json('{"hello": "world"}') print(dotted_json)