add logger

netiawifi
selfisekai 2020-09-05 03:24:34 +02:00
parent 58fb0a63b9
commit 3f2f16abc0
4 changed files with 65 additions and 8 deletions

View File

@ -1,4 +1,5 @@
from .librefi import LibreFi
from .logger import LOG_LEVELS
librefi = LibreFi()
librefi = LibreFi(log_level=LOG_LEVELS.DEBUG)
librefi._periodical_check()

View File

@ -5,14 +5,15 @@ from ..utils import get_user_agent
class BaseFxcker:
def __init__(self):
def __init__(self, logger, log_level):
self.cookie_jar = CookieJar()
self.log = logger(key=self.FXCKER_KEY, log_level=log_level)
@property
def FXCKER_KEY(self):
return self.__class__.__name__[:-6]
def request(self, method, url, **kwargs):
def request(self, method, url, resource=None, **kwargs):
kwargs["cookies"] = self.cookie_jar
if not kwargs.get("headers"):
kwargs["headers"] = {}
@ -20,4 +21,6 @@ class BaseFxcker:
kwargs["headers"]["User-Agent"] = get_user_agent()
if not kwargs.get("allow_redirects"):
kwargs["allow_redirects"] = True
self.log.info("Requesting " +
resource if resource else (method + " " + url))
return requests.request(method, url, **kwargs)

View File

@ -2,20 +2,31 @@
from .connectors import get_connector
from .fxckers._map import fxckers_map
from .logger import _Logger, LOG_LEVELS
import re
import requests
class LibreFi:
def __init__(self):
def __init__(self, log_level=LOG_LEVELS.INFO, logger=_Logger):
self.connector = get_connector()()
self.current_fxcker = None
self.log_level = log_level
self.logger = logger
self.log = self.logger(key="lfi:core", log_level=self.log_level)
self.log.info("Initialized")
def _periodical_check(self):
self.log.debug("Doing periodical check")
status = self.connector.status()
print(status)
self.log.debug("Disconnected" if not status["connected"]
else 'Connected to {} ("{}")'.format(
status["connection_type"],
status["connection_name"]))
if not status["connected"]:
self.current_fxcker = None
networks = self.connector.list()
chosen_network = None
for network in networks:
@ -24,8 +35,13 @@ class LibreFi:
chosen_network = network
break
if chosen_network is not None:
self.log.info(
'Connecting to "{}"'
.format(network["ssid"]))
self.connector.connect(chosen_network)
status = self.connector.status()
else:
self.log.info("No eligible network found")
if status["connected"]:
if not self.current_fxcker:
self._assign_fxcker_to_network(
@ -35,20 +51,28 @@ class LibreFi:
"http://detectportal.firefox.com/success.txt",
allow_redirects=False)
if check_req.text.strip() != "success":
print(self.current_fxcker)
self.log.info("No internet access, trying {}.unfxck()"
.format(self.current_fxcker.FXCKER_KEY))
self.current_fxcker.unfxck(
location=check_req.headers["location"],
)
else:
self.log.debug("Internet access working")
def _assign_fxcker_to_network(self, network):
fxcker = None
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"]):
self.current_fxcker = fxck_element[1]()
fxcker = fxck_element[1]
break
elif fxck_net_name == network["ssid"]:
self.current_fxcker = fxck_element[1]()
fxcker = fxck_element[1]
break
if fxcker:
self.log.info("Switching fxcker to " + fxcker.FXCKER_KEY)
self.current_fxcker = fxcker(
logger=self.logger, log_level=self.log_level)
return self.current_fxcker

29
librefi/logger.py Normal file
View File

@ -0,0 +1,29 @@
class LOG_LEVELS:
DEBUG = -10
INFO = 0
ERROR = 10
FATAL = 20
class _Logger:
printer = print
def __init__(self, key="--no-key--", log_level=LOG_LEVELS.INFO):
self.KEY = key
self.LOG_LEVEL = log_level
def debug(self, message):
if self.LOG_LEVEL <= LOG_LEVELS.DEBUG:
self.printer("[" + self.KEY + "] " + message)
def info(self, message):
if self.LOG_LEVEL <= LOG_LEVELS.INFO:
self.printer("[" + self.KEY + "] " + message)
def error(self, message):
if self.LOG_LEVEL <= LOG_LEVELS.ERROR:
self.printer("[" + self.KEY + "] " + message)
def fatal(self, message):
if self.LOG_LEVEL <= LOG_LEVELS.FATAL:
self.printer("[" + self.KEY + "] " + message)