import requests import os import time from requests.packages.urllib3.exceptions import InsecureRequestWarning requests.packages.urllib3.disable_warnings(InsecureRequestWarning) # insecure warn disable domains = os.getenv("TARGET_DOMAINS", "").split(',') domains = [d.strip() for d in domains if d.strip()] protocol = os.getenv("TARGET_PROTOCOL", "https://") verify_domain = bool(os.getenv("TARGET_SSL_VERIFY", "True")) token = os.getenv("BOT_TOKEN", "") chatid = int(os.getenv("BOT_CHATID", "")) if not domains or not token or not chatid: print("Error: Plese set domains, tg token, and tg chat id") exit(1) print(domains) timeout_domains = [] def CheckDomain(domain): try: r = requests.get(f"{protocol}{domain}", verify=verify_domain) # verify SSL crt disable code = int(r.status_code) return code except requests.exceptions.ConnectionError: return 1 except: return 0 def SendAlert(msg): response = requests.post( url='https://api.telegram.org/bot{0}/sendMessage'.format(token), data={'chat_id': chatid, 'text': msg} ).json() def master(): while True: for domain in timeout_domains: resp = CheckDomain(domain) print(domain, resp) if resp == 200: timeout_domains.remove(domain) domains.append(domain) SendAlert(f'✅ RESOLVED ✅\n🔹Domain is avability\n🔹Domain: {domain}') for domain in domains: resp = CheckDomain(domain) print(domain, resp) if resp != 200: timeout_domains.append(domain) domains.remove(domain) if resp == 1: SendAlert(f'⚠️ ALARM! ⚠️\n🔹Response: no route to host\n🔹Domain: {domain}') elif resp == 0: SendAlert(f'⚠️ ALARM! ⚠️\n🔹Response: other connect error\n🔹Domain: {domain}') else: SendAlert(f'⚠️ ALARM! ⚠️\n🔹Response: {resp}\n🔹Domain: {domain}') time.sleep(20) if __name__ == "__main__": master()