def thomson_install(firmware): try: fw_src_path = FW_PATHS[firmware.model][firmware.version] except KeyError: fetchfw.die("unsupported model/version (%s/%s)" % (firmware.model, firmware.version)) assert len(firmware.remote_files) == 1 zip_path = fetchfw.zip_extract_all(firmware.name, firmware.remote_files[0].path) fw_zip_path = os.path.join(zip_path, fw_src_path) fw_dst_dir = os.path.join(fetchfw.TFTP_PATH, "Thomson", "binary") fetchfw.makedirs(fw_dst_dir) if firmware.model == 'TB30': pre_dsp_file = "%sS_V" % firmware.model pre_fw_file = "%sS." % firmware.model else: modelnum = firmware.model[2:] pre_dsp_file = "v%s_dsp_" % modelnum pre_fw_file = "v%sSG." % modelnum for fw_file in os.listdir(fw_zip_path): if fw_file.startswith(pre_dsp_file) or fw_file.startswith(pre_fw_file): shutil.copy2(os.path.join(fw_zip_path, fw_file), os.path.join(fw_dst_dir, fw_file))
def snom_m3_install(firmware): fw_dst_dir = os.path.join(fetchfw.TFTP_PATH, "Snom", "firmware") fetchfw.makedirs(fw_dst_dir) for xfile in firmware.remote_files: fw_dst_path = os.path.join(fw_dst_dir, xfile.filename) shutil.copy2(xfile.path, fw_dst_path)
def siemens_install(firmware): assert len(firmware.remote_files) == 1 xfile = firmware.remote_files[0] fw_dst_dir = os.path.join(fetchfw.TFTP_PATH, 'Siemens', 'firmware', firmware.model.lower()) fetchfw.makedirs(fw_dst_dir) shutil.copy2(xfile.path, fw_dst_dir)
def yealink_install(firmware): zip_path = fetchfw.zip_extract_all(firmware.name, firmware.remote_files[0].path) fw_src_name, fw_dst_name = FW_PATHS[firmware.model][firmware.version] fw_src_path = os.path.join(zip_path, fw_src_name) fw_dst_path = os.path.join(fetchfw.TFTP_PATH, 'Yealink', fw_dst_name) fetchfw.makedirs(os.path.dirname(fw_dst_path)) shutil.copy2(fw_src_path, fw_dst_path)
def linksys_dblzip_install_fw(firmware, zip_name, fw_name): zipfile1_path = firmware.remote_files[0].path unzip_dir = fetchfw.zip_extract_all(firmware.name, zipfile1_path) zipfile2_path = os.path.join(unzip_dir, zip_name) fw_dst_path = os.path.join(fetchfw.TFTP_PATH, 'Linksys', 'firmware') fetchfw.makedirs(fw_dst_path) fetchfw.zip_extract_files(zipfile2_path, (fw_name,), fw_dst_path)
def polycom_install_bootrom(xfile): zip_path = fetchfw.zip_extract_all("polycom_bootrom", xfile.path) fw_dst_dir = os.path.join(fetchfw.TFTP_PATH, "Polycom") fetchfw.makedirs(fw_dst_dir) for fw_file in os.listdir(zip_path): fw_src_path = os.path.join(zip_path, fw_file) fw_dst_path = os.path.join(fw_dst_dir, fw_file) shutil.copy2(fw_src_path, fw_dst_path)
def aastra_install_langs(firmware, xfile, i18n_dir): zip_path = fetchfw.zip_extract_all('aastra-langs', xfile.path) fw_dst_dir = os.path.join(fetchfw.TFTP_PATH, "Aastra", i18n_dir) fetchfw.makedirs(fw_dst_dir) for fw_file in os.listdir(zip_path): fw_src_path = os.path.join(zip_path, fw_file) fw_dst_path = os.path.join(fw_dst_dir, fw_file) shutil.copy2(fw_src_path, fw_dst_path)
def sangoma_echocan_install(firmware): xfile = firmware.remote_files[0] tgz_path = fetchfw.tgz_extract_all("sangoma_echocan", xfile.path) fetchfw.makedirs(SANGOMA_ECHOCAN_PATH) for root, dirs, files, in os.walk(tgz_path): for fw_file in files: if fw_file[-4:] == ".ima": fw_src_path = os.path.join(tgz_path, root, fw_file) shutil.copy2(fw_src_path, SANGOMA_ECHOCAN_PATH)
def aastra_install_fw(firmware, xfile): zip_path = fetchfw.zip_extract_all(firmware.name, xfile.path) fw_src_path = os.path.join(zip_path, "%s.st" % firmware.model) fw_dst_dir = os.path.join(fetchfw.TFTP_PATH, "Aastra") if not (os.access(fw_src_path, os.R_OK) and os.path.isfile(fw_src_path)) \ and AASTRA_MODEL_STANDARDIZE.has_key(firmware.model): fw_src_path = os.path.join(zip_path, "%s.st" % AASTRA_MODEL_STANDARDIZE.get(firmware.model)) fetchfw.makedirs(fw_dst_dir) shutil.copy2(fw_src_path, fw_dst_dir)
def polycom_install_app(xfile): zip_path = fetchfw.zip_extract_all("polycom_app", xfile.path) fw_dst_dir = os.path.join(fetchfw.TFTP_PATH, "Polycom") fetchfw.makedirs(fw_dst_dir) for fw_file in APP_FILES: fw_src_path = os.path.join(zip_path, fw_file) fw_dst_path = os.path.join(fw_dst_dir, fw_file) shutil.copy2(fw_src_path, fw_dst_path) fw_src_path = os.path.join(zip_path, "SoundPointIPLocalization") fw_dst_path = os.path.join(fw_dst_dir, "SoundPointIPLocalization") shutil.rmtree(fw_dst_path, True) shutil.copytree(fw_src_path, fw_dst_path)
def ciscospa5xx_install_fw(firmware, fw_name): zipfile_path = firmware.remote_files[0].path fetchfw.makedirs(smb_fw_dst_path) fetchfw.zip_extract_files(zipfile_path, (fw_name,), smb_fw_dst_path)
def linksys_zip_install_fw(firmware, fw_name): zipfile_path = firmware.remote_files[0].path fw_dst_path = os.path.join(fetchfw.TFTP_PATH, 'Linksys', 'firmware') fetchfw.makedirs(fw_dst_path) fetchfw.zip_extract_files(zipfile_path, (fw_name,), fw_dst_path)
def linksys_install_locale(xfile, src_file, dst_file): unzip_dir = fetchfw.zip_extract_all('linksys_langs', xfile.path) lang_dst_path = os.path.join(fetchfw.TFTP_PATH, 'Linksys/i18n') fetchfw.makedirs(lang_dst_path) shutil.copy(os.path.join(unzip_dir, src_file), os.path.join(lang_dst_path, dst_file))
def ciscospa5xx_install_locale(xfile, locale_src_file, locale_dst_file): zipfile_path = xfile.path unzip_dir = fetchfw.zip_extract_all('spa5xx_lang', zipfile_path) fetchfw.makedirs(smb_dict_dst_path) shutil.copy(os.path.join(unzip_dir, locale_src_file), os.path.join(smb_dict_dst_path, locale_dst_file))
def snom_install_fw(xfile): fw_dst_dir = os.path.join(fetchfw.TFTP_PATH, "Snom", "firmware") fw_dst_path = os.path.join(fw_dst_dir, xfile.filename) fetchfw.makedirs(fw_dst_dir) shutil.copy2(xfile.path, fw_dst_path)
def nortel_install_fw(xfile): fw_dst_dir = os.path.join(fetchfw.TFTP_PATH, 'Nortel', 'firmware') fw_dst_path = os.path.join(fw_dst_dir, xfile.filename) fetchfw.makedirs(fw_dst_dir) shutil.copy2(xfile.path, fw_dst_path)
def zenitel_install(firmware): fw_dst_dir = os.path.join(fetchfw.TFTP_PATH) fetchfw.makedirs(fw_dst_dir) fetchfw.zip_extract_files(firmware.remote_files[0].path, ('A100G80200.01_11_3_2.bin',), fw_dst_dir)
def sangoma_install(firmware): xfile = firmware.remote_files[0] fetchfw.makedirs(SANGOMA_FW_PATH) shutil.copy2(xfile.path, SANGOMA_FW_PATH)