From 3f2f16abc050c899c87c9fd2b6b2d92101d08872 Mon Sep 17 00:00:00 2001 From: selfisekai Date: Sat, 5 Sep 2020 03:24:34 +0200 Subject: [PATCH] add logger --- librefi/__main__.py | 3 ++- librefi/fxckers/_common.py | 7 +++++-- librefi/librefi.py | 34 +++++++++++++++++++++++++++++----- librefi/logger.py | 29 +++++++++++++++++++++++++++++ 4 files changed, 65 insertions(+), 8 deletions(-) create mode 100644 librefi/logger.py diff --git a/librefi/__main__.py b/librefi/__main__.py index 5801e86..f3f2398 100644 --- a/librefi/__main__.py +++ b/librefi/__main__.py @@ -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() diff --git a/librefi/fxckers/_common.py b/librefi/fxckers/_common.py index 161fe9d..f80ad0c 100644 --- a/librefi/fxckers/_common.py +++ b/librefi/fxckers/_common.py @@ -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) diff --git a/librefi/librefi.py b/librefi/librefi.py index 7403ce4..276df5e 100644 --- a/librefi/librefi.py +++ b/librefi/librefi.py @@ -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 diff --git a/librefi/logger.py b/librefi/logger.py new file mode 100644 index 0000000..5a99641 --- /dev/null +++ b/librefi/logger.py @@ -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)