diff --git a/librefi/librefi.py b/librefi/librefi.py index 2ed8257..7403ce4 100644 --- a/librefi/librefi.py +++ b/librefi/librefi.py @@ -19,24 +19,36 @@ class LibreFi: 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 + self._assign_fxcker_to_network(network) + if self.current_fxcker: + chosen_network = network + 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() + if not self.current_fxcker: + self._assign_fxcker_to_network( + {"ssid": status["connection_name"]}) + if self.current_fxcker: + check_req = requests.get( + "http://detectportal.firefox.com/success.txt", + allow_redirects=False) + if check_req.text.strip() != "success": + print(self.current_fxcker) + self.current_fxcker.unfxck( + location=check_req.headers["location"], + ) + + def _assign_fxcker_to_network(self, network): + 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]() + break + elif fxck_net_name == network["ssid"]: + self.current_fxcker = fxck_element[1]() + break + return self.current_fxcker