From 01c782cca902a94f5f1486f833d9c835418630b0 Mon Sep 17 00:00:00 2001 From: zefie Date: Sat, 19 Feb 2022 09:52:05 -0500 Subject: [PATCH] fix issue with locally stored flashroms --- zefie_wtvp_minisrv/WTVFlashrom.js | 3 ++- zefie_wtvp_minisrv/app.js | 27 +++++++++++++++++++++++++-- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/zefie_wtvp_minisrv/WTVFlashrom.js b/zefie_wtvp_minisrv/WTVFlashrom.js index 869d8fe4..0740ea01 100644 --- a/zefie_wtvp_minisrv/WTVFlashrom.js +++ b/zefie_wtvp_minisrv/WTVFlashrom.js @@ -36,7 +36,7 @@ class WTVFlashrom { if (info_only) { callback(self.getFlashromInfo(data, request_path)); } else { - self.sendToClient(data, flashrom_file_path, callback); + self.sendToClient(data, request_path, callback); } } }); @@ -123,6 +123,7 @@ class WTVFlashrom { if (flashrom_info.is_bootrom) headers += "Content-Type: binary/x-wtv-bootrom"; // maybe? else headers += "Content-Type: binary/x-wtv-flashblock"; if (flashrom_info.next_rompath != null && this.bf0app_update) headers += "\nwtv-visit: " + flashrom_info.next_rompath; + headers += "\nminisrv-no-mail-count: true"; callback(data, headers); } diff --git a/zefie_wtvp_minisrv/app.js b/zefie_wtvp_minisrv/app.js index c5621e30..2cdbb248 100644 --- a/zefie_wtvp_minisrv/app.js +++ b/zefie_wtvp_minisrv/app.js @@ -16,6 +16,7 @@ const WTVClientCapabilities = require('./WTVClientCapabilities.js'); const WTVClientSessionData = require('./WTVClientSessionData.js'); const WTVMime = require("./WTVMime.js"); const { WTVShared, clientShowAlert } = require("./WTVShared.js"); +const WTVFlashrom = require("./WTVFlashrom.js"); process .on('SIGTERM', shutdown('SIGTERM')) @@ -161,8 +162,30 @@ async function processPath(socket, service_vault_file_path, request_headers = ne request_headers.service_file_path = service_vault_file_path; request_headers.raw_file = true; - // service parsed files, we might not want to expose our service source files so we can protect them with a flag on the first line - if (wtvshared.getFileExt(service_vault_file_path).toLowerCase() == "js" || wtvshared.getFileExt(service_vault_file_path).toLowerCase() == "txt") { + // process flashroms + if (wtvshared.getFileExt(service_vault_file_path).toLowerCase() == "rom" || wtvshared.getFileExt(service_vault_file_path).toLowerCase() == "brom") { + var bf0app_update = false; + var request_path = request_headers.request_url.replace(service_name + ":/", ""); + var romtype = ssid_sessions[socket.ssid].get("wtv-client-rom-type"); + var bootver = ssid_sessions[socket.ssid].get("wtv-client-bootrom-version") + + if ((romtype == "bf0app" || !romtype) && (bootver == "105" || !bootver)) { + // assume old classic in flash mode, override user setting and send tellyscript + // because it is required to proceed in flash mode + bf0app_update = true; + ssid_sessions[socket.ssid].set("bf0app_update", bf0app_update); + } + + if (!ssid_sessions[socket.ssid].data_store.WTVFlashrom) { + ssid_sessions[socket.ssid].data_store.WTVFlashrom = new WTVFlashrom(minisrv_config, service_vaults, service_name, minisrv_config.services[service_name].use_zefie_server, bf0app_update); + } + + ssid_sessions[socket.ssid].data_store.WTVFlashrom.getFlashRom(request_path, function (data, headers) { + sendToClient(socket, headers, data); + }); + + // service parsed files, we might not want to expose our service source files so we can protect them with a flag on the first line + } else if (wtvshared.getFileExt(service_vault_file_path).toLowerCase() == "js" || wtvshared.getFileExt(service_vault_file_path).toLowerCase() == "txt") { if (wtvshared.getFileExt(service_vault_file_path).toLowerCase() == "js") { wtvshared.getLineFromFile(service_vault_file_path, 0, function (status, line) { if (!status) {