add logger
This commit is contained in:
parent
58fb0a63b9
commit
3f2f16abc0
|
@ -1,4 +1,5 @@
|
||||||
from .librefi import LibreFi
|
from .librefi import LibreFi
|
||||||
|
from .logger import LOG_LEVELS
|
||||||
|
|
||||||
librefi = LibreFi()
|
librefi = LibreFi(log_level=LOG_LEVELS.DEBUG)
|
||||||
librefi._periodical_check()
|
librefi._periodical_check()
|
||||||
|
|
|
@ -5,14 +5,15 @@ from ..utils import get_user_agent
|
||||||
|
|
||||||
|
|
||||||
class BaseFxcker:
|
class BaseFxcker:
|
||||||
def __init__(self):
|
def __init__(self, logger, log_level):
|
||||||
self.cookie_jar = CookieJar()
|
self.cookie_jar = CookieJar()
|
||||||
|
self.log = logger(key=self.FXCKER_KEY, log_level=log_level)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def FXCKER_KEY(self):
|
def FXCKER_KEY(self):
|
||||||
return self.__class__.__name__[:-6]
|
return self.__class__.__name__[:-6]
|
||||||
|
|
||||||
def request(self, method, url, **kwargs):
|
def request(self, method, url, resource=None, **kwargs):
|
||||||
kwargs["cookies"] = self.cookie_jar
|
kwargs["cookies"] = self.cookie_jar
|
||||||
if not kwargs.get("headers"):
|
if not kwargs.get("headers"):
|
||||||
kwargs["headers"] = {}
|
kwargs["headers"] = {}
|
||||||
|
@ -20,4 +21,6 @@ class BaseFxcker:
|
||||||
kwargs["headers"]["User-Agent"] = get_user_agent()
|
kwargs["headers"]["User-Agent"] = get_user_agent()
|
||||||
if not kwargs.get("allow_redirects"):
|
if not kwargs.get("allow_redirects"):
|
||||||
kwargs["allow_redirects"] = True
|
kwargs["allow_redirects"] = True
|
||||||
|
self.log.info("Requesting " +
|
||||||
|
resource if resource else (method + " " + url))
|
||||||
return requests.request(method, url, **kwargs)
|
return requests.request(method, url, **kwargs)
|
||||||
|
|
|
@ -2,20 +2,31 @@
|
||||||
|
|
||||||
from .connectors import get_connector
|
from .connectors import get_connector
|
||||||
from .fxckers._map import fxckers_map
|
from .fxckers._map import fxckers_map
|
||||||
|
from .logger import _Logger, LOG_LEVELS
|
||||||
|
|
||||||
import re
|
import re
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
|
|
||||||
class LibreFi:
|
class LibreFi:
|
||||||
def __init__(self):
|
def __init__(self, log_level=LOG_LEVELS.INFO, logger=_Logger):
|
||||||
self.connector = get_connector()()
|
self.connector = get_connector()()
|
||||||
self.current_fxcker = None
|
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):
|
def _periodical_check(self):
|
||||||
|
self.log.debug("Doing periodical check")
|
||||||
status = self.connector.status()
|
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"]:
|
if not status["connected"]:
|
||||||
|
self.current_fxcker = None
|
||||||
networks = self.connector.list()
|
networks = self.connector.list()
|
||||||
chosen_network = None
|
chosen_network = None
|
||||||
for network in networks:
|
for network in networks:
|
||||||
|
@ -24,8 +35,13 @@ class LibreFi:
|
||||||
chosen_network = network
|
chosen_network = network
|
||||||
break
|
break
|
||||||
if chosen_network is not None:
|
if chosen_network is not None:
|
||||||
|
self.log.info(
|
||||||
|
'Connecting to "{}"'
|
||||||
|
.format(network["ssid"]))
|
||||||
self.connector.connect(chosen_network)
|
self.connector.connect(chosen_network)
|
||||||
status = self.connector.status()
|
status = self.connector.status()
|
||||||
|
else:
|
||||||
|
self.log.info("No eligible network found")
|
||||||
if status["connected"]:
|
if status["connected"]:
|
||||||
if not self.current_fxcker:
|
if not self.current_fxcker:
|
||||||
self._assign_fxcker_to_network(
|
self._assign_fxcker_to_network(
|
||||||
|
@ -35,20 +51,28 @@ class LibreFi:
|
||||||
"http://detectportal.firefox.com/success.txt",
|
"http://detectportal.firefox.com/success.txt",
|
||||||
allow_redirects=False)
|
allow_redirects=False)
|
||||||
if check_req.text.strip() != "success":
|
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(
|
self.current_fxcker.unfxck(
|
||||||
location=check_req.headers["location"],
|
location=check_req.headers["location"],
|
||||||
)
|
)
|
||||||
|
else:
|
||||||
|
self.log.debug("Internet access working")
|
||||||
|
|
||||||
def _assign_fxcker_to_network(self, network):
|
def _assign_fxcker_to_network(self, network):
|
||||||
|
fxcker = None
|
||||||
for fxck_element in fxckers_map:
|
for fxck_element in fxckers_map:
|
||||||
for fxck_net_name in fxck_element[0]:
|
for fxck_net_name in fxck_element[0]:
|
||||||
if fxck_net_name[:3] == "re:":
|
if fxck_net_name[:3] == "re:":
|
||||||
if re.fullmatch(fxck_net_name,
|
if re.fullmatch(fxck_net_name,
|
||||||
"re:" + network["ssid"]):
|
"re:" + network["ssid"]):
|
||||||
self.current_fxcker = fxck_element[1]()
|
fxcker = fxck_element[1]
|
||||||
break
|
break
|
||||||
elif fxck_net_name == network["ssid"]:
|
elif fxck_net_name == network["ssid"]:
|
||||||
self.current_fxcker = fxck_element[1]()
|
fxcker = fxck_element[1]
|
||||||
break
|
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
|
return self.current_fxcker
|
||||||
|
|
29
librefi/logger.py
Normal file
29
librefi/logger.py
Normal 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)
|
Loading…
Reference in a new issue