예제 #1
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_all_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
예제 #2
0
 def application_version_list(self):
     api = FortifyApi(host=self.host, token=self.token, verify_ssl=False)
     response = api.get_all_project_versions()
     data = response.data['data']
     for version in data:
         print("{},{},{}".format(version['id'], version['project']['name'],
                                 version['name']).encode(
                                     'utf-8', errors='ignore').decode())
예제 #3
0
    def find_version_id(self, version_name):
        api = FortifyApi(self.ssc_server, token=self.token, verify_ssl=False)
        response = api.get_all_project_versions()
        if response.success:
            for version in response.data['data']:
                if version['project']['name'] == self.application_name:
                    if version['name'] == version_name:
                        return version['id']

        return False
예제 #4
0
 def list_application_versions(self, application):
     api = FortifyApi(self.ssc_server, token=self.token, verify_ssl=False)
     response = api.get_all_project_versions()
     if response.success:
         Logger.console.info("{0:^8} {1:30} {2:30}".format('ID', 'Application', 'Version'))
         Logger.console.info("{0:8} {1:30} {2:30}".format('-' * 8, '-' * 30, '-' * 30))
         for version in response.data['data']:
             if version['project']['name'] == application:
                 Logger.console.info(
                     "{0:8} {1:30} {2:30}".format(version['id'], version['project']['name'], version['name']))
     elif not response.success and "401" in response.message:
         return response.response_code
     return None
예제 #5
0
 def get_application_and_versions(self):
     api = FortifyApi(host=self.host, token=self.token, verify_ssl=False)
     response = api.get_all_project_versions()
     return response.data['data']