43 lines
1.5 KiB
Python
43 lines
1.5 KiB
Python
|
#!/usr/bin/env python3
|
||
|
|
||
|
from .connectors import get_connector
|
||
|
from .fxckers._map import fxckers_map
|
||
|
|
||
|
import re
|
||
|
import requests
|
||
|
|
||
|
|
||
|
class LibreFi:
|
||
|
def __init__(self):
|
||
|
self.connector = get_connector()()
|
||
|
self.current_fxcker = None
|
||
|
|
||
|
def _periodical_check(self):
|
||
|
status = self.connector.status()
|
||
|
print(status)
|
||
|
if not status["connected"]:
|
||
|
networks = self.connector.list()
|
||
|
chosen_network = None
|
||
|
for network in networks:
|
||
|
for fxck_element in fxckers_map:
|
||
|
for fxck_net_name in fxck_element[0]:
|
||
|
if fxck_net_name[:3] == "re:":
|
||
|
if re.fullmatch(fxck_net_name,
|
||
|
"re:" + network["ssid"]):
|
||
|
chosen_network = network
|
||
|
self.current_fxcker = fxck_element[1]
|
||
|
break
|
||
|
elif fxck_net_name == network["ssid"]:
|
||
|
chosen_network = network
|
||
|
self.current_fxcker = fxck_element[1]
|
||
|
break
|
||
|
if chosen_network is not None:
|
||
|
self.connector.connect(chosen_network)
|
||
|
status = self.connector.status()
|
||
|
if status["connected"]:
|
||
|
check_req = requests.get(
|
||
|
"http://detectportal.firefox.com/success.txt",
|
||
|
allow_redirects=False)
|
||
|
if check_req.text.strip() != "success":
|
||
|
self.current_fxcker.unfxck()
|