Example #1
0
    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)
Example #2
0
    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
Example #3
0
    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
Example #4
0
    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))
Example #5
0
 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
Example #6
0
    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)
Example #7
0
    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))
Example #8
0
    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))
Example #9
0
 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
Example #10
0
 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
Example #11
0
 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
Example #12
0
 def get_team_list(self):
     response = self.api.list_teams()
     APIHelper().check_for_response_errors(response)
     return response.data