diff --git a/README.md b/README.md index c4da6ae..0594807 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,7 @@ Once MetaDefender Core has been installed and activated with your license, the f * **base_url**: The URL(s) of the MetaDefender deployment(s) * If you have a **single** MetaDefender Core deployment, set the service variable to **str** type and enter the URL of your MetaDefender Core deployment * If you have **multiple** MetaDefender Core deployments, set the service variable to **list** type and enter the URLs of your MetaDefender Core deployments separated by a comma +* **verify_certificate**: Setting to False will ignore verifying the SSL certificate * **md_version**: Version of MetaDefender you're connecting to (3 or 4) * **md_timeout**: Maximum amount of time to wait while connecting to the MetaDefender server * **max_md_scan_time**: Maximum amount of time to wait for scan results before the MetaDefender server is put on a brief timeout (only applicable when multiple MetaDefender deployments are used) diff --git a/metadefender.py b/metadefender.py index 77ed5f0..aa4a590 100644 --- a/metadefender.py +++ b/metadefender.py @@ -73,6 +73,7 @@ def __init__(self, config: Optional[Dict[str, Any]] = None) -> None: self.kw_score_revision_map: Optional[Dict[str, int]] = None self.sig_score_revision_map: Optional[Dict[str, Any]] = None self.safelist_match: List[str] = [] + self.verify = self.config.get("verify_certificate", True) api_key = self.config.get("api_key") if api_key: self.headers = {"apikey": api_key} @@ -173,7 +174,7 @@ def _get_version_map(self, node: str) -> None: try: self.log.debug(f"_get_version_map: GET {url}") - r = self.session.get(url=url, timeout=self.timeout) + r = self.session.get(url=url, timeout=self.timeout, verify=self.verify) engines = r.json() for engine in engines: @@ -268,7 +269,7 @@ def get_scan_results_by_data_id(self, data_id: str) -> Response: try: self.log.debug(f"get_scan_results_by_data_id: GET {url}") - return self.session.get(url=url, headers=self.headers, timeout=self.timeout) + return self.session.get(url=url, headers=self.headers, timeout=self.timeout, verify=self.verify) except exceptions.Timeout: self.new_node(force=True, reset_queue=True) raise Exception(f"Node ({self.current_node}) timed out after {self.timeout}s " @@ -332,7 +333,7 @@ def scan_file(self, filename: str) -> Dict[str, Any]: try: self.log.debug(f"scan_file: POST {url}") - r = self.session.post(url=url, data=data, headers=self.headers, timeout=self.timeout) + r = self.session.post(url=url, data=data, headers=self.headers, timeout=self.timeout, verify=self.verify) except exceptions.Timeout: self.new_node(force=True, reset_queue=True) raise Exception(f"Node ({self.current_node}) timed out after {self.timeout}s " diff --git a/service_manifest.yml b/service_manifest.yml index f0c119c..4929a26 100644 --- a/service_manifest.yml +++ b/service_manifest.yml @@ -20,6 +20,7 @@ licence_count: 0 config: api_key: "" base_url: 'http://localhost:8008/' + verify_certificate: true md_version: 4 md_timeout: 40 min_node_time: 60