Adding a detector to know if internet is down or not
This commit is contained in:
52
detector.py
Normal file
52
detector.py
Normal file
@@ -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))
|
||||
Reference in New Issue
Block a user