From 827c90913a497230e27d6e50321e91e3a14c7119 Mon Sep 17 00:00:00 2001 From: Gentile G Date: Tue, 24 Oct 2023 17:41:16 +0200 Subject: [PATCH] Adding a detector to know if internet is down or not --- detector.py | 52 ++++++++++++++++++++++++++++++++++++++++++++ main.py => router.py | 0 2 files changed, 52 insertions(+) create mode 100644 detector.py rename main.py => router.py (100%) diff --git a/detector.py b/detector.py new file mode 100644 index 0000000..d2a7e43 --- /dev/null +++ b/detector.py @@ -0,0 +1,52 @@ +import requests +from requests.adapters import HTTPAdapter +from requests.packages.urllib3.util.ssl_ import create_urllib3_context + + +MODEM_ADDRESS = 'mabbox.bytel.fr' +ROUTER_ADDRESS = 'kynes.local:8000' + + +class SecLevel1Adapter(HTTPAdapter): + def init_poolmanager(self, *args, **kwargs): + context = create_urllib3_context(ciphers='DEFAULT@SECLEVEL=1') + kwargs['ssl_context'] = context + return super(SecLevel1Adapter, self).init_poolmanager(*args, **kwargs) + + def proxy_manager_for(self, *args, **kwargs): + context = create_urllib3_context(ciphers='DEFAULT@SECLEVEL=1') + kwargs['ssl_context'] = context + return super(SecLevel1Adapter, self).proxy_manager_for(*args, **kwargs) + + +class Fast5330bR1: + def __init__(self, address): + self.address = address + + def check_internet_status(self): + with requests.Session() as session: + session.mount(f"https://{self.address}", SecLevel1Adapter()) + r = session.get( + f"https://{self.address}/api/v1/summary", + proxies={"https": "socks5h://localhost:1337"} + ) + + result = r.json() + + return result[0]['internet']['state'] == 2 + + +eth_modem = Fast5330bR1(MODEM_ADDRESS) +eth_modem_is_up = eth_modem.check_internet_status() + +r = requests.get(f"http://{ROUTER_ADDRESS}/status") +router_status = r.json()['status'] + +new_router_status = None +if eth_modem_is_up and router_status == 'usb': + new_router_status = 'eth' +elif not eth_modem_is_up and router_status == 'eth': + new_router_status = 'usb' + +if new_router_status: + requests.post(f"http://{ROUTER_ADDRESS}/status/{new_router_status}", auth=(router_user, router_pass)) diff --git a/main.py b/router.py similarity index 100% rename from main.py rename to router.py