def import_firmwares(self, release_model: str): """ Imports the stored Firmwares, so the firmware_handler can use them. :param release_model: stable, beta, experimental """ path = FIRMWARE_PATH + '/' + release_model + '/' + self.UPDATE_TYPE + '/' logging.debug("%sImport Firmwares from '" + path + "'", LoggerSetup.get_log_deep(2)) count = 0 try: files = os.listdir(path) except Exception: logging.debug("%sNo Firmwares available for import at path '" + path + "'", LoggerSetup.get_log_deep(3)) return for firmware_name in files: try: freifunk_verein = firmware_name.split('-')[1] firmware_version = firmware_name.split('-')[2] file = path + firmware_name url = self.url + '/' + release_model + '/' + self.UPDATE_TYPE + '/' + firmware_name self.firmwares.append(Firmware(firmware_name, firmware_version, freifunk_verein, release_model, file, url)) count += 1 except Exception: logging.warning("%s[-] Couldn't import " + firmware_name, LoggerSetup.get_log_deep(3)) continue logging.debug("%s" + str(count) + " Firmwares imported", LoggerSetup.get_log_deep(3))
def _get_all_firmwares(self, release_model: str): """ Creats a list of Firmwares and a list of related Hashs. All Firmwares are given from the Manifest which is downloaded first. :param release_model: stable, beta, experimental :return: """ firmwares = [] hashs = [] non_parsed_firmwares = self._read_firmwares_from_manifest( release_model) for firmware in non_parsed_firmwares: firmware_name = "gluon" + firmware.split("gluon")[1].split("-sysupgrade")[0] + "-" + \ FirmwareHandler.UPDATE_TYPE + "." + firmware.split(".")[-1].replace("\n", "") hash_firmware = firmware.split(' ')[4] freifunk_verein = firmware_name.split('-')[1] firmware_version = firmware_name.split('-')[2] file = (self.FIRMWARE_PATH + '/' + release_model + '/' + FirmwareHandler.UPDATE_TYPE + '/' + firmware_name) url = self.url + '/' + release_model + '/' + FirmwareHandler.UPDATE_TYPE + '/' + firmware_name firmwares.append( Firmware(firmware_name, firmware_version, freifunk_verein, release_model, file, url)) hashs.append(hash_firmware) return [firmwares, hashs]
def _get_all_firmwares(self, release_model: str): """ Creats a list of Firmwares and a list of related hashs. All Firmwares are given from the Manifest which is downloaded first. :param release_model: Can be set to: 'stable', 'beta' or 'experimental'. Used in the url :return: Tuple of a list of Firmware-Obj and a list of hashs """ firmwares = [] hashs = [] non_parsed_firmwares = self._read_firmwares_from_manifest(release_model) for firmware in non_parsed_firmwares: if firmware.find("---\n") != -1: # skip the end of the file continue firmware_name = "gluon" + firmware.split("gluon")[1].split("-sysupgrade")[0] + "-" + \ FirmwareHandler.UPDATE_TYPE + "." + firmware.split(".")[-1].replace("\n", "") hash_firmware = firmware.split(' ')[4] freifunk_verein = firmware_name.split('-')[1] firmware_version = firmware_name.split('-')[2] file = (FIRMWARE_PATH + '/' + release_model + '/' + FirmwareHandler.UPDATE_TYPE + '/' + firmware_name) url = self.url + '/' + release_model + '/' + FirmwareHandler.UPDATE_TYPE + '/' + firmware_name firmwares.append(Firmware(firmware_name, firmware_version, freifunk_verein, release_model, file, url)) hashs.append(hash_firmware) return [firmwares, hashs]
def import_firmwares(self, release_model: str): """ Imports the stored Firmwares, so the firmware_handler can use them. :param release_model: stable, beta, experimental """ path = self.FIRMWARE_PATH + '/' + release_model + '/' + self.UPDATE_TYPE + '/' Logger().debug("Import Firmwares from '" + path + "'", 2) count = 0 try: files = os.listdir(path) except Exception as e: Logger().debug("No Firmwares available for download at path '" + path + "'", 3) return for firmware_name in files: try: freifunk_verein = firmware_name.split('-')[1] firmware_version = firmware_name.split('-')[2] file = path + firmware_name url = self.url + '/' + release_model + '/' + self.UPDATE_TYPE + '/' + firmware_name self.firmwares.append(Firmware(firmware_name, firmware_version, freifunk_verein, release_model, file, url)) count += 1 except Exception as e: Logger().warning("[-] Couldn't import " + firmware_name, 3) continue Logger().debug(str(count) + " Firmwares imported", 3)
def test_create_Firmware(self): firmware_name = "gluon-ffda-0.7.3-tp-link-tl-wr841n-nd-v9-sysupgrade.bin" url = "https://firmware.darmstadt.freifunk.net" firmware = Firmware(firmware_name, "0.7.3", "ffda", "stable", "/folder/folder/file", url) assert isinstance(firmware, Firmware) self.assertEqual(firmware_name, firmware.name) self.assertEqual("0.7.3", firmware.version) self.assertEqual("ffda", firmware.freifunk_verein) self.assertEqual("stable", firmware.release_model) self.assertEqual("/folder/folder/file", firmware.file) self.assertEqual(url, firmware.url)