def _download_proxy(self, webmacro, setting, server): api = WebInspectApi(server, verify_ssl=False, username=self.username, password=self.password) if webmacro: response = api.download_proxy_webmacro(self.proxy_name) extension = 'webmacro' elif setting: response = api.download_proxy_setting(self.proxy_name) extension = 'xml' else: Logger.app.error("Please enter a file type to download.") sys.exit(ExitStatus.failure) APIHelper().check_for_response_errors(response) try: with open('{0}-proxy.{1}'.format(self.proxy_name, extension), 'wb') as f: Logger.app.info( 'Scan results file is available: {0}-proxy.{1}'.format( self.proxy_name, extension)) f.write(response.data) except UnboundLocalError as e: Logger.app.error('Error saving file locally {}'.format(e)) sys.exit(ExitStatus.failure)
def _verify_proxy_server(self, server): api = WebInspectApi(server, verify_ssl=False, username=self.username, password=self.password) response = api.get_proxy_information(self.proxy_name) APIHelper().check_for_response_errors(response) return response.data
def _list_proxy(self, server): if self.proxy_name is None: self._generate_random_proxy_name() api = WebInspectApi(server, verify_ssl=False, username=self.username, password=self.password) response = api.list_proxies() APIHelper().check_for_response_errors(response) return response.data
def _delete_proxy(self, server): api = WebInspectApi(server, verify_ssl=False, username=self.username, password=self.password) response = api.delete_proxy(self.proxy_name) APIHelper().check_for_response_errors(response) Logger.app.info("Proxy: '{0}' deleted from '{1}'".format( self.proxy_name, server))
def _list_scans_by_app(self, app_id): api = self.helper.api response = api.list_scans(app_id) APIHelper().check_for_response_errors(response) master_data = response.data for scan in master_data: response = api.get_scan_details(scan['id']) if response.success: if len(response.data['originalFileNames']): scan['filename'] = response.data['originalFileNames'][-1] else: scan['filename'] = 'None' else: scan['filename'] = 'Error' return master_data
def _upload_proxy(self, upload_file, server): try: api = WebInspectApi(server, verify_ssl=False, username=self.username, password=self.password) response = api.upload_webmacro_proxy(self.proxy_name, upload_file) APIHelper().check_for_response_errors(response) Logger.app.info("Uploaded '{0}' to '{1}' on: {2}.".format( upload_file, self.proxy_name, server)) except (ValueError, UnboundLocalError) as e: Logger.app.error("Error uploading policy {}".format(e)) sys.exit(ExitStatus.failure)
def _get_proxy_certificate(self, server): path = Config().cert api = WebInspectApi(server, verify_ssl=False, username=self.username, password=self.password) response = api.cert_proxy() APIHelper().check_for_response_errors(response) try: with open(path, 'wb') as f: f.write(response.data) Logger.app.info( 'Certificate has downloaded to\t:\t{}'.format(path)) except UnboundLocalError as e: Logger.app.error('Error saving certificate locally {}'.format(e))
def wiswag(self, url): if self.wiswag_name is None: self._generate_random_wiswag_name() self.api.create_wiswag(url, self.wiswag_name) # go through the settings list 3 times (~15 secs before timeout) for i in range(3): response = self.api.list_settings() APIHelper().check_for_response_errors(response) if response.data is not None: for settingListName in response.data: if settingListName == self.wiswag_name: Logger.app.info("Found wiswag_name: {}".format(self.wiswag_name)) self._download_wiswag(self.wiswag_name) sys.exit(ExitStatus.success) else: Logger.app.info("Fail to find wiswag_name {}. Retrying".format(self.wiswag_name)) sleep(5) Logger.app.error("Timeout error: Can not find wiswag_name {}".format(self.wiswag_name))
def _upload_scan(self, app_id, file_name): response = self.helper.api.upload_scan(app_id, file_name) APIHelper().check_for_response_errors(response) return response.data
def _create_application(self, team_id, name, url): response = self.helper.api.create_application(team_id, name, url) APIHelper().check_for_response_errors(response) return response.data
def list_apps_by_team(self, team_id): response = self.api.get_applications_by_team(team_id) APIHelper().check_for_response_errors(response) return response.data
def get_team_list(self): response = self.api.list_teams() APIHelper().check_for_response_errors(response) return response.data