Exemple #1
0
    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]
Exemple #3
0
    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]
Exemple #4
0
    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)
Exemple #5
0
    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)