From a887a36104fa7b0636600bcc5296b2fc9fabe8f3 Mon Sep 17 00:00:00 2001 From: zefie Date: Tue, 11 Oct 2022 13:51:20 -0400 Subject: [PATCH] lots of changes: - change how we handle modules for services in the VM - fixed wtv-disk:/sync always failed the first time - implement production-like wtv-star handling (when a service port becomes unavailable, it requests the url over the wtv-star port to show an error page) - renamed WTVDownloadList.js to WTVDisk.js - a bit more work on WTVNews (created class) - probably more stuff I can't remember --- .../ServiceVault/wtv-disk/sync.js | 4 +- .../ServiceVault/wtv-home/home.js | 131 +++++--------- .../wtv-news/images/BannerDiscuss.gif | Bin 0 -> 1070 bytes .../ServiceVault/wtv-news/lobby.js | 2 +- .../ServiceVault/wtv-news/news.js | 164 +++++------------- .../ServiceVault/wtv-setup/choose-bg-songs.js | 2 + .../ServiceVault/wtv-setup/get-playlist.js | 1 + .../ServiceVault/wtv-setup/set-bg.js | 1 + zefie_wtvp_minisrv/app.js | 129 +++++++++----- .../{WTVDownloadList.js => WTVDisk.js} | 4 +- zefie_wtvp_minisrv/includes/WTVNews.js | 105 +++++++++++ zefie_wtvp_minisrv/includes/WTVShared.js | 21 ++- zefie_wtvp_minisrv/includes/config.json | 15 +- zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj | 6 +- 14 files changed, 314 insertions(+), 271 deletions(-) create mode 100644 zefie_wtvp_minisrv/ServiceVault/wtv-news/images/BannerDiscuss.gif rename zefie_wtvp_minisrv/includes/{WTVDownloadList.js => WTVDisk.js} (98%) diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/sync.js b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/sync.js index 4515a520..2f4386cd 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/sync.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/sync.js @@ -1,7 +1,7 @@ var minisrv_service_file = true; var diskmap = Object.getCaseInsensitiveKey(request_headers.query, "DiskMap"); -var wtvdl = new WTVDownloadList(minisrv_config, service_name); +var wtvdl = new WTVDisk(minisrv_config, service_name); var force_update = (request_headers.query.force == "true") ? true : false; var no_delete = (request_headers.query.dont_delete_files == "true") ? true : false; @@ -318,6 +318,6 @@ if (request_headers['wtv-request-type'] == 'download') { } else if (request_headers.query.group && diskmap) { var message = request_headers.query.message || "Retrieving files..."; var main_message = request_headers.query.main_message || "Your receiver is downloading files."; - headers = "200 OK\nwtv-connection-close: close\nConnection: close\nContent-Type: text/html"; + headers = "200 OK\nContent-Type: text/html\nwtv-expire-all: wtv-disk:"; data = wtvdl.getSyncPage(message, request_headers.query.group, diskmap, main_message, message, force_update, no_delete); } \ No newline at end of file diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-home/home.js b/zefie_wtvp_minisrv/ServiceVault/wtv-home/home.js index 378c1944..56cf5f78 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-home/home.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-home/home.js @@ -1,34 +1,37 @@ var minisrv_service_file = true; -headers =`200 OK + +if (request_headers.query.url) { + headers = `300 OK +Location: ${request_headers.query.url}`; +} else { + headers = `200 OK Connection: Keep-Alive wtv-expire-all: wtv-home:/splash wtv-expire-all: wtv-flashrom: Content-type: text/html` + var cryptstatus = (wtv_encrypted ? "Encrypted" : "Not Encrypted") -if (request_headers.query.url) headers += "\nwtv-visit: " + request_headers.query.url; -var cryptstatus = (wtv_encrypted ? "Encrypted" : "Not Encrypted") + var comp_type = wtvmime.shouldWeCompress(session_data, 'text/html'); + var compstatus = "uncompressed"; + switch (comp_type) { + case 1: + compstatus = "wtv-lzpf"; + break; + case 2: + compstatus = "gzip (level 9)"; + break; + } -var comp_type = wtvmime.shouldWeCompress(session_data,'text/html'); -var compstatus = "uncompressed"; -switch (comp_type) { - case 1: - compstatus = "wtv-lzpf"; - break; - case 2: - compstatus = "gzip (level 9)"; - break; -} - -var unread_mailcount = session_data.mailstore.countUnreadMessages(0) -var mailbox_gif_num = 0; // no messages -if (unread_mailcount > 0) { - if (unread_mailcount == 1) mailbox_gif_num = 1; - else mailbox_gif_num = 2; -} + var unread_mailcount = session_data.mailstore.countUnreadMessages(0) + var mailbox_gif_num = 0; // no messages + if (unread_mailcount > 0) { + if (unread_mailcount == 1) mailbox_gif_num = 1; + else mailbox_gif_num = 2; + } -data = ` + data = ` Home for ${session_data.getSessionData("subscriber_username") || "minisrv"} @@ -46,7 +49,7 @@ data = ` - + @@ -334,8 +337,8 @@ data = ` Welcome to ${minisrv_config.config.service_name}`; -if (session_data.getSessionData("registered")) data += ", " + session_data.getSessionData("subscriber_username") + "!"; -data += ` + if (session_data.getSessionData("registered")) data += ", " + session_data.getSessionData("subscriber_username") + "!"; + data += ` @@ -350,23 +353,23 @@ data += ` `; -// for development -if (fs.existsSync(service_vaults[0] + "/" + service_name + "/home.zefie.html")) { - data += fs.readFileSync(service_vaults[0] + "/" + service_name + "/home.zefie.html", { 'encoding': 'utf8' }); -} -data += ` + if (session_data.hasCap("client-has-disk")) { + // only show disk stuff if client has disk + data += "
  • DiskHax ~ VFatHax
  • \n"; + if (session_data.hasCap("client-can-do-macromedia-flash2")) { + // only show demo if client can do flash2 + data += "
  • Old DealerDemo: Download ~ Access
  • \n"; + } + } + data += ``; + // for development + if (fs.existsSync(service_vaults[0] + "/" + service_name + "/home.zefie.html")) { + data += fs.readFileSync(service_vaults[0] + "/" + service_name + "/home.zefie.html", { 'encoding': 'utf8' }); + } + data += ` @@ -386,50 +389,4 @@ data += ` ` - -/* -data = ` - -Home for ${session_data.getSessionData("subscriber_username") || "minisrv"} - - - -Welcome to ${minisrv_config.config.service_name}`; -if (session_data.getSessionData("registered")) data += ", " + session_data.getSessionData("subscriber_username") + "!"; -data += `
    -
    - -minisrv v${minisrv_config.version}${(minisrv_config.config.git_commit) ? ' git-'+minisrv_config.config.git_commit : ''}, hosted by ${minisrv_config.config.service_owner}

    - -
    -Status: ${cryptstatus} (${compstatus})
    -Connection Speed: &rate; -
    -"; - -// for development -if (fs.existsSync(service_vaults[0] + "/" + service_name + "/home.zefie.html")) { - data += fs.readFileSync(service_vaults[0] + "/" + service_name + "/home.zefie.html", { 'encoding': 'utf8' }); -} -*/ \ No newline at end of file +} \ No newline at end of file diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-news/images/BannerDiscuss.gif b/zefie_wtvp_minisrv/ServiceVault/wtv-news/images/BannerDiscuss.gif new file mode 100644 index 0000000000000000000000000000000000000000..ecfbfbdd9a2ce410a5871940ca0bce2486ab96b2 GIT binary patch literal 1070 zcmV+}1kw9PNk%w1VKM-v0KxzOK{Gx*FFG|TGFC=XPe4m3A0|dPLtIN(A^8LW00031 zEC2ui05Slj000C27`oj4L5L!tz1Wp40FYVuOcJ$hz@e%GAih!I1%P41#;Ov-LBOxx z>PFEG7J$JIh?xwOr`(Vs7~GhUNzSEku8s}B66=s0xZQ&8$|!)z4cS;x2!(5jSdC`6Gf7%Rg9+# zqLfB-6ru-Kv8X~j3{q>m4j!E}HOIxm%FE15Ak7)86eP_O){p|YzRM)nE+jg^%PcBH zkt{bg2g#OhK34_6>kVhZGV5riUkw7OyA$&k035{tfSX-1V3}EghmM|Dr8?aU#BUJ9 zM{TrKk^uh85&=8|%T@FjtAig_Dm1uZN2ZFvc>CIv>PRS?0cql5%w)OeiHBMSH!Si2 zO&bd?9m3UPR-;cRF{%1|ghsWhRSPDrUMSU2Ynyu%7HF zovV~5kP3A35)3Oquii><%pefre#5* z{#hGMnly)$C8w2MEdfwvXMp_9<%}h%?73Y7_q`o1vj{Uvg7X+IT**{nWF4Fh?(<7Igh{<3dQ|EU%f=0aK%J6C359!$)`= z#{R*JzUA=`MlS&Lj~GDAhg^JdxS`)&N<3r1DmergLJBQZSAtmCa<55^VVm2RS@Q24i(~(cu?K5;7wtcrbPt z51sC4>ZvO!jZ4y_EjvN z7;HI$pUalofGCD)dPZT`5;hoQqA_>ut-5(j=BqA_xj?n3rmLiXXfQ)3RYUvcbOuON;BjPmJ2|iN-oJa4vl)Ebokx_;;qG3t);a ztkj
    - +
    diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-news/news.js b/zefie_wtvp_minisrv/ServiceVault/wtv-news/news.js index 5db5634b..562dffdf 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-news/news.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-news/news.js @@ -1,93 +1,28 @@ var minisrv_service_file = true; -async function clientConnect(client) { - response = await client.connect() - if (response.code == 200) { - return true; - } - return false; -} +console.log('f') -async function listGroup(client, group) { - try { - return await client.listGroup(group) - } catch (e) { - console.log("WTVNews Error -", "Command: listGroup", e); - } - return null; -} - -async function selectGroup(client, group) { - try { - response = await client.group(request_headers.query.group) - if (response.code == 211) { - return true; - } - return false; - } catch (e) { - console.log("WTVNews Error -", "Command: selectGroup", e); - } - return false; - -} - -async function getArticle(client, articleID) { - try { - return await client.article(articleID) - } catch (e) { - console.log("WTVNews Error -", "Command: article", e); - } - return null; -} - -async function getHeader(client, articleID) { - try { - return await client.head(articleID) - } catch (e) { - console.log("WTVNews Error -", "Command: head -", "Article ID: "+articleID, e); - } - return null; -} - -async function quitUsenet(client) { - response = await client.quit() - if (response.code == 205) { - return true; - } - return false; -} - -async function getHeaderObj(client, NGArticles) { - var messages = []; - for (var article in NGArticles) { - if (article == "getCaseInsensitiveKey") continue; - try { - var data = await getHeader(client, NGArticles[article]); - if (data.article) messages.push(data.article) - } catch (e) { - console.log(e, article); - } - } - return messages; +async function throwError(e) { + var errpage = wtvshared.doErrorPage(400, null, e.toString()); + sendToClient(socket, errpage[0], errpage[1]); } -async function WebTVListGroup(client, group) { - var connected = await clientConnect(client) - if (connected) { - response = await selectGroup(client, group); - if (response) { - response = await listGroup(client, group); - if (response.code == 211) { - NGCount = response.group.number; - NGArticles = response.group.articleNumbers; - messages = await getHeaderObj(client, NGArticles); - quitUsenet(client); - headers = `200 OK +async function WebTVListGroup(group) { + wtvnews.connectUsenet().then(() => { + wtvnews.selectGroup(group).then(() => { + wtvnews.listGroup(group).then((response) => { + if (response.code == 211) { + NGCount = response.group.number; + NGArticles = response.group.articleNumbers; + + wtvnews.getHeaderObj(NGArticles).then((messages) => { + wtvnews.quitUsenet(); + headers = `200 OK Connection: Keep-Alive Content-Type: text/html wtv-expire: wtv-news:/news?group=${request_headers.query.group}` - data = ` + data = `