Source
import os
import demistomock as demisto
import requests
import urllib3
from CommonServerPython import *
urllib3.disable_warnings()
def get_response(url: str, use_head: str, verify_ssl: bool) -> requests.Response:
if use_head == "true":
response = requests.head(url, allow_redirects=True, verify=verify_ssl)
else:
response = requests.get(url, allow_redirects=True, verify=verify_ssl)
return response
def create_command_result(history_urls: List[Dict[str, Union[str, int]]]):
ec = {"URL(val.Data == obj.Data)": [{"Data": history_url["Data"]} for history_url in history_urls]}
return {
"ContentsFormat": formats["json"],
"Type": entryTypes["note"],
"Contents": history_urls,
"ReadableContentsFormat": formats["markdown"],
"HumanReadable": tableToMarkdown("URLs", history_urls, ["Data", "Status"]),
"EntryContext": ec,
}
def get_response_history(response: requests.Response):
urls = []
if response.history:
for resp in response.history:
urls.append({"Data": resp.url, "Status": resp.status_code})
urls.append({"Data": response.url, "Status": response.status_code})
return urls
def delete_environment_variables(use_system_proxy: str):
if use_system_proxy == "false":
env_variables = ["HTTP_PROXY", "HTTPS_PROXY", "http_proxy", "https_proxy"]
for env_var in env_variables:
if env_var in os.environ:
del os.environ[env_var]
def main():
url = demisto.args().get("url")
try:
delete_environment_variables(use_system_proxy=demisto.args().get("use_system_proxy").lower())
url = f"http://{url}" if not url.lower().startswith("http") else url
response = get_response(
url=url,
use_head=demisto.args()["useHead"],
verify_ssl=demisto.args().get("trust_any_certificate", "true").lower() != "true",
)
history_urls = get_response_history(response=response)
demisto.results(create_command_result(history_urls=history_urls))
except Exception as e:
return_error(f"Failed to execute script. Error:\n{e!s}")
if __name__ in ("__builtin__", "builtins", "__main__"):
main()