コード例 #1
0
    def _get_pages(self, verb, route, params, model):
        """ Get one or more pages for a method using api v3 pagination """
        response_list = []

        if params is None:
            params = {}
            params['per_page'] = 100

        if 'per_page' not in params:
            params['per_page'] = 100

        if 'page' in params:
            response = self._request(verb, route, params)
            if response.status_code != 200:
                logging.error("Error::{}".format(response.text))
                return None
            return CBWParser().parse_response(model, response)

        response = self._request(verb, route, params)

        if response.status_code != 200:
            logging.error("Error::{}".format(response.text))
            return None

        response_list.extend(CBWParser().parse_response(model, response))

        while 'next' in response.links:
            next_url = urlparse(response.links['next']['url'])
            params['page'] = parse_qs(next_url.query)['page'][0]
            response = self._request(verb, route, params)
            response_list.extend(CBWParser().parse_response(model, response))
        return response_list
コード例 #2
0
    def create_remote_access(self, info):
        """"POST request to /api/v3/remote_accesses to create a specific remote access"""
        if info:
            response = self._request(
                "POST", [ROUTE_REMOTE_ACCESSES], {
                    "type": info["type"],
                    "address": info["address"],
                    "port": info["port"],
                    "login": info["login"],
                    "password": info.get("auth_password")
                    or info.get("password"),
                    "key": info.get("priv_password") or info.get("key"),
                    "node_id": info["node_id"],
                    "server_groups": info.get("server_groups", "")
                })
            logging.debug("Create connexion remote access::{}".format(
                response.text))

        if self.verif_response(response):
            logging.info('remote access successfully created {}'.format(
                info["address"]))
            return CBWParser().parse_response(CBWRemoteAccess, response)

        logging.error("Error create connection remote access")
        return False
コード例 #3
0
 def agent(self, agent_id):
     """GET request to /api/v3/agents/{agent_id} to get all informations
     about a specific agent"""
     response = self._request("GET", [ROUTE_AGENTS, agent_id])
     if response.status_code != 200:
         logging.error("Error agent id::{}".format(response.text))
         return None
     return CBWParser().parse_response(CBWAgent, response)
コード例 #4
0
    def fetch_importer_script(self, script_id):
        """GET request to /api/v2/cbw_scans/scripts/{SCRIPT_ID} to get a specific Importer scanning script"""
        response = self._request("GET", [ROUTE_IMPORTER, script_id])
        if response.status_code != 200:
            logging.error("Error::{}".format(response.text))
            return None

        return CBWParser().parse_response(CBWImporter, response)
コード例 #5
0
    def create_group(self, params):
        """POST request to /api/v3/groups to create a group"""
        response = self._request("POST", [ROUTE_GROUPS], params)
        if response.status_code != 201:
            logging.error("Error::{}".format(response.text))
            return None

        return CBWParser().parse_response(CBWGroup, response)
コード例 #6
0
    def delete_host(self, host_id):
        """DELETE request to /api/v3/hosts/<host_id> to delete a host"""
        response = self._request("DELETE", [ROUTE_HOSTS, host_id])
        if response.status_code != 200:
            logging.error("Error::{}".format(response.text))
            return None

        return CBWParser().parse_response(CBWHost, response)
コード例 #7
0
    def update_host(self, host_id, params=None):
        """PUT request to /api/v3/hosts/<host_id> to update a host"""
        response = self._request("PUT", [ROUTE_HOSTS, host_id], params)
        if response.status_code != 200:
            logging.error("Error::{}".format(response.text))
            return None

        return CBWParser().parse_response(CBWHost, response)
コード例 #8
0
    def node(self, node_id):
        """GET request to /api/v3/nodes/<node_id> to get a list of all nodes"""
        response = self._request("GET", [ROUTE_NODES, node_id])
        if response.status_code != 200:
            logging.error("Error::{}".format(response.text))
            return None

        return CBWParser().parse_response(CBWNode, response)
コード例 #9
0
    def host(self, host_id):
        """GET request to /api/v3/hosts/<host_id> to get a specific host"""
        response = self._request("GET", [ROUTE_HOSTS, host_id])
        if response.status_code != 200:
            logging.error("Error::{}".format(response.text))
            return None

        return CBWParser().parse_response(CBWHost, response)
コード例 #10
0
    def create_host(self, params):
        """POST request to /api/v3/hosts to create a host"""
        response = self._request("POST", [ROUTE_HOSTS], params)
        if response.status_code != 201:
            logging.error("Error::{}".format(response.text))
            return None

        return CBWParser().parse_response(CBWHost, response)
コード例 #11
0
 def test_deploy_remote_access(self, remote_access_id):
     """POST request to /api/v3/remote_accesses/:id/test_deploy to test an agentless deployment"""
     response = self._request(
         "PUT", [ROUTE_REMOTE_ACCESSES, remote_access_id, 'test_deploy'])
     if response.status_code != 200:
         logging.error("Error::{}".format(response.text))
         return None
     return CBWParser().parse_response(CBWRemoteAccess, response)
コード例 #12
0
    def delete_node(self, node_id, new_node_id):
        """DELETE request to /api/v3/nodes/<node_id> to delete a node and transfer the data to another one"""
        response = self._request("DELETE", [ROUTE_NODES, node_id], new_node_id)
        if response.status_code != 200:
            logging.error("Error::{}".format(response.text))
            return None

        return CBWParser().parse_response(CBWNode, response)
コード例 #13
0
    def update_group(self, group_id, params=None):
        """PUT request to /api/v3/groups/<group_id> to update a group"""
        response = self._request("PUT", [ROUTE_GROUPS, group_id], params)
        if response.status_code != 200:
            logging.error("Error::{}".format(response.text))
            return None

        return CBWParser().parse_response(CBWGroup, response)
コード例 #14
0
    def delete_group(self, group_id):
        """DELETE request to /api/v3/groups/<group_id> to delete a group"""
        response = self._request("DELETE", [ROUTE_GROUPS, group_id])
        if response.status_code != 200:
            logging.error("Error::{}".format(response.text))
            return None

        return CBWParser().parse_response(CBWGroup, response)
コード例 #15
0
    def create_security_issue(self, params=None):
        """POST request to /api/v3/security_issues to create a security_issue"""
        response = self._request("POST", [ROUTE_SECURITY_ISSUES], params)
        if response.status_code != 201:
            logging.error("Error::{}".format(response.text))
            return None

        return CBWParser().parse_response(CBWSecurityIssue, response)
コード例 #16
0
    def group(self, group_id):
        """GET request to /api/v3/groups/<group_id> to get a specific group"""
        response = self._request("GET", [ROUTE_GROUPS, group_id])
        if response.status_code != 200:
            logging.error("Error::{}".format(response.text))
            return None

        return CBWParser().parse_response(CBWGroup, response)
コード例 #17
0
    def fetch_importer_scripts(self, params=None):
        """GET request to /api/v2/cbw_scans/scripts to get a list of all Importer scanning scripts"""
        response = self._request("GET", [ROUTE_IMPORTER], params)
        if response.status_code != 200:
            logging.error("Error::{}".format(response.text))
            return None

        return CBWParser().parse_response(CBWImporter, response)
コード例 #18
0
    def server_schedule_updates(self, server_id, params=None):
        """POST request to /api/v3/server/<server_id>/updates to install fixes"""
        response = self._request("POST", [ROUTE_SERVERS, server_id, "updates"],
                                 params)
        if response.status_code != 200:
            logging.error("Error::{}".format(response.text))
            return None

        return CBWParser().parse_response(CBWServer, response)
コード例 #19
0
    def user(self, user_id):
        """GET request to /api/v3/users/<id> to get a specific user"""
        response = self._request("GET", [ROUTE_USERS, user_id])

        if response.status_code != 200:
            logging.error("Error::{}".format(response.text))
            return None

        return CBWParser().parse_response(CBWUsers, response)
コード例 #20
0
    def delete_cve_announcement(self, cve_code):
        """DELETE request to /api/v3/cve_announcements/{cve_code} to delete
         a cvss_custom/score_custom fields of a cve_announcement"""
        response = self._request("DELETE", [ROUTE_CVE_ANNOUNCEMENTS, cve_code])
        if response.status_code != 200:
            logging.error("Error server id::{}".format(response.text))
            return None

        return CBWParser().parse_response(CBWCve, response)
コード例 #21
0
    def cve_announcement(self, cve_code):
        """GET request to /api/v3/cve_announcements/{cve_code} to get all informations
        about a specific cve_announcement"""
        response = self._request("GET", [ROUTE_CVE_ANNOUNCEMENTS, cve_code])
        if response.status_code != 200:
            logging.error("Error server id::{}".format(response.text))
            return None

        return CBWParser().parse_response(CBWCve, response)
コード例 #22
0
    def server(self, server_id):
        """GET request to /api/v2/server/{server_id} to get all informations
        about a specific server"""
        response = self._request("GET", [ROUTE_SERVERS, server_id])
        if response.status_code != 200:
            logging.error("Error server id::{}".format(response.text))
            return None

        return CBWParser().parse_response(CBWServer, response)
コード例 #23
0
    def server_refresh(self, server_id):
        """PUT request to /api/v3/server/{server_id}/refresh to relaunch analysis
        script on a specific server"""
        response = self._request("PUT", [ROUTE_SERVERS, server_id, 'refresh'])
        if response.status_code != 200:
            logging.error("Error server id::{}".format(response.text))
            return None

        return CBWParser().parse_response(CBWServer, response)
コード例 #24
0
 def __init__(self,
              ignoring_policy_items=None,
              name="",
              **kwargs): # pylint: disable=unused-argument
     self.ignoring_policy_items = ([CBWParser().parse(CBWIgnoringPolicyItems,
                                                      ignoring_policy_item) for
                                    ignoring_policy_item in ignoring_policy_items] if
                                   ignoring_policy_items else [])
     self.name = name
コード例 #25
0
    def delete_security_issue(self, security_issue_id):
        """DELETE request to /api/v3/security_issues/<security_issue_id> to delete a security_issue"""
        response = self._request("DELETE",
                                 [ROUTE_SECURITY_ISSUES, security_issue_id])
        if response.status_code != 200:
            logging.error("Error::{}".format(response.text))
            return None

        return CBWParser().parse_response(CBWSecurityIssue, response)
コード例 #26
0
    def update_server_cve(self, server_id, cve_code, params=None):
        """PUT request to /api/v3/server/<server_id>/cve_announcements/<cve_code> to update a server cve"""
        response = self._request(
            "PUT", [ROUTE_SERVERS, server_id, "cve_announcements", cve_code],
            params)
        if response.status_code != 200:
            logging.error("Error::{}".format(response.text))
            return None

        return CBWParser().parse_response(CBWServer, response)
コード例 #27
0
    def update_cve_announcement(self, cve_code, params=None):
        """PUT request to /api/v3/cve_announcements/{cve_code} to update cvss_custom/score_custom informations
        about a specific cve_announcement"""
        response = self._request("PUT", [ROUTE_CVE_ANNOUNCEMENTS, cve_code],
                                 params)
        if response.status_code != 200:
            logging.error("Error server id::{}".format(response.text))
            return None

        return CBWParser().parse_response(CBWCve, response)
コード例 #28
0
    def update_security_issue(self, security_issue_id, params=None):
        """PUT request to /api/v3/security_issues/<security_issue_id> to update a security_issue"""
        response = self._request("PUT",
                                 [ROUTE_SECURITY_ISSUES, security_issue_id],
                                 params)
        if response.status_code != 200:
            logging.error("Error::{}".format(response.text))
            return None

        return CBWParser().parse_response(CBWSecurityIssue, response)
コード例 #29
0
    def remote_access(self, remote_access_id):
        """GET request to /api/v2/remote_accesses/{remote_access_id} to get all informations
        about a specific remote access"""
        response = self._request("GET",
                                 [ROUTE_REMOTE_ACCESSES, remote_access_id])

        if response.status_code != 200:
            logging.error("error remote_access_id::{}".format(response.text))
            return None

        return CBWParser().parse_response(CBWRemoteAccess, response)
コード例 #30
0
    def update_remote_access(self, remote_access_id, info):
        """PATCH request to /api/v3/remote_accesses/{remote_id} to update a remote access"""
        if remote_access_id and info:
            response = self._request("PATCH",
                                     [ROUTE_REMOTE_ACCESSES, remote_access_id],
                                     info)
            logging.debug("Update remote access::{}".format(response.text))
            return CBWParser().parse_response(CBWRemoteAccess, response)

        logging.error("Error update remote access")
        return False