예제 #1
0
 def list_versions(self):
     api = FortifyApi(self.ssc_server, token=self.token, verify_ssl=False)
     response = api.get_project_versions()
     if response.success:
         Logger.console.info("{0:^5} {1:30}".format('ID', 'Name'))
         Logger.console.info("{0:5} {1:30}".format('-' * 5, '-' * 30))
         for version in response.data['data']:
             Logger.console.info("{0:^5} {1:30}".format(
                 version['id'], version['name']))
     elif not response.success and "401" in response.message:
         return response.response_code
     return None
예제 #2
0
    def __get_project_version__(self):
        """
        If a project version already exists, return it's project_version_id
        If a project version does NOT exist, create it and return it's project_version_id
        If none of the above succeeds, log the reason(s) and return None
        :return:
        """
        api = FortifyApi(self.ssc_server, token=self.token, verify_ssl=False)
        try:
            response = api.get_project_versions(
            )  # api should support a search expression here. alas...
            if response.success:
                for project_version in response.data['data']:
                    if project_version['project'][
                            'name'] == self.application_name:
                        if project_version['name'] == self.fortify_version:
                            # we have a matching project version
                            Logger.app.debug(
                                "Found existing project version {0}".format(
                                    project_version['id']))
                            return project_version['id']
                # Didn't find a matching project version, verify that our project exists
                for project_version in response.data['data']:
                    if project_version['project'][
                            'name'] == self.application_name:
                        # Our project exsits, so create a new version
                        return self.__create_project_version__()
                # Let upload_scan know that our project doesn't exist
                return -2
            elif "401" in response.message:
                # Avoid printing error for invalid token. Return -1 to reauth
                return -1
            else:
                Logger.app.critical(
                    "Failed to get project version. {0}".format(
                        response.message))
        except Exception as e:
            Logger.app.critical(
                "Exception trying to get project version. {0}".format(
                    e.message))

        return None