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))