From 445e28c91a5e20fc3c20f30746a9c79e4adb029f Mon Sep 17 00:00:00 2001 From: zefie Date: Sat, 12 Feb 2022 21:45:06 -0500 Subject: [PATCH] implement internal shared ROMCache - make most ROMCache URLS relative - create wtvshared.htmlEntitize function - update wtv-mail:/readmail to use wtvshared.htmlEntitize --- .../community/ROMCache/AroundTownIcon2.gif | Bin 4857 -> 0 bytes .../sim/community/ROMCache/Chat.gif | Bin 2110 -> 0 bytes .../community/ROMCache/CommunityBanner.gif | Bin 1671 -> 0 bytes .../sim/community/ROMCache/ExploreTitle.gif | Bin 1466 -> 0 bytes .../sim/community/ROMCache/SiteShowcase.gif | Bin 875 -> 0 bytes .../sim/community/ROMCache/news_icon.gif | Bin 1934 -> 0 bytes .../templates/ROMCache/AroundTownIcon2.gif | Bin 4857 -> 0 bytes .../sim/templates/ROMCache/Chat.gif | Bin 2110 -> 0 bytes .../templates/ROMCache/CommunityBanner.gif | Bin 1671 -> 0 bytes .../sim/templates/ROMCache/ExploreTitle.gif | Bin 1466 -> 0 bytes .../sim/templates/ROMCache/SiteShowcase.gif | Bin 875 -> 0 bytes .../sim/templates/ROMCache/news_icon.gif | Bin 1934 -> 0 bytes .../wtv-flashrom/ROMCache/S40H1.gif | Bin 84 -> 0 bytes .../wtv-head-waiter/choose-user.js | 9 +- .../ServiceVault/wtv-home/Credits-Privacy.js | 6 +- .../ServiceVault/wtv-mail/readmail.js | 22 +- .../ServiceVault/wtv-mail/sendmail.js | 66 ++-- .../ServiceVault/wtv-setup/accounts.js | 14 +- .../wtv-setup/add-user-password.js | 10 +- .../wtv-setup/validate-add-user.js | 10 +- .../wtv-star/ROMCache/HackTVLogoJewel.gif | Bin 5845 -> 0 bytes .../ServiceVault/wtv-star/ROMCache/Spacer.gif | Bin 43 -> 0 bytes .../wtv-star/ROMCache/WebTVLogoJewel.gif | Bin 7459 -> 0 bytes .../AT_BannerGradient.gif | Bin .../AT_BannerIcon.gif | Bin .../AT_BottomShadow.gif | Bin .../ROMCache => SharedROMCache}/AT_Shadow.gif | Bin .../AccountBanner.gif | Bin .../AroundTownIcon2.gif | Bin .../BulletArrow.gif | Bin .../sim/ROMCache => SharedROMCache}/Chat.gif | Bin .../CommunityBanner.gif | Bin .../DottedLine.gif | Bin .../ExploreTitle.gif | Bin .../ROMCache => SharedROMCache}/FileImage.gif | Bin .../ROMCache => SharedROMCache}/FileMovie.gif | Bin .../FilePackage.gif | Bin .../ROMCache => SharedROMCache}/FileSound.gif | Bin .../ROMCache => SharedROMCache}/FileText.gif | Bin .../HackTVLogoJewel.gif | Bin .../HomeBanner.gif | Bin .../ROMCache => SharedROMCache}/MSNLogo.gif | Bin .../ROMCache => SharedROMCache}/PanelEdge.gif | Bin .../ROMCache => SharedROMCache}/PaperBase.gif | Bin .../ROMCache => SharedROMCache}/PaperTop.gif | Bin .../PaperTopFlat.gif | Bin .../PromotionLeftEdge.gif | Bin .../RemoveButton.gif | Bin .../ROMCache => SharedROMCache}/S20BV1.gif | Bin .../ROMCache => SharedROMCache}/S20BV2.gif | Bin .../ROMCache => SharedROMCache}/S20TH1.gif | Bin .../ROMCache => SharedROMCache}/S20TV1.gif | Bin .../ROMCache => SharedROMCache}/S20TV2.gif | Bin .../ROMCache => SharedROMCache}/S40H1.gif | Bin .../ROMCache => SharedROMCache}/S40V1.gif | Bin .../ROMCache => SharedROMCache}/S40V2.gif | Bin .../ROMCache => SharedROMCache}/S60HS1.gif | Bin .../ROMCache => SharedROMCache}/S60HS2.gif | Bin .../ROMCache => SharedROMCache}/S60HS3.gif | Bin .../ROMCache => SharedROMCache}/S60HS4.gif | Bin .../ROMCache => SharedROMCache}/S60HS5.gif | Bin .../ROMCache => SharedROMCache}/SAdH1.gif | Bin .../ROMCache => SharedROMCache}/SAdH2.gif | Bin .../ROMCache => SharedROMCache}/SAdH3.gif | Bin .../SettingsBanner.gif | Bin .../ROMCache => SharedROMCache}/Shadow.gif | Bin .../ShadowCorner.gif | Bin .../ROMCache => SharedROMCache}/ShadowH.gif | Bin .../ShadowHCap.gif | Bin .../ShadowHStart.gif | Bin .../SiteShowcase.gif | Bin .../ROMCache => SharedROMCache}/Spacer.gif | Bin .../UsingWebTVBanner.gif | Bin .../WebTVLogoJewel.gif | Bin zefie_wtvp_minisrv/SharedROMCache/ZefieTV.gif | Bin 0 -> 4813 bytes .../help/common/helpMastheadBlank.swf | Bin .../ROMCache => SharedROMCache}/kb.gif | Bin .../ROMCache => SharedROMCache}/kb_alpha.gif | Bin .../ROMCache => SharedROMCache}/news_icon.gif | Bin .../splash_logo_hacktv.gif | Bin .../ROMCache => SharedROMCache}/up-arrows.swf | Bin zefie_wtvp_minisrv/WTVShared.js | 23 +- zefie_wtvp_minisrv/app.js | 318 ++++++++++-------- zefie_wtvp_minisrv/config.json | 2 + zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj | 60 ++++ 85 files changed, 319 insertions(+), 221 deletions(-) delete mode 100644 zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/community/ROMCache/AroundTownIcon2.gif delete mode 100644 zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/community/ROMCache/Chat.gif delete mode 100644 zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/community/ROMCache/CommunityBanner.gif delete mode 100644 zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/community/ROMCache/ExploreTitle.gif delete mode 100644 zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/community/ROMCache/SiteShowcase.gif delete mode 100644 zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/community/ROMCache/news_icon.gif delete mode 100644 zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/templates/ROMCache/AroundTownIcon2.gif delete mode 100644 zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/templates/ROMCache/Chat.gif delete mode 100644 zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/templates/ROMCache/CommunityBanner.gif delete mode 100644 zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/templates/ROMCache/ExploreTitle.gif delete mode 100644 zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/templates/ROMCache/SiteShowcase.gif delete mode 100644 zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/templates/ROMCache/news_icon.gif delete mode 100644 zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/ROMCache/S40H1.gif delete mode 100644 zefie_wtvp_minisrv/ServiceVault/wtv-star/ROMCache/HackTVLogoJewel.gif delete mode 100644 zefie_wtvp_minisrv/ServiceVault/wtv-star/ROMCache/Spacer.gif delete mode 100644 zefie_wtvp_minisrv/ServiceVault/wtv-star/ROMCache/WebTVLogoJewel.gif rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/aroundtown/ROMCache => SharedROMCache}/AT_BannerGradient.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/aroundtown/ROMCache => SharedROMCache}/AT_BannerIcon.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/aroundtown/ROMCache => SharedROMCache}/AT_BottomShadow.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/aroundtown/ROMCache => SharedROMCache}/AT_Shadow.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-setup/ROMCache => SharedROMCache}/AccountBanner.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/ROMCache => SharedROMCache}/AroundTownIcon2.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-setup/ROMCache => SharedROMCache}/BulletArrow.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/ROMCache => SharedROMCache}/Chat.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/ROMCache => SharedROMCache}/CommunityBanner.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-mail/ROMCache => SharedROMCache}/DottedLine.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/ROMCache => SharedROMCache}/ExploreTitle.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-mail/ROMCache => SharedROMCache}/FileImage.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-mail/ROMCache => SharedROMCache}/FileMovie.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-mail/ROMCache => SharedROMCache}/FilePackage.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-mail/ROMCache => SharedROMCache}/FileSound.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-mail/ROMCache => SharedROMCache}/FileText.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-flashrom/ROMCache => SharedROMCache}/HackTVLogoJewel.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/ROMCache => SharedROMCache}/HomeBanner.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-flashrom/ROMCache => SharedROMCache}/MSNLogo.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-mail/ROMCache => SharedROMCache}/PanelEdge.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-mail/ROMCache => SharedROMCache}/PaperBase.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-mail/ROMCache => SharedROMCache}/PaperTop.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-mail/ROMCache => SharedROMCache}/PaperTopFlat.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/ROMCache => SharedROMCache}/PromotionLeftEdge.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-mail/ROMCache => SharedROMCache}/RemoveButton.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache => SharedROMCache}/S20BV1.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache => SharedROMCache}/S20BV2.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache => SharedROMCache}/S20TH1.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache => SharedROMCache}/S20TV1.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache => SharedROMCache}/S20TV2.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache => SharedROMCache}/S40H1.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache => SharedROMCache}/S40V1.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache => SharedROMCache}/S40V2.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache => SharedROMCache}/S60HS1.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache => SharedROMCache}/S60HS2.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache => SharedROMCache}/S60HS3.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache => SharedROMCache}/S60HS4.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache => SharedROMCache}/S60HS5.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache => SharedROMCache}/SAdH1.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache => SharedROMCache}/SAdH2.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache => SharedROMCache}/SAdH3.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-setup/ROMCache => SharedROMCache}/SettingsBanner.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-flashrom/ROMCache => SharedROMCache}/Shadow.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache => SharedROMCache}/ShadowCorner.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache => SharedROMCache}/ShadowH.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache => SharedROMCache}/ShadowHCap.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache => SharedROMCache}/ShadowHStart.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/ROMCache => SharedROMCache}/SiteShowcase.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-flashrom/ROMCache => SharedROMCache}/Spacer.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/using_webtv/ROMCache => SharedROMCache}/UsingWebTVBanner.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-flashrom/ROMCache => SharedROMCache}/WebTVLogoJewel.gif (100%) create mode 100644 zefie_wtvp_minisrv/SharedROMCache/ZefieTV.gif rename zefie_wtvp_minisrv/{ServiceVault/wtv-guide/ROMCache => SharedROMCache}/help/common/helpMastheadBlank.swf (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-setup/ROMCache => SharedROMCache}/kb.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-setup/ROMCache => SharedROMCache}/kb_alpha.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-disk/content/DealerDemo/sim/ROMCache => SharedROMCache}/news_icon.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-star/ROMCache => SharedROMCache}/splash_logo_hacktv.gif (100%) rename zefie_wtvp_minisrv/{ServiceVault/wtv-flashrom/ROMCache => SharedROMCache}/up-arrows.swf (100%) diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/community/ROMCache/AroundTownIcon2.gif b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/community/ROMCache/AroundTownIcon2.gif deleted file mode 100644 index 396f1b3c3eac7ff7feab29ec1e745684ae11f34d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4857 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 G@cBPG8tn@J diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/community/ROMCache/Chat.gif b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/community/ROMCache/Chat.gif deleted file mode 100644 index b2ef4027ec873162617fcad9d3d93ba7a4fd8620..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2110 zcmcJNi#yW`1Au?~?M|C*wwe28GfOTb*ElsxX)ZNF!Y48g5<4BaM4cIGqL|1vhZN(i znsAVuW=Uk#Bq>s(^pHA*>3rvp_})L@eV+GuULW30H}{xeAQ-p|03`dp7cN{d zG_$+S9B?(PQu z5755BAOK(n*!<)ErwKr;b4rA}Y>Y~VFC7_4-twzPmgajU{Mu7_`sn*(x3nz>{js&D zKsfaJLXXFp%$pr}TkM7cZ4QZoC8vt>@>7fnXe1ૅhAT3KZCmP|3&hS7a9&@gt z3`?Y-vueC`aEex1l%&ftUB(pyBCw6pAoO zAWjkWCsA}N_ScjO3a%;|G-&KG@B3pM{}})D*)(a*&~R#nhQ(4Duw7}M0oL;lAJ6^Xju^pZB4sthw7&(mXiUsEa3~ z1_iF450{eL{sSDe^poJNl4^PSEdjcGcWno5NwjAZayQo3{V~h_5+U|QpKQ;|y)pwk zZ;TLKl54Fa-n!IQHt$i%yAxWspKKM}2?3FI&MW2RJuKIp;T@ApGnp~hMlL0OxmKVn zc7RcnC)njK`StTbo}IFp^Z3QZxT(nxacW&etX54O*GCi@*fVD)>^z6rmM@#?#vI=O zx@5Ioh3rd&6-X$F_y79o!(-pCZ#HMU*sk2KtuAqjR#NpF#BZ$M%uKsRB@Mi{wTxJO zH?JJ2{F(VZhxf@#H{k9x!YDz(fl+&qbxEqkeWAxi$6KmT+?W0sML^(G^}hIZ4j+KP z0GtJYwBaKq{~JT>`Eg{QbSud%&LsKXM%M_N;jm#?LaGyI5`h*;<|F_Sje~#yTZyoV zzZ-stZ`qIwADQ==&3wHvFaKm3ywC!GYXdn_KtsD&hL!LG(zCn15D{<&Cl@}vc*@JB za5@>E4g&6R*AC3cAI7x<;Vt5Cc%k6hRj#Ac%Kxng#`y9i+g-c z9!lsB5CXgET_9A`fk775H9_Ep&jnr(5Lc=M(F|ek8P_kTPk}WDdqPm&y{q#GjMjo{ z*Z0~{B|+Eie+|(23IMuY$H)s#W^5NoUq&7CZ(jeeX>L8OkC6cB5-zVuQRd&c@zM>Y z`$bTEW)|QmND=|CS7p5raFirjq%0b>pQhemP{arUQ=#d=7VuM1P~v`NqbWbfwiJol ztgZqWiUGj%fZtoB{?lihn6d1JeBO!c0!TFuCQ*8Po-&?8m}=)7z)h!0M*&=Ljshk) zs}T(mgr&mVtYe%P&3Wv{qy4>ZP9IWjn_A=Bu)*V>deClcCD@u0?W{0Tr~7*ixxz^KbhC_g8RN!JN-gqGDGOB*>;k9&_gz)0rt|Jnhv)Zxfou&gYiizoQ{ zChJJ0H#-VnocVYTR3X9rRpxVle^5+_ z@7dh9C%a;PP(sb}Rpz*FLwL^><6zG?hH2Igw4xX+f8JzcyK&U|a7tdNg9MVygdVcem}n zTY5n)Q_8MJ-aGd^?c7m2EfaPpya3_u{V+0jTWI2fE4|hK7nfBp!V&}tI^4av@)JW=WyW=C8C>|Qx-mczzqba14%+!mzA3=XaeNwRXb90b2KYXl= z{4uTB<(OpA>S(@>qr^FN19fR{HYr55_A%u&s|0{8LADWfNeR?EU?F_6eccg4(Y$p4 zHo*p(X?|6h3o&0qA07y5wO%2r676flnUp6A-2mW1O>F7SGmXCsTMvOw@n=0fmDiPV zZHSt<(_UhNe56YZ0cU}<1k8=GD=G+q3yJ#EvF~3A5lAZg;4TZXs~obRM7}uqV)cAJ z`0C0t{}~TBs#pom)6mB|go7yJVAEd}S78~2Gk{MF=7EEPoU`Z$U+vzEeV{V`WISu_ jNv$Lefmxe#3SJ&ryG_NmOMLw22(@d2taL6806hK%x`|56 diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/community/ROMCache/CommunityBanner.gif b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/community/ROMCache/CommunityBanner.gif deleted file mode 100644 index ad1781dd1bc8908090392f95b230960eba7d48bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1671 zcmV;226*{LNk%w1VK)Hs0JHx9z`(#E7#JxS5IHF!N--fqDHx1WDRV+0tz$8zV=+=O z7=%(OV?rS@ArJrn00000A^8LW00000EC2ui05<^g000F45XecZy*TU5yZ={EfMh8J z3}UWbpr~w&p$HMk_(UVgQQSFJfKX#35C%pA7zEKKgavOwST;RFn2vDlDVW#HfPoos z6A8vI%o-ey3niGnX%q^^#-5+Bg>vSy&=X5Uf97gu)DI`Yk+FBk8Bv3|g zABX}5!r^FOry(8$b_zJ0D6yhIfH4{@sAZsItpo}GL3R|$ab&GSK@dtBCaUEy9zhxy zfJL)rO?L!*bNwJCdE)oM3EjPIw0sYcr1uO6_;edSd z5P0R#(Ab|PXgjG*n>OrN4R*>^ZQyFb0lRqb>dk9ctce2U(1cjf)22;=B*IS0M?;h$ zpO6u~)zFghH^Vk3i$PN(1Q7BKTp*uvF!BkQ_nn6T( zjJ%LoiC4^q1(A&0m>Pgg_BY^Fblo`BhV+~z+!Dh92O)mT;?JojQd+iEw+kho~?our)wBFnhvKD z49e@T3q5I-Os~3=WtLn1cA)~yHtVeavp*`!MXN~qF&?$m;vfRHHo|i)66uAj-iqqX z1fK`V;qE>tP_aBOhBMH++vouq)q zm=H&tt+v;=l%2dGXv8hX7HrGX#okVr#GWLR%g9W(azLfJn0_#EFzP07iI}h(}aY?X);2zC@kEw{V*%i$usM zHf9`GAV7{fF0~_5(ZVAnyHNQGZ`r`s-Gmjt3SA|`dp3nHwvr36eB~U5-5rgQ?GAzf(=njb_C4|p zYVtjUPEN}nSntm2zY-zrZwK>Bigq9sJ$E-zg*^(Wn;^9}YT{IoAck zO{p@VFeX7K>U9fLFQ}1=36p)4kb)x_bSM$ zI^YTpIU_OTYeI)^BmfQn`XOHZ=^|7TM}o6Wu?gz?z~7SKI5c2s2Er@TR3Z@vqypu9CwSai(_gn2C!3d8+Jy(KcsrVEk+|hP#*tgdwbya0CE=zdh}amh9PR5(gS7 znXYOZIbs(hu;r7W zwl6lMAeNU~rM3_-tI=^#0|Dqrf5O5gFKU3ApbAt#tSN&VmY|ES>rfUupv-RWk#)r! z+!Md4LoE`}Oer`cE^jE$7GNTUm%P@i29O9P051>#9bq7XM;ATR(@>!x&k#{~hlVy3 zG$$bs3?(2vuO)&sW7Eo9DA+K7KCR?Uy_7*BF#{PTUL^`Lsva6FahoyJ<&mwMXe4J! R)0*1!rZ~;1PAL!p06VE)%}oFR diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/community/ROMCache/ExploreTitle.gif b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/community/ROMCache/ExploreTitle.gif deleted file mode 100644 index 29cdd034d8f20da8e56c909d5a1db9e753802047..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1466 zcmV;r1x5NtNk%w1VG{vJ0HXf@{{R60|NsC0|NsC0|NsC0|NsC0{{R30A^8LW00000 zA^!_Oa&%>FX>%Y!Oi%_05EvjRFaRt70000J0Z0G<1OEuRVE!;l6V{A_m1|buQ;{*s z06G<^u8Odo50SFV3p)itH}^H~z@Tsl>|F$w6LMj?c#M!G6ZRttppZgU)x=6kSPXGY zF7G~(FF-J`QApiKfriFy*AXosARtK8C4XiLZUzJcKWrQ$K!ps7X><~ddyo&5gPEE; zS8_Cd4uGH!fDE2AZkPatcM&>fotHo^AwhKxE2AhhvA8TXy>qAz!Fjw7Kyj}m zZpP3M!9m4DaS(T=5G>I<5j&vI!{wW|(kp1>3%v%VJOg+DF3yyCkPb#0sLTnkyB$;7N*MrvD$ph5%JWVv(g$L4_#wl@xb!#XXUs zg2bt&%OHR_8oh-i<53<+W-N3)gxHdX37aXCvOotUz`#{2=^^C;VJM!RH=~Tfxp2a^ zs8l1u{CGyG*;!y=jZ{EN$jqhT;AkDfbW@?CV8oKByCUt`zgGN~ar3OnRE*SExI_Hl zDT$23y!O@mNHAN%!5Mc9XD&+e6bm$e9W9G4bt&#!5U)P<>jr^3eJ-g#S3o2NWsuX!cu21oQReoEo?xQBNVDOT{LWj3MkswSgI(u+(F%tuFXoe`5qR#q$D)28#PH-=AQ(5K?dOc%V^qM!LwX_0t zkaYBwWbBIF9NT@(wc12+D>P?V`m!~wM@wiEC^QM(Bfw6dJlP0N&&EvIV;{T%-O2(0(q(p^j4lbLzu0nW9Wi% za{VCnd5M0D-ZJU^9@><=xzw#w(+I|vP0hAotFYW!9>~{Eu5NuQ(|FZ^xga58E;jK! zK6Je1dy`u@+xszpmA?VmpnIoPDcO!CT_>C$kK0XsJR*}-#G!Sznyg^ei zcmWL}2?WUzp=1{55&_uohB(Zj4wt}(9Uc%%J`AD{b7c!58gW^Q;vWIpbVSG4@DNKp zq7Z3F#VT6yidf8|7HPN0#V&gBi(m|+7{^G)GMe#>XiTFT*T}{;y77&0jH4XqNXI(b z@s4=RqaOFj$3FV;kAMuMAO}gvLK^arh)kp+7s<#*I`WZ_jHDzdNy$oD@{*X$q$W4X U$xeFmlb{TxC`U=kOC|sSJCcX3`~Uy| diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/community/ROMCache/SiteShowcase.gif b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/community/ROMCache/SiteShowcase.gif deleted file mode 100644 index f20e70293ed85429ab821f56447dc5edb2702983..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 875 zcmV-x1C;znNk%w1VU7SF0K@mG&D3bGczzSFfA=DEG#T5D=Q@>B>(^b z000000000000000EC2ui0FD43000I5peBxFX`X1Ru59bRa4gSsZQppV?|kq7z@TtQ zEE{Mpp*Oa-iz1 zVkHX#0$C$r1!*x;1Op@q0SSizl#~UNm69wL0s#dEBvTC{lqC!S0tB8UsFRbUBdU#; zp{pbfs0Es&l>x9X5&?G_a3YYq#*rnWFbe@$#cIC1C1q&_0e>1(61=cwR%RmFB4q+4 zecjO-r8Kz6$?(U^(=U*}uhb(B0iYWE{xl$%#_t)aDwDdIuuy5;loRb{FhuxBSw(ov zUYw$nk6i!~3M{faC&HN|XX0@G4I@R;1g?xC29nc9LzTi2^DffEw<&<5oiqhzn^Y{= zoq+@{g)~IWmWg8`HJn;GBI1mYR5j$p8Fibm1PN}gz{XUXf(E!gcJ%s7z@-8M4xAgP zNW)7Meb@yQ(MhaFu<%@P3LtiCJbIOQroi)~-{|Hdwb}O4%s~z*?1D@3cu=nK3&pvFhQTzN~zqrNK!+G}ESGzR1lsXrIW0 zN1Vd8T9~+fyGOh`&C{?|8hx}OM_n66nP?fULQ*iI6NzAy;0)+gmR;j;z3K<^{C&o$ zUE^U?-U|ak2a8oxiLhVrH9m=eO>`uv!kSP?O~H`}ssvXy?0wKajMfMF1Yw0-Itzdbx=_xYdJBeAR!10 zR24-TI*0%^R9V7BeJnW8i9tS=kX$b{s(_LJbv5Ua2?P0*rfz>Q6qsFK(h^KS*eKKo z73+jHCkv}3VS!?Ty*a|5(KO)KEsLfgfuT@DD(R$@R%+>`m}aW!rkr-_X%Y~GD(a}D zmTKy$r#=ut1QSr;>Z`EE`sxH1U|{R5w`Nd*tgzOK>#xAtTI&VG7Hh1rF*FbY06Q|A Bba?;( diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/community/ROMCache/news_icon.gif b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/community/ROMCache/news_icon.gif deleted file mode 100644 index 656be1cb588500cb2772b3405eae461181fb882f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1934 zcmV;92XXjENk%w1VMYKn0E7Sl-_^aZmS!$2CZ~L1aBErDyL{cmkI1ffXE-k{9va=i zguB4Zc;MM`~Guh^{i15kFF!_Mt8F5`ZWg9O5EyWfz(dmz6B z1q85wbD>`#eROmj6FwUQ5(sM$4Gt0m4RUM^4Qq>)5C|LqoF7Ckp9qze5~Pg?g*^`o zmIw|I9BT*=5+9V8bOfax51k)*VNDHfh{Fw{4jMim8^g2`4!wsCuFi@B8#gPQoGcw* z1UEu$m5R@ZKNo6k&{Eg{R=;dq+Ckhb0v6uf0@M!2q97~~RVfvZ53DdjdqCmCfC@J@ zJg_5<3pX6!!U=gnfQ=jprOeHOkiZ87548RiHL$>}f=dh!2Ee3euU8On8b7%x=Lmr) znTjNo>|ucdNRSN#baKfQ14MfkyJfubO-0oX*eFcdYG6Zz4H&e2lYw9ZBQ_FjY+za; zK!6GpFWU1a&Vq%j9XR9-prCJG1Arq$@IY8ACkhV;oajIylTQc^=((NzR*AiCD>SzF zcDI9s4h`}a@cTEgV8R}>PWf;m0m?}TSgv(RIj*l?Vmf{4Y(cMY4t)Ir9v&eBYSk1r zyfD!?D76n122h@ifk3Z}E9~H_iXd-q4jcxIE^Q!#dE=?mZ%}R`L3BomBF~;4z_uqm znZ0$+3m$y$1>-3&9AM@ZM!^O70RCXX2>?8Ei~~wML|*{mh~WuK`Q?$<1pzD&zy*8+ zP(XmgorfL;U)a>a35UQ3fn96SH_`_oX@LgJRIwZhR?x!8N&rk408Ck6bkzquX6Ykpuwoj96CZwmayU8gbQHcDx_EZvVx9v7T}?X1q3hwUj-0y0Rt0kfL>~3GQeI5 z%wTfN1dUF2YpV-HyTB@G{_JRHt_cW$>i`;z*Fm=xBrvK77$C<47Ymj^$1%4g(5$l^ zb_i{>)*b-h0RcFG>xhH;wP0XiRp(wqB0xuhV#pdbi3H5v3a^LKM*ATl3-Fl0ojp2W z!FZZ_D%e*H7@W;v9{gH@1PVYiio29K4Dp8-NE>bic519;0TU!J8U_=tlURc27L%`WYraOXbv`~Y909d-kb<7J4O8KC`ac%eK z2YmbVo+1M2<$}uSbAc6uGKAWSC76|nPtk1P)}S1Es7wGH04^=e8rTb>1rC5dVqXhf zAg(?Y9A}smtQT2=dyEhinbHB&9W&mdYfwSO0JO`^dc-|oS-@wW0t*2w&@>G&=4^r~ z6A2oFmP}j#e_ZQ8yfi?71$?Um6$`)%K&Q14ao`09ESv#wpn=KZ2PSus0;nQ@0aIP9 zg0A=g{;(IV1YB$Z-NPM-Xoay0EXV@ID*y`z_K%WM#gK-v%miA9Bm0&bbW1du3z zA4W?6>ahM(#YU8`Ee4K^7MQ@-R9K)V4vhk!>Wb?`pd?CAViRuZp5+p-KZ!+*N8Fp- z+{m~$3k0ro#TnKU;RnY+MZf@aWWXxqKnYDWOOLpV7`<#YIxya;fC=CLkARec^0+T? za1;z+5H^AVEPxb?0D!~(7cXhqD_W!Lo1QeKj`NY{aEMb4{0I{$z?f_V4uNGNn&mQ0 zM$2!|EMb63SDwR_?TxAY*-%8_%1k)GAB}p}%baN|0AUPIKr$U_7O5H!I1(^5Bmpzn z;1gF+;90fQ0P5xihIdeDho=2|1X*p&ce_}?)_fRa);#wV4$#aZL?&2M&b2nle2 z4;AZF29)HnTC`lIkT}2~ zBPfLBOvL~>IMt~+W2|C#yI7~{HnE8N@wi*TpV$N5x&s!XN|yJMT0iKL7v# diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/templates/ROMCache/AroundTownIcon2.gif b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/templates/ROMCache/AroundTownIcon2.gif deleted file mode 100644 index 396f1b3c3eac7ff7feab29ec1e745684ae11f34d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4857 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 G@cBPG8tn@J diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/templates/ROMCache/Chat.gif b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/templates/ROMCache/Chat.gif deleted file mode 100644 index b2ef4027ec873162617fcad9d3d93ba7a4fd8620..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2110 zcmcJNi#yW`1Au?~?M|C*wwe28GfOTb*ElsxX)ZNF!Y48g5<4BaM4cIGqL|1vhZN(i znsAVuW=Uk#Bq>s(^pHA*>3rvp_})L@eV+GuULW30H}{xeAQ-p|03`dp7cN{d zG_$+S9B?(PQu z5755BAOK(n*!<)ErwKr;b4rA}Y>Y~VFC7_4-twzPmgajU{Mu7_`sn*(x3nz>{js&D zKsfaJLXXFp%$pr}TkM7cZ4QZoC8vt>@>7fnXe1ૅhAT3KZCmP|3&hS7a9&@gt z3`?Y-vueC`aEex1l%&ftUB(pyBCw6pAoO zAWjkWCsA}N_ScjO3a%;|G-&KG@B3pM{}})D*)(a*&~R#nhQ(4Duw7}M0oL;lAJ6^Xju^pZB4sthw7&(mXiUsEa3~ z1_iF450{eL{sSDe^poJNl4^PSEdjcGcWno5NwjAZayQo3{V~h_5+U|QpKQ;|y)pwk zZ;TLKl54Fa-n!IQHt$i%yAxWspKKM}2?3FI&MW2RJuKIp;T@ApGnp~hMlL0OxmKVn zc7RcnC)njK`StTbo}IFp^Z3QZxT(nxacW&etX54O*GCi@*fVD)>^z6rmM@#?#vI=O zx@5Ioh3rd&6-X$F_y79o!(-pCZ#HMU*sk2KtuAqjR#NpF#BZ$M%uKsRB@Mi{wTxJO zH?JJ2{F(VZhxf@#H{k9x!YDz(fl+&qbxEqkeWAxi$6KmT+?W0sML^(G^}hIZ4j+KP z0GtJYwBaKq{~JT>`Eg{QbSud%&LsKXM%M_N;jm#?LaGyI5`h*;<|F_Sje~#yTZyoV zzZ-stZ`qIwADQ==&3wHvFaKm3ywC!GYXdn_KtsD&hL!LG(zCn15D{<&Cl@}vc*@JB za5@>E4g&6R*AC3cAI7x<;Vt5Cc%k6hRj#Ac%Kxng#`y9i+g-c z9!lsB5CXgET_9A`fk775H9_Ep&jnr(5Lc=M(F|ek8P_kTPk}WDdqPm&y{q#GjMjo{ z*Z0~{B|+Eie+|(23IMuY$H)s#W^5NoUq&7CZ(jeeX>L8OkC6cB5-zVuQRd&c@zM>Y z`$bTEW)|QmND=|CS7p5raFirjq%0b>pQhemP{arUQ=#d=7VuM1P~v`NqbWbfwiJol ztgZqWiUGj%fZtoB{?lihn6d1JeBO!c0!TFuCQ*8Po-&?8m}=)7z)h!0M*&=Ljshk) zs}T(mgr&mVtYe%P&3Wv{qy4>ZP9IWjn_A=Bu)*V>deClcCD@u0?W{0Tr~7*ixxz^KbhC_g8RN!JN-gqGDGOB*>;k9&_gz)0rt|Jnhv)Zxfou&gYiizoQ{ zChJJ0H#-VnocVYTR3X9rRpxVle^5+_ z@7dh9C%a;PP(sb}Rpz*FLwL^><6zG?hH2Igw4xX+f8JzcyK&U|a7tdNg9MVygdVcem}n zTY5n)Q_8MJ-aGd^?c7m2EfaPpya3_u{V+0jTWI2fE4|hK7nfBp!V&}tI^4av@)JW=WyW=C8C>|Qx-mczzqba14%+!mzA3=XaeNwRXb90b2KYXl= z{4uTB<(OpA>S(@>qr^FN19fR{HYr55_A%u&s|0{8LADWfNeR?EU?F_6eccg4(Y$p4 zHo*p(X?|6h3o&0qA07y5wO%2r676flnUp6A-2mW1O>F7SGmXCsTMvOw@n=0fmDiPV zZHSt<(_UhNe56YZ0cU}<1k8=GD=G+q3yJ#EvF~3A5lAZg;4TZXs~obRM7}uqV)cAJ z`0C0t{}~TBs#pom)6mB|go7yJVAEd}S78~2Gk{MF=7EEPoU`Z$U+vzEeV{V`WISu_ jNv$Lefmxe#3SJ&ryG_NmOMLw22(@d2taL6806hK%x`|56 diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/templates/ROMCache/CommunityBanner.gif b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/templates/ROMCache/CommunityBanner.gif deleted file mode 100644 index ad1781dd1bc8908090392f95b230960eba7d48bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1671 zcmV;226*{LNk%w1VK)Hs0JHx9z`(#E7#JxS5IHF!N--fqDHx1WDRV+0tz$8zV=+=O z7=%(OV?rS@ArJrn00000A^8LW00000EC2ui05<^g000F45XecZy*TU5yZ={EfMh8J z3}UWbpr~w&p$HMk_(UVgQQSFJfKX#35C%pA7zEKKgavOwST;RFn2vDlDVW#HfPoos z6A8vI%o-ey3niGnX%q^^#-5+Bg>vSy&=X5Uf97gu)DI`Yk+FBk8Bv3|g zABX}5!r^FOry(8$b_zJ0D6yhIfH4{@sAZsItpo}GL3R|$ab&GSK@dtBCaUEy9zhxy zfJL)rO?L!*bNwJCdE)oM3EjPIw0sYcr1uO6_;edSd z5P0R#(Ab|PXgjG*n>OrN4R*>^ZQyFb0lRqb>dk9ctce2U(1cjf)22;=B*IS0M?;h$ zpO6u~)zFghH^Vk3i$PN(1Q7BKTp*uvF!BkQ_nn6T( zjJ%LoiC4^q1(A&0m>Pgg_BY^Fblo`BhV+~z+!Dh92O)mT;?JojQd+iEw+kho~?our)wBFnhvKD z49e@T3q5I-Os~3=WtLn1cA)~yHtVeavp*`!MXN~qF&?$m;vfRHHo|i)66uAj-iqqX z1fK`V;qE>tP_aBOhBMH++vouq)q zm=H&tt+v;=l%2dGXv8hX7HrGX#okVr#GWLR%g9W(azLfJn0_#EFzP07iI}h(}aY?X);2zC@kEw{V*%i$usM zHf9`GAV7{fF0~_5(ZVAnyHNQGZ`r`s-Gmjt3SA|`dp3nHwvr36eB~U5-5rgQ?GAzf(=njb_C4|p zYVtjUPEN}nSntm2zY-zrZwK>Bigq9sJ$E-zg*^(Wn;^9}YT{IoAck zO{p@VFeX7K>U9fLFQ}1=36p)4kb)x_bSM$ zI^YTpIU_OTYeI)^BmfQn`XOHZ=^|7TM}o6Wu?gz?z~7SKI5c2s2Er@TR3Z@vqypu9CwSai(_gn2C!3d8+Jy(KcsrVEk+|hP#*tgdwbya0CE=zdh}amh9PR5(gS7 znXYOZIbs(hu;r7W zwl6lMAeNU~rM3_-tI=^#0|Dqrf5O5gFKU3ApbAt#tSN&VmY|ES>rfUupv-RWk#)r! z+!Md4LoE`}Oer`cE^jE$7GNTUm%P@i29O9P051>#9bq7XM;ATR(@>!x&k#{~hlVy3 zG$$bs3?(2vuO)&sW7Eo9DA+K7KCR?Uy_7*BF#{PTUL^`Lsva6FahoyJ<&mwMXe4J! R)0*1!rZ~;1PAL!p06VE)%}oFR diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/templates/ROMCache/ExploreTitle.gif b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/templates/ROMCache/ExploreTitle.gif deleted file mode 100644 index 29cdd034d8f20da8e56c909d5a1db9e753802047..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1466 zcmV;r1x5NtNk%w1VG{vJ0HXf@{{R60|NsC0|NsC0|NsC0|NsC0{{R30A^8LW00000 zA^!_Oa&%>FX>%Y!Oi%_05EvjRFaRt70000J0Z0G<1OEuRVE!;l6V{A_m1|buQ;{*s z06G<^u8Odo50SFV3p)itH}^H~z@Tsl>|F$w6LMj?c#M!G6ZRttppZgU)x=6kSPXGY zF7G~(FF-J`QApiKfriFy*AXosARtK8C4XiLZUzJcKWrQ$K!ps7X><~ddyo&5gPEE; zS8_Cd4uGH!fDE2AZkPatcM&>fotHo^AwhKxE2AhhvA8TXy>qAz!Fjw7Kyj}m zZpP3M!9m4DaS(T=5G>I<5j&vI!{wW|(kp1>3%v%VJOg+DF3yyCkPb#0sLTnkyB$;7N*MrvD$ph5%JWVv(g$L4_#wl@xb!#XXUs zg2bt&%OHR_8oh-i<53<+W-N3)gxHdX37aXCvOotUz`#{2=^^C;VJM!RH=~Tfxp2a^ zs8l1u{CGyG*;!y=jZ{EN$jqhT;AkDfbW@?CV8oKByCUt`zgGN~ar3OnRE*SExI_Hl zDT$23y!O@mNHAN%!5Mc9XD&+e6bm$e9W9G4bt&#!5U)P<>jr^3eJ-g#S3o2NWsuX!cu21oQReoEo?xQBNVDOT{LWj3MkswSgI(u+(F%tuFXoe`5qR#q$D)28#PH-=AQ(5K?dOc%V^qM!LwX_0t zkaYBwWbBIF9NT@(wc12+D>P?V`m!~wM@wiEC^QM(Bfw6dJlP0N&&EvIV;{T%-O2(0(q(p^j4lbLzu0nW9Wi% za{VCnd5M0D-ZJU^9@><=xzw#w(+I|vP0hAotFYW!9>~{Eu5NuQ(|FZ^xga58E;jK! zK6Je1dy`u@+xszpmA?VmpnIoPDcO!CT_>C$kK0XsJR*}-#G!Sznyg^ei zcmWL}2?WUzp=1{55&_uohB(Zj4wt}(9Uc%%J`AD{b7c!58gW^Q;vWIpbVSG4@DNKp zq7Z3F#VT6yidf8|7HPN0#V&gBi(m|+7{^G)GMe#>XiTFT*T}{;y77&0jH4XqNXI(b z@s4=RqaOFj$3FV;kAMuMAO}gvLK^arh)kp+7s<#*I`WZ_jHDzdNy$oD@{*X$q$W4X U$xeFmlb{TxC`U=kOC|sSJCcX3`~Uy| diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/templates/ROMCache/SiteShowcase.gif b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/templates/ROMCache/SiteShowcase.gif deleted file mode 100644 index f20e70293ed85429ab821f56447dc5edb2702983..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 875 zcmV-x1C;znNk%w1VU7SF0K@mG&D3bGczzSFfA=DEG#T5D=Q@>B>(^b z000000000000000EC2ui0FD43000I5peBxFX`X1Ru59bRa4gSsZQppV?|kq7z@TtQ zEE{Mpp*Oa-iz1 zVkHX#0$C$r1!*x;1Op@q0SSizl#~UNm69wL0s#dEBvTC{lqC!S0tB8UsFRbUBdU#; zp{pbfs0Es&l>x9X5&?G_a3YYq#*rnWFbe@$#cIC1C1q&_0e>1(61=cwR%RmFB4q+4 zecjO-r8Kz6$?(U^(=U*}uhb(B0iYWE{xl$%#_t)aDwDdIuuy5;loRb{FhuxBSw(ov zUYw$nk6i!~3M{faC&HN|XX0@G4I@R;1g?xC29nc9LzTi2^DffEw<&<5oiqhzn^Y{= zoq+@{g)~IWmWg8`HJn;GBI1mYR5j$p8Fibm1PN}gz{XUXf(E!gcJ%s7z@-8M4xAgP zNW)7Meb@yQ(MhaFu<%@P3LtiCJbIOQroi)~-{|Hdwb}O4%s~z*?1D@3cu=nK3&pvFhQTzN~zqrNK!+G}ESGzR1lsXrIW0 zN1Vd8T9~+fyGOh`&C{?|8hx}OM_n66nP?fULQ*iI6NzAy;0)+gmR;j;z3K<^{C&o$ zUE^U?-U|ak2a8oxiLhVrH9m=eO>`uv!kSP?O~H`}ssvXy?0wKajMfMF1Yw0-Itzdbx=_xYdJBeAR!10 zR24-TI*0%^R9V7BeJnW8i9tS=kX$b{s(_LJbv5Ua2?P0*rfz>Q6qsFK(h^KS*eKKo z73+jHCkv}3VS!?Ty*a|5(KO)KEsLfgfuT@DD(R$@R%+>`m}aW!rkr-_X%Y~GD(a}D zmTKy$r#=ut1QSr;>Z`EE`sxH1U|{R5w`Nd*tgzOK>#xAtTI&VG7Hh1rF*FbY06Q|A Bba?;( diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/templates/ROMCache/news_icon.gif b/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/templates/ROMCache/news_icon.gif deleted file mode 100644 index 656be1cb588500cb2772b3405eae461181fb882f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1934 zcmV;92XXjENk%w1VMYKn0E7Sl-_^aZmS!$2CZ~L1aBErDyL{cmkI1ffXE-k{9va=i zguB4Zc;MM`~Guh^{i15kFF!_Mt8F5`ZWg9O5EyWfz(dmz6B z1q85wbD>`#eROmj6FwUQ5(sM$4Gt0m4RUM^4Qq>)5C|LqoF7Ckp9qze5~Pg?g*^`o zmIw|I9BT*=5+9V8bOfax51k)*VNDHfh{Fw{4jMim8^g2`4!wsCuFi@B8#gPQoGcw* z1UEu$m5R@ZKNo6k&{Eg{R=;dq+Ckhb0v6uf0@M!2q97~~RVfvZ53DdjdqCmCfC@J@ zJg_5<3pX6!!U=gnfQ=jprOeHOkiZ87548RiHL$>}f=dh!2Ee3euU8On8b7%x=Lmr) znTjNo>|ucdNRSN#baKfQ14MfkyJfubO-0oX*eFcdYG6Zz4H&e2lYw9ZBQ_FjY+za; zK!6GpFWU1a&Vq%j9XR9-prCJG1Arq$@IY8ACkhV;oajIylTQc^=((NzR*AiCD>SzF zcDI9s4h`}a@cTEgV8R}>PWf;m0m?}TSgv(RIj*l?Vmf{4Y(cMY4t)Ir9v&eBYSk1r zyfD!?D76n122h@ifk3Z}E9~H_iXd-q4jcxIE^Q!#dE=?mZ%}R`L3BomBF~;4z_uqm znZ0$+3m$y$1>-3&9AM@ZM!^O70RCXX2>?8Ei~~wML|*{mh~WuK`Q?$<1pzD&zy*8+ zP(XmgorfL;U)a>a35UQ3fn96SH_`_oX@LgJRIwZhR?x!8N&rk408Ck6bkzquX6Ykpuwoj96CZwmayU8gbQHcDx_EZvVx9v7T}?X1q3hwUj-0y0Rt0kfL>~3GQeI5 z%wTfN1dUF2YpV-HyTB@G{_JRHt_cW$>i`;z*Fm=xBrvK77$C<47Ymj^$1%4g(5$l^ zb_i{>)*b-h0RcFG>xhH;wP0XiRp(wqB0xuhV#pdbi3H5v3a^LKM*ATl3-Fl0ojp2W z!FZZ_D%e*H7@W;v9{gH@1PVYiio29K4Dp8-NE>bic519;0TU!J8U_=tlURc27L%`WYraOXbv`~Y909d-kb<7J4O8KC`ac%eK z2YmbVo+1M2<$}uSbAc6uGKAWSC76|nPtk1P)}S1Es7wGH04^=e8rTb>1rC5dVqXhf zAg(?Y9A}smtQT2=dyEhinbHB&9W&mdYfwSO0JO`^dc-|oS-@wW0t*2w&@>G&=4^r~ z6A2oFmP}j#e_ZQ8yfi?71$?Um6$`)%K&Q14ao`09ESv#wpn=KZ2PSus0;nQ@0aIP9 zg0A=g{;(IV1YB$Z-NPM-Xoay0EXV@ID*y`z_K%WM#gK-v%miA9Bm0&bbW1du3z zA4W?6>ahM(#YU8`Ee4K^7MQ@-R9K)V4vhk!>Wb?`pd?CAViRuZp5+p-KZ!+*N8Fp- z+{m~$3k0ro#TnKU;RnY+MZf@aWWXxqKnYDWOOLpV7`<#YIxya;fC=CLkARec^0+T? za1;z+5H^AVEPxb?0D!~(7cXhqD_W!Lo1QeKj`NY{aEMb4{0I{$z?f_V4uNGNn&mQ0 zM$2!|EMb63SDwR_?TxAY*-%8_%1k)GAB}p}%baN|0AUPIKr$U_7O5H!I1(^5Bmpzn z;1gF+;90fQ0P5xihIdeDho=2|1X*p&ce_}?)_fRa);#wV4$#aZL?&2M&b2nle2 z4;AZF29)HnTC`lIkT}2~ zBPfLBOvL~>IMt~+W2|C#yI7~{HnE8N@wi*TpV$N5x&s!XN|yJMT0iKL7v# diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/ROMCache/S40H1.gif b/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/ROMCache/S40H1.gif deleted file mode 100644 index b8973a1b00bd793b6ab70e59c50d1c2630b0a3cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84 zcmZ?wbhEHbWMp7tSj52ap8*}L3IvHL{$ybU)Bm|0i%L>+Gm8}*eF9ho3=%pR7<51~ PAOjefSv;(SI2o(~D^d)n diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-head-waiter/choose-user.js b/zefie_wtvp_minisrv/ServiceVault/wtv-head-waiter/choose-user.js index 7ec8377c..4cd4a75f 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-head-waiter/choose-user.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-head-waiter/choose-user.js @@ -41,15 +41,14 @@ Choose your name - - - - - + + +
diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-home/Credits-Privacy.js b/zefie_wtvp_minisrv/ServiceVault/wtv-home/Credits-Privacy.js index 77d82638..d1a86b83 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-home/Credits-Privacy.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-home/Credits-Privacy.js @@ -17,7 +17,7 @@ ${minisrv_config.config.service_name} Service Privacy Statement @@ -252,7 +252,7 @@ ${strftime("%a, %b %e, %Y, %I:%M %P", new Date(message.date * 1000))} (UTC) To:
- +
@@ -30,10 +30,10 @@ ${minisrv_config.config.service_name} Service Privacy Statement
- +
- +
diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/readmail.js b/zefie_wtvp_minisrv/ServiceVault/wtv-mail/readmail.js index 2369c79c..8ad05e21 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/readmail.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-mail/readmail.js @@ -53,7 +53,7 @@ xnocancel> -${html_entities.encode((message.subject) ? message.subject : '(No subject)')} +${(message.subject) ? wtvshared.htmlEntitize(message.subject) : '(No subject)'} `; if (message.from_name != message.from_addr) { - data += `${html_entities.encode(message.from_addr)} (${html_entities.encode(message.from_name)})`; + data += `${wtvshared.htmlEntitize(message.from_addr)} (${wtvshared.htmlEntitize(message.from_name)})`; } else { - data += `${html_entities.encode(message.from_addr)}`; + data += `${wtvshared.htmlEntitize(message.from_addr)}`; } data += `
-${html_entities.encode(message.to_addr)} ${(html_entities.encode(message.to_name)) ? '(' + html_entities.encode(message.to_name) + ')' : ''} +${wtvshared.htmlEntitize(message.to_addr)} ${(message.to_name) ? '(' + wtvshared.htmlEntitize(message.to_name) + ')' : ''}
Subject: @@ -260,7 +260,7 @@ Subject: if (typeof message.subject == "object") message.subject = new Buffer.from(message.subject).toString('latin1'); data += ` -${html_entities.encode((message.subject) ? message.subject : '(No subject)')} +${(message.subject) ? wtvshared.htmlEntitize(message.subject) : '(No subject)'}
@@ -270,22 +270,22 @@ ${html_entities.encode((message.subject) ? message.subject : '(No subject)')}

`; - if (typeof message.body == "object") { + if (typeof message.body === "object" && message.body) { message.body = wtvshared.decodeBufferText(message.body); } data += ` -${html_entities.encode(message.body).replace(/\n/gi, "
").replace(/\r/gi, "").replace(/'/gi, "'")} +${wtvshared.htmlEntitize(message.body, true)}

`; if (message.signature) { data += ssid_sessions[socket.ssid].mailstore.sanitizeSignature(message.signature); } -data += `

+ data += `

`; if (message.attachments) { message.attachments.forEach((v, k) => { if (v) { - console.log("*****************",v['Content-Type']); + console.log("*****************", v['Content-Type']); switch (v['Content-Type']) { case "image/jpeg": data += `

`; @@ -293,7 +293,7 @@ data += `

case "audio/wav": data += `
-  Recording +  Recording


`; @@ -302,7 +302,7 @@ data += `

} }); } -data += `

+ data += `

diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/sendmail.js b/zefie_wtvp_minisrv/ServiceVault/wtv-mail/sendmail.js index 31ea27bf..377f86cb 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/sendmail.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-mail/sendmail.js @@ -71,10 +71,10 @@ Content-Type: audio/wav`; 'noback': true, }).getURL(); - if (request_headers.query.sendoff == "Send" || request_headers.query.saveoff || request_headers.query.get_snap || request_headers.query.get_gab) { + if ((typeof request_headers.query.sendoff !== 'undefined' && request_headers.query.sendoff != false) || request_headers.query.saveoff || request_headers.query.get_snap || request_headers.query.get_gab) { var from_addr = address; var signature = ssid_sessions[socket.ssid].getSessionData("subscriber_signature") || null; - if (request_headers.query.sendoff == "Send") { + if (typeof request_headers.query.sendoff !== 'undefined' && request_headers.query.sendoff != false) { var attachments = []; @@ -459,30 +459,30 @@ USESTYLE NOARGS> if ((request_headers.query.snapping && request_headers.query.snapping !== 'false') || mail_draft_attachments.message_snapshot_data) { data += ` - +
- + - +
- + - + - + - + - + - + - +
`; if (!mail_draft_attachments.message_snapshot_data) { @@ -502,51 +502,51 @@ USESTYLE NOARGS>
- Detach  + Detach 
- + `; } if ((request_headers.query.gabbing && request_headers.query.gabbing !== 'false') || mail_draft_attachments.message_voicemail_data) { data += `
- + - +
- +
- +
- + - +
- + - + - + - + - + - + - +
-  Recording +  Recording - Detach  + Detach 
- +
`; } diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-setup/accounts.js b/zefie_wtvp_minisrv/ServiceVault/wtv-setup/accounts.js index 229ed581..0ca7ea10 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-setup/accounts.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-setup/accounts.js @@ -22,7 +22,7 @@ Users setup
- + - +
- +
- +
@@ -35,10 +35,10 @@ Users setup
- +
- +
@@ -96,14 +96,14 @@ Subscriber:
- +
- +
@@ -114,11 +114,11 @@ Subscriber: = 1) ? 'USESTYLE' : 'disabled="disabled" text=gray' } TYPE=SUBMIT BORDERIMAGE="file://ROM/Borders/ButtonBorder2.bif" NAME="Button1" WIDTH=103> - + = minisrv_config.config.user_accounts.max_users_per_account) ? 'disabled="disabled" text=gray' : 'USESTYLE'} TYPE=SUBMIT BORDERIMAGE="file://ROM/Borders/ButtonBorder2.bif" NAME="Button2" WIDTH=103> - +
- +
@@ -49,10 +49,10 @@ noscroll>
- +
- +
@@ -123,13 +123,13 @@ MAXLENGTH="${minisrv_config.config.passwords.max_length}">
- +
- +
diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-setup/validate-add-user.js b/zefie_wtvp_minisrv/ServiceVault/wtv-setup/validate-add-user.js index 8bf885f0..77258909 100644 --- a/zefie_wtvp_minisrv/ServiceVault/wtv-setup/validate-add-user.js +++ b/zefie_wtvp_minisrv/ServiceVault/wtv-setup/validate-add-user.js @@ -40,7 +40,7 @@ noscroll> - + @@ -53,10 +53,10 @@ noscroll>
- +
- +
@@ -154,13 +154,13 @@ user_password2=${request_headers.query.user_password2}">`; - + - + diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-star/ROMCache/HackTVLogoJewel.gif b/zefie_wtvp_minisrv/ServiceVault/wtv-star/ROMCache/HackTVLogoJewel.gif deleted file mode 100644 index 07a0f4b89f69c09aeab54c2d11da99fef40b5ca7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5845 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 diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-star/ROMCache/WebTVLogoJewel.gif b/zefie_wtvp_minisrv/ServiceVault/wtv-star/ROMCache/WebTVLogoJewel.gif deleted file mode 100644 index ec3e51dda32f57e973525802e2f85b72e7de23d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7459 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 XA&c5qT{hU11bMt+0g}mu259~tK^*wd diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/aroundtown/ROMCache/AT_BannerGradient.gif b/zefie_wtvp_minisrv/SharedROMCache/AT_BannerGradient.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/aroundtown/ROMCache/AT_BannerGradient.gif rename to zefie_wtvp_minisrv/SharedROMCache/AT_BannerGradient.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/aroundtown/ROMCache/AT_BannerIcon.gif b/zefie_wtvp_minisrv/SharedROMCache/AT_BannerIcon.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/aroundtown/ROMCache/AT_BannerIcon.gif rename to zefie_wtvp_minisrv/SharedROMCache/AT_BannerIcon.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/aroundtown/ROMCache/AT_BottomShadow.gif b/zefie_wtvp_minisrv/SharedROMCache/AT_BottomShadow.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/aroundtown/ROMCache/AT_BottomShadow.gif rename to zefie_wtvp_minisrv/SharedROMCache/AT_BottomShadow.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/aroundtown/ROMCache/AT_Shadow.gif b/zefie_wtvp_minisrv/SharedROMCache/AT_Shadow.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/aroundtown/ROMCache/AT_Shadow.gif rename to zefie_wtvp_minisrv/SharedROMCache/AT_Shadow.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-setup/ROMCache/AccountBanner.gif b/zefie_wtvp_minisrv/SharedROMCache/AccountBanner.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-setup/ROMCache/AccountBanner.gif rename to zefie_wtvp_minisrv/SharedROMCache/AccountBanner.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/ROMCache/AroundTownIcon2.gif b/zefie_wtvp_minisrv/SharedROMCache/AroundTownIcon2.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/ROMCache/AroundTownIcon2.gif rename to zefie_wtvp_minisrv/SharedROMCache/AroundTownIcon2.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-setup/ROMCache/BulletArrow.gif b/zefie_wtvp_minisrv/SharedROMCache/BulletArrow.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-setup/ROMCache/BulletArrow.gif rename to zefie_wtvp_minisrv/SharedROMCache/BulletArrow.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/ROMCache/Chat.gif b/zefie_wtvp_minisrv/SharedROMCache/Chat.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/ROMCache/Chat.gif rename to zefie_wtvp_minisrv/SharedROMCache/Chat.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/ROMCache/CommunityBanner.gif b/zefie_wtvp_minisrv/SharedROMCache/CommunityBanner.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/ROMCache/CommunityBanner.gif rename to zefie_wtvp_minisrv/SharedROMCache/CommunityBanner.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/DottedLine.gif b/zefie_wtvp_minisrv/SharedROMCache/DottedLine.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/DottedLine.gif rename to zefie_wtvp_minisrv/SharedROMCache/DottedLine.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/ROMCache/ExploreTitle.gif b/zefie_wtvp_minisrv/SharedROMCache/ExploreTitle.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/ROMCache/ExploreTitle.gif rename to zefie_wtvp_minisrv/SharedROMCache/ExploreTitle.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/FileImage.gif b/zefie_wtvp_minisrv/SharedROMCache/FileImage.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/FileImage.gif rename to zefie_wtvp_minisrv/SharedROMCache/FileImage.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/FileMovie.gif b/zefie_wtvp_minisrv/SharedROMCache/FileMovie.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/FileMovie.gif rename to zefie_wtvp_minisrv/SharedROMCache/FileMovie.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/FilePackage.gif b/zefie_wtvp_minisrv/SharedROMCache/FilePackage.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/FilePackage.gif rename to zefie_wtvp_minisrv/SharedROMCache/FilePackage.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/FileSound.gif b/zefie_wtvp_minisrv/SharedROMCache/FileSound.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/FileSound.gif rename to zefie_wtvp_minisrv/SharedROMCache/FileSound.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/FileText.gif b/zefie_wtvp_minisrv/SharedROMCache/FileText.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/FileText.gif rename to zefie_wtvp_minisrv/SharedROMCache/FileText.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/ROMCache/HackTVLogoJewel.gif b/zefie_wtvp_minisrv/SharedROMCache/HackTVLogoJewel.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/ROMCache/HackTVLogoJewel.gif rename to zefie_wtvp_minisrv/SharedROMCache/HackTVLogoJewel.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/ROMCache/HomeBanner.gif b/zefie_wtvp_minisrv/SharedROMCache/HomeBanner.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/ROMCache/HomeBanner.gif rename to zefie_wtvp_minisrv/SharedROMCache/HomeBanner.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/ROMCache/MSNLogo.gif b/zefie_wtvp_minisrv/SharedROMCache/MSNLogo.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/ROMCache/MSNLogo.gif rename to zefie_wtvp_minisrv/SharedROMCache/MSNLogo.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/PanelEdge.gif b/zefie_wtvp_minisrv/SharedROMCache/PanelEdge.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/PanelEdge.gif rename to zefie_wtvp_minisrv/SharedROMCache/PanelEdge.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/PaperBase.gif b/zefie_wtvp_minisrv/SharedROMCache/PaperBase.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/PaperBase.gif rename to zefie_wtvp_minisrv/SharedROMCache/PaperBase.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/PaperTop.gif b/zefie_wtvp_minisrv/SharedROMCache/PaperTop.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/PaperTop.gif rename to zefie_wtvp_minisrv/SharedROMCache/PaperTop.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/PaperTopFlat.gif b/zefie_wtvp_minisrv/SharedROMCache/PaperTopFlat.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/PaperTopFlat.gif rename to zefie_wtvp_minisrv/SharedROMCache/PaperTopFlat.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/ROMCache/PromotionLeftEdge.gif b/zefie_wtvp_minisrv/SharedROMCache/PromotionLeftEdge.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/ROMCache/PromotionLeftEdge.gif rename to zefie_wtvp_minisrv/SharedROMCache/PromotionLeftEdge.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/RemoveButton.gif b/zefie_wtvp_minisrv/SharedROMCache/RemoveButton.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-mail/ROMCache/RemoveButton.gif rename to zefie_wtvp_minisrv/SharedROMCache/RemoveButton.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/S20BV1.gif b/zefie_wtvp_minisrv/SharedROMCache/S20BV1.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/S20BV1.gif rename to zefie_wtvp_minisrv/SharedROMCache/S20BV1.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/S20BV2.gif b/zefie_wtvp_minisrv/SharedROMCache/S20BV2.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/S20BV2.gif rename to zefie_wtvp_minisrv/SharedROMCache/S20BV2.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/S20TH1.gif b/zefie_wtvp_minisrv/SharedROMCache/S20TH1.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/S20TH1.gif rename to zefie_wtvp_minisrv/SharedROMCache/S20TH1.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/S20TV1.gif b/zefie_wtvp_minisrv/SharedROMCache/S20TV1.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/S20TV1.gif rename to zefie_wtvp_minisrv/SharedROMCache/S20TV1.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/S20TV2.gif b/zefie_wtvp_minisrv/SharedROMCache/S20TV2.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/S20TV2.gif rename to zefie_wtvp_minisrv/SharedROMCache/S20TV2.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/S40H1.gif b/zefie_wtvp_minisrv/SharedROMCache/S40H1.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/S40H1.gif rename to zefie_wtvp_minisrv/SharedROMCache/S40H1.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/S40V1.gif b/zefie_wtvp_minisrv/SharedROMCache/S40V1.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/S40V1.gif rename to zefie_wtvp_minisrv/SharedROMCache/S40V1.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/S40V2.gif b/zefie_wtvp_minisrv/SharedROMCache/S40V2.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/S40V2.gif rename to zefie_wtvp_minisrv/SharedROMCache/S40V2.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/S60HS1.gif b/zefie_wtvp_minisrv/SharedROMCache/S60HS1.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/S60HS1.gif rename to zefie_wtvp_minisrv/SharedROMCache/S60HS1.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/S60HS2.gif b/zefie_wtvp_minisrv/SharedROMCache/S60HS2.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/S60HS2.gif rename to zefie_wtvp_minisrv/SharedROMCache/S60HS2.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/S60HS3.gif b/zefie_wtvp_minisrv/SharedROMCache/S60HS3.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/S60HS3.gif rename to zefie_wtvp_minisrv/SharedROMCache/S60HS3.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/S60HS4.gif b/zefie_wtvp_minisrv/SharedROMCache/S60HS4.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/S60HS4.gif rename to zefie_wtvp_minisrv/SharedROMCache/S60HS4.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/S60HS5.gif b/zefie_wtvp_minisrv/SharedROMCache/S60HS5.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/S60HS5.gif rename to zefie_wtvp_minisrv/SharedROMCache/S60HS5.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/SAdH1.gif b/zefie_wtvp_minisrv/SharedROMCache/SAdH1.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/SAdH1.gif rename to zefie_wtvp_minisrv/SharedROMCache/SAdH1.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/SAdH2.gif b/zefie_wtvp_minisrv/SharedROMCache/SAdH2.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/SAdH2.gif rename to zefie_wtvp_minisrv/SharedROMCache/SAdH2.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/SAdH3.gif b/zefie_wtvp_minisrv/SharedROMCache/SAdH3.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/SAdH3.gif rename to zefie_wtvp_minisrv/SharedROMCache/SAdH3.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-setup/ROMCache/SettingsBanner.gif b/zefie_wtvp_minisrv/SharedROMCache/SettingsBanner.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-setup/ROMCache/SettingsBanner.gif rename to zefie_wtvp_minisrv/SharedROMCache/SettingsBanner.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/ROMCache/Shadow.gif b/zefie_wtvp_minisrv/SharedROMCache/Shadow.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/ROMCache/Shadow.gif rename to zefie_wtvp_minisrv/SharedROMCache/Shadow.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/ShadowCorner.gif b/zefie_wtvp_minisrv/SharedROMCache/ShadowCorner.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/ShadowCorner.gif rename to zefie_wtvp_minisrv/SharedROMCache/ShadowCorner.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/ShadowH.gif b/zefie_wtvp_minisrv/SharedROMCache/ShadowH.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/ShadowH.gif rename to zefie_wtvp_minisrv/SharedROMCache/ShadowH.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/ShadowHCap.gif b/zefie_wtvp_minisrv/SharedROMCache/ShadowHCap.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/ShadowHCap.gif rename to zefie_wtvp_minisrv/SharedROMCache/ShadowHCap.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/ShadowHStart.gif b/zefie_wtvp_minisrv/SharedROMCache/ShadowHStart.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/explore/ROMCache/ShadowHStart.gif rename to zefie_wtvp_minisrv/SharedROMCache/ShadowHStart.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/ROMCache/SiteShowcase.gif b/zefie_wtvp_minisrv/SharedROMCache/SiteShowcase.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/ROMCache/SiteShowcase.gif rename to zefie_wtvp_minisrv/SharedROMCache/SiteShowcase.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/ROMCache/Spacer.gif b/zefie_wtvp_minisrv/SharedROMCache/Spacer.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/ROMCache/Spacer.gif rename to zefie_wtvp_minisrv/SharedROMCache/Spacer.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/using_webtv/ROMCache/UsingWebTVBanner.gif b/zefie_wtvp_minisrv/SharedROMCache/UsingWebTVBanner.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/using_webtv/ROMCache/UsingWebTVBanner.gif rename to zefie_wtvp_minisrv/SharedROMCache/UsingWebTVBanner.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/ROMCache/WebTVLogoJewel.gif b/zefie_wtvp_minisrv/SharedROMCache/WebTVLogoJewel.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/ROMCache/WebTVLogoJewel.gif rename to zefie_wtvp_minisrv/SharedROMCache/WebTVLogoJewel.gif diff --git a/zefie_wtvp_minisrv/SharedROMCache/ZefieTV.gif b/zefie_wtvp_minisrv/SharedROMCache/ZefieTV.gif new file mode 100644 index 0000000000000000000000000000000000000000..f5b0bc99168716194f205be0666df51629fc0012 GIT binary patch literal 4813 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 literal 0 HcmV?d00001 diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-guide/ROMCache/help/common/helpMastheadBlank.swf b/zefie_wtvp_minisrv/SharedROMCache/help/common/helpMastheadBlank.swf similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-guide/ROMCache/help/common/helpMastheadBlank.swf rename to zefie_wtvp_minisrv/SharedROMCache/help/common/helpMastheadBlank.swf diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-setup/ROMCache/kb.gif b/zefie_wtvp_minisrv/SharedROMCache/kb.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-setup/ROMCache/kb.gif rename to zefie_wtvp_minisrv/SharedROMCache/kb.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-setup/ROMCache/kb_alpha.gif b/zefie_wtvp_minisrv/SharedROMCache/kb_alpha.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-setup/ROMCache/kb_alpha.gif rename to zefie_wtvp_minisrv/SharedROMCache/kb_alpha.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/ROMCache/news_icon.gif b/zefie_wtvp_minisrv/SharedROMCache/news_icon.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-disk/content/DealerDemo/sim/ROMCache/news_icon.gif rename to zefie_wtvp_minisrv/SharedROMCache/news_icon.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-star/ROMCache/splash_logo_hacktv.gif b/zefie_wtvp_minisrv/SharedROMCache/splash_logo_hacktv.gif similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-star/ROMCache/splash_logo_hacktv.gif rename to zefie_wtvp_minisrv/SharedROMCache/splash_logo_hacktv.gif diff --git a/zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/ROMCache/up-arrows.swf b/zefie_wtvp_minisrv/SharedROMCache/up-arrows.swf similarity index 100% rename from zefie_wtvp_minisrv/ServiceVault/wtv-flashrom/ROMCache/up-arrows.swf rename to zefie_wtvp_minisrv/SharedROMCache/up-arrows.swf diff --git a/zefie_wtvp_minisrv/WTVShared.js b/zefie_wtvp_minisrv/WTVShared.js index 8928ffce..4e0c8eba 100644 --- a/zefie_wtvp_minisrv/WTVShared.js +++ b/zefie_wtvp_minisrv/WTVShared.js @@ -7,8 +7,9 @@ class WTVShared { path = require('path'); fs = require('fs'); + html_entities = require('html-entities'); // used externally by service scripts minisrv_config = []; - + constructor(minisrv_config) { if (minisrv_config == null) this.minisrv_config = this.readMiniSrvConfig(); else this.minisrv_config = minisrv_config; @@ -23,6 +24,12 @@ class WTVShared { } } + htmlEntitize(string, process_newline = false) { + string = this.html_entities.encode(string).replace(/'/g, "'"); + if (process_newline) string = string.replace(/\n/gi, "
").replace(/\r/gi, ""); + return string; + } + isASCII(str) { for (var i = 0, strLen = str.length; i < strLen; ++i) { if (str.charCodeAt(i) > 127) return false; @@ -327,10 +334,16 @@ class WTVShared { * @param {string} base Base path * @param {string} target Sub path */ - makeSafePath(base, target) { - target.replace(/[\|\&\;\$\%\@\"\<\>\+\,\\]/g, ""); - var targetPath = this.path.posix.normalize(target) - return this.fixPathSlashes(base + this.path.sep + targetPath); + makeSafePath(base, target = null) { + if (target) { + target.replace(/[\|\&\;\$\%\@\"\<\>\+\,\\]/g, ""); + var targetPath = this.path.posix.normalize(target) + return this.fixPathSlashes(base + this.path.sep + targetPath); + } else { + base.replace(/[\|\&\;\$\%\@\"\<\>\+\,\\]/g, ""); + var targetPath = this.path.posix.normalize(base) + return this.fixPathSlashes(base); + } } makeSafeUsername(username) { diff --git a/zefie_wtvp_minisrv/app.js b/zefie_wtvp_minisrv/app.js index 1a4e5e1c..53588faf 100644 --- a/zefie_wtvp_minisrv/app.js +++ b/zefie_wtvp_minisrv/app.js @@ -6,7 +6,6 @@ const zlib = require('zlib'); const http = require('http'); const https = require('https'); const strftime = require('strftime'); // used externally by service scripts -const html_entities = require('html-entities'); // used externally by service scripts const net = require('net'); const CryptoJS = require('crypto-js'); const { crc16 } = require('easy-crc'); @@ -101,162 +100,183 @@ async function sendRawFile(socket, path) { }); } -async function processPath(socket, service_vault_file_path, request_headers = new Array(), service_name) { +async function processPath(socket, service_vault_file_path, request_headers = new Array(), service_name, shared_romcache = null) { var headers, data = null; var request_is_async = false; var service_vault_found = false; var service_path = unescape(service_vault_file_path); + var usingSharedROMCache = false; try { service_vaults.forEach(function (service_vault_dir) { if (service_vault_found) return; - service_vault_file_path = wtvshared.makeSafePath(service_vault_dir, service_path); - // deny access to catchall file name directly - var service_path_split = service_path.split("/"); - var service_path_request_file = service_path_split[service_path_split.length - 1]; - if (minisrv_config.config.catchall_file_name) { - var minisrv_catchall = null; - if (minisrv_config.services[service_name]) minisrv_catchall = minisrv_config.services[service_name].catchall_file_name || minisrv_config.config.catchall_file_name || null; - else minisrv_catchall = minisrv_config.config.catchall_file_name || null; - if (minisrv_catchall) { - if (service_path_request_file == minisrv_catchall) { - request_is_async = true; - var errpage = wtvshared.doErrorPage(401, "Access Denied"); - sendToClient(socket, errpage[0], errpage[1]); - return; - } - } - } - var is_dir = false; - var file_exists = false; - minisrv_catchall, service_path_split, service_path_request_file = null; - if (fs.existsSync(service_vault_file_path)) { - file_exists = true; - is_dir = fs.lstatSync(service_vault_file_path).isDirectory() - } - - if (file_exists && !is_dir) { - // file exists, read it and return it - service_vault_found = true; - request_is_async = true; - 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") { - if (wtvshared.getFileExt(service_vault_file_path).toLowerCase() == "js") { - wtvshared.getLineFromFile(service_vault_file_path, 0, function (status, line) { - if (!status) { - if (line.match(/minisrv\_service\_file.*true/i)) { - var errpage = wtvshared.doErrorPage(403, "Access Denied"); - sendToClient(socket, errpage[0], errpage[1]); - } else { - sendRawFile(socket, service_vault_file_path); - } - } else { - var errpage = wtvshared.doErrorPage(400); - sendToClient(socket, errpage[0], errpage[1]); - } - }); - } - - if (wtvshared.getFileExt(service_vault_file_path).toLowerCase() == "txt") { - wtvshared.getLineFromFile(service_vault_file_path, 0, function (status, line) { - if (!status) { - if (line.match(/^#!minisrv/i)) { - var errpage = wtvshared.doErrorPage(403, "Access Denied"); - sendToClient(socket, errpage[0], errpage[1]); - } else { - sendRawFile(socket, service_vault_file_path); - } - } else { - var errpage = wtvshared.doErrorPage(400); - sendToClient(socket, errpage[0], errpage[1]); - } - }); + if (!usingSharedROMCache) { + if (minisrv_config.config.SharedROMCache && shared_romcache) { + if (shared_romcache.indexOf(minisrv_config.config.SharedROMCache) != -1) { + var service_path_presplit = shared_romcache.split(path.sep); + service_path_presplit.splice(service_path_presplit.findIndex((element) => element === 'ROMCache'), 1); + var service_path_romcache = service_path_presplit.join(path.sep); + var service_vault_file_path_romcache = wtvshared.returnAbsolutePath(wtvshared.makeSafePath(service_path_romcache)); + if (fs.existsSync(service_vault_file_path_romcache)) { + service_path = service_path.replace(wtvshared.fixPathSlashes(minisrv_config.config.SharedROMCache), 'ROMCache'); + service_vault_file_path = service_vault_file_path_romcache; + usingSharedROMCache = true; + } else { + service_vault_file_path = wtvshared.makeSafePath(service_vault_dir, service_path); + } + } else { + service_vault_file_path = wtvshared.makeSafePath(service_vault_dir, service_path); } } else { - // not a potential service file, so save to send - sendRawFile(socket, service_vault_file_path); + service_vault_file_path = wtvshared.makeSafePath(service_vault_dir, service_path); + } + // deny access to catchall file name directly + var service_path_split = service_path.split("/"); + var service_path_request_file = service_path_split[service_path_split.length - 1]; + if (minisrv_config.config.catchall_file_name) { + var minisrv_catchall = null; + if (minisrv_config.services[service_name]) minisrv_catchall = minisrv_config.services[service_name].catchall_file_name || minisrv_config.config.catchall_file_name || null; + else minisrv_catchall = minisrv_config.config.catchall_file_name || null; + if (minisrv_catchall) { + if (service_path_request_file == minisrv_catchall) { + request_is_async = true; + var errpage = wtvshared.doErrorPage(401, "Access Denied"); + sendToClient(socket, errpage[0], errpage[1]); + return; + } + } + } + var is_dir = false; + var file_exists = false; + minisrv_catchall, service_path_split, service_path_request_file = null; + if (fs.existsSync(service_vault_file_path)) { + file_exists = true; + is_dir = fs.lstatSync(service_vault_file_path).isDirectory() } - } else if (fs.existsSync(service_vault_file_path + ".txt")) { - // raw text format, entire payload expected (headers and content) - service_vault_found = true; - request_is_async = true; - if (!minisrv_config.config.debug_flags.quiet) console.log(" * Found " + service_vault_file_path + ".txt to handle request (Raw TXT Mode) [Socket " + socket.id + "]"); - request_headers.service_file_path = service_vault_file_path + ".txt"; - fs.readFile(service_vault_file_path + ".txt", 'Utf-8', function (err, file_raw) { - if (file_raw.indexOf("\n\n") > 0) { - // split headers and data by newline (unix format) - var file_raw_split = file_raw.split("\n\n"); - headers = file_raw_split[0]; - file_raw_split.shift(); - data = file_raw_split.join("\n"); - } else if (file_raw.indexOf("\r\n\r\n") > 0) { - // split headers and data by carrage return + newline (windows format) - var file_raw_split = file_raw.split("\r\n\r\n"); - headers = file_raw_split[0].replace(/\r/g, ""); - file_raw_split.shift(); - data = file_raw_split.join("\r\n"); - } else { - // couldn't find two line breaks, assume entire file is just headers - headers = file_raw; - data = ''; - } - sendToClient(socket, headers, data); - }); - } else if (fs.existsSync(service_vault_file_path + ".js")) { - // synchronous js scripting, process with vars, must set 'headers' and 'data' appropriately. - // loaded script will have r/w access to any JavaScript vars this function does. - // request headers are in an array named `request_headers`. - // Query arguments in `request_headers.query` - // Can upgrade to asynchronous by setting `request_is_async` to `true` - // In Asynchronous mode, you are expected to call sendToClient(socket,headers,data) by the end of your script - // `socket` is already defined and should be passed-through. - service_vault_found = true; - if (!minisrv_config.config.debug_flags.quiet) console.log(" * Found " + service_vault_file_path + ".js to handle request (JS Interpreter mode) [Socket " + socket.id + "]"); - request_headers.service_file_path = service_vault_file_path + ".js"; - // expose var service_dir for script path to the root of the wtv-service - var service_dir = service_vault_dir + path.sep + service_name; - socket_sessions[socket.id].starttime = Math.floor(new Date().getTime() / 1000); - var jscript_eval = fs.readFileSync(service_vault_file_path + ".js").toString(); - eval(jscript_eval); - if (request_is_async && !minisrv_config.config.debug_flags.quiet) console.log(" * Script requested Asynchronous mode"); - } - else if (fs.existsSync(service_vault_file_path + ".html")) { - // Standard HTML with no headers, WTV Style - service_vault_found = true; - if (!minisrv_config.config.debug_flags.quiet) console.log(" * Found " + service_vault_file_path + ".html to handle request (HTML Mode) [Socket " + socket.id + "]"); - request_headers.service_file_path = service_vault_file_path + ".html"; - request_is_async = true; - headers = "200 OK\n" - headers += "Content-Type: text/html" - fs.readFile(service_vault_file_path + ".html", null, function (err, data) { - sendToClient(socket, headers, data); - }); - } else { - // look for a catchallin the current path and all parent paths up until the service root - if (minisrv_config.config.catchall_file_name) { - var minisrv_catchall_file_name = null; - if (minisrv_config.services[service_name]) minisrv_catchall_file_name = minisrv_config.services[service_name].catchall_file_name || minisrv_config.config.catchall_file_name || null; - else minisrv_catchall_file_name = minisrv_config.config.catchall_file_name || null; - if (minisrv_catchall_file_name) { - var service_check_dir = service_vault_file_path.split(path.sep); - service_check_dir.pop(); // pop filename + if (file_exists && !is_dir) { + // file exists, read it and return it + service_vault_found = true; + request_is_async = true; + request_headers.service_file_path = service_vault_file_path; + request_headers.raw_file = true; - while (service_check_dir.join(path.sep) != service_vault_dir) { - var catchall_file = service_check_dir.join(path.sep) + path.sep + minisrv_catchall_file_name; - if (fs.existsSync(catchall_file)) { - service_vault_found = true; - if (!minisrv_config.config.debug_flags.quiet) console.log(" * Found catchall at " + catchall_file + " to handle request (JS Interpreter Mode) [Socket " + socket.id + "]"); - request_headers.service_file_path = catchall_file; - var jscript_eval = fs.readFileSync(catchall_file).toString(); - // don't pass these vars to the script - var service_check_dir, minisrv_catchall_file_name = null; - eval(jscript_eval); - if (request_is_async && !minisrv_config.config.debug_flags.quiet) console.log(" * Script requested Asynchronous mode"); - } else { - service_check_dir.pop(); + // 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") { + if (wtvshared.getFileExt(service_vault_file_path).toLowerCase() == "js") { + wtvshared.getLineFromFile(service_vault_file_path, 0, function (status, line) { + if (!status) { + if (line.match(/minisrv\_service\_file.*true/i)) { + var errpage = wtvshared.doErrorPage(403, "Access Denied"); + sendToClient(socket, errpage[0], errpage[1]); + } else { + sendRawFile(socket, service_vault_file_path); + } + } else { + var errpage = wtvshared.doErrorPage(400); + sendToClient(socket, errpage[0], errpage[1]); + } + }); + } + + if (wtvshared.getFileExt(service_vault_file_path).toLowerCase() == "txt") { + wtvshared.getLineFromFile(service_vault_file_path, 0, function (status, line) { + if (!status) { + if (line.match(/^#!minisrv/i)) { + var errpage = wtvshared.doErrorPage(403, "Access Denied"); + sendToClient(socket, errpage[0], errpage[1]); + } else { + sendRawFile(socket, service_vault_file_path); + } + } else { + var errpage = wtvshared.doErrorPage(400); + sendToClient(socket, errpage[0], errpage[1]); + } + }); + } + } else { + // not a potential service file, so save to send + sendRawFile(socket, service_vault_file_path); + } + + } else if (fs.existsSync(service_vault_file_path + ".txt")) { + // raw text format, entire payload expected (headers and content) + service_vault_found = true; + request_is_async = true; + if (!minisrv_config.config.debug_flags.quiet) console.log(" * Found " + service_vault_file_path + ".txt to handle request (Raw TXT Mode) [Socket " + socket.id + "]"); + request_headers.service_file_path = service_vault_file_path + ".txt"; + fs.readFile(service_vault_file_path + ".txt", 'Utf-8', function (err, file_raw) { + if (file_raw.indexOf("\n\n") > 0) { + // split headers and data by newline (unix format) + var file_raw_split = file_raw.split("\n\n"); + headers = file_raw_split[0]; + file_raw_split.shift(); + data = file_raw_split.join("\n"); + } else if (file_raw.indexOf("\r\n\r\n") > 0) { + // split headers and data by carrage return + newline (windows format) + var file_raw_split = file_raw.split("\r\n\r\n"); + headers = file_raw_split[0].replace(/\r/g, ""); + file_raw_split.shift(); + data = file_raw_split.join("\r\n"); + } else { + // couldn't find two line breaks, assume entire file is just headers + headers = file_raw; + data = ''; + } + sendToClient(socket, headers, data); + }); + } else if (fs.existsSync(service_vault_file_path + ".js")) { + // synchronous js scripting, process with vars, must set 'headers' and 'data' appropriately. + // loaded script will have r/w access to any JavaScript vars this function does. + // request headers are in an array named `request_headers`. + // Query arguments in `request_headers.query` + // Can upgrade to asynchronous by setting `request_is_async` to `true` + // In Asynchronous mode, you are expected to call sendToClient(socket,headers,data) by the end of your script + // `socket` is already defined and should be passed-through. + service_vault_found = true; + if (!minisrv_config.config.debug_flags.quiet) console.log(" * Found " + service_vault_file_path + ".js to handle request (JS Interpreter mode) [Socket " + socket.id + "]"); + request_headers.service_file_path = service_vault_file_path + ".js"; + // expose var service_dir for script path to the root of the wtv-service + var service_dir = service_vault_dir + path.sep + service_name; + socket_sessions[socket.id].starttime = Math.floor(new Date().getTime() / 1000); + var jscript_eval = fs.readFileSync(service_vault_file_path + ".js").toString(); + eval(jscript_eval); + if (request_is_async && !minisrv_config.config.debug_flags.quiet) console.log(" * Script requested Asynchronous mode"); + } + else if (fs.existsSync(service_vault_file_path + ".html")) { + // Standard HTML with no headers, WTV Style + service_vault_found = true; + if (!minisrv_config.config.debug_flags.quiet) console.log(" * Found " + service_vault_file_path + ".html to handle request (HTML Mode) [Socket " + socket.id + "]"); + request_headers.service_file_path = service_vault_file_path + ".html"; + request_is_async = true; + headers = "200 OK\n" + headers += "Content-Type: text/html" + fs.readFile(service_vault_file_path + ".html", null, function (err, data) { + sendToClient(socket, headers, data); + }); + } else { + // look for a catchallin the current path and all parent paths up until the service root + if (minisrv_config.config.catchall_file_name) { + var minisrv_catchall_file_name = null; + if (minisrv_config.services[service_name]) minisrv_catchall_file_name = minisrv_config.services[service_name].catchall_file_name || minisrv_config.config.catchall_file_name || null; + else minisrv_catchall_file_name = minisrv_config.config.catchall_file_name || null; + if (minisrv_catchall_file_name) { + var service_check_dir = service_vault_file_path.split(path.sep); + service_check_dir.pop(); // pop filename + + while (service_check_dir.join(path.sep) != service_vault_dir && service_check_dir.length > 0) { + var catchall_file = service_check_dir.join(path.sep) + path.sep + minisrv_catchall_file_name; + if (fs.existsSync(catchall_file)) { + service_vault_found = true; + if (!minisrv_config.config.debug_flags.quiet) console.log(" * Found catchall at " + catchall_file + " to handle request (JS Interpreter Mode) [Socket " + socket.id + "]"); + request_headers.service_file_path = catchall_file; + var jscript_eval = fs.readFileSync(catchall_file).toString(); + // don't pass these vars to the script + var service_check_dir, minisrv_catchall_file_name = null; + eval(jscript_eval); + if (request_is_async && !minisrv_config.config.debug_flags.quiet) console.log(" * Script requested Asynchronous mode"); + } else { + service_check_dir.pop(); + } } } } @@ -272,7 +292,7 @@ async function processPath(socket, service_vault_file_path, request_headers = ne } if (!request_is_async) { if (!service_vault_found) { - console.error(" * Could not find a Service Vault for " + service_name + ":/" + service_path.replace(service_name + path.sep, "")); + console.error(" * Could not find a Service Vault for " + service_name + ":/" + service_path.replace(service_name + path.sep, "").replace(path.sep, '/')); var errpage = wtvshared.doErrorPage(404, null, socket.minisrv_pc_mode); headers = errpage[0]; data = errpage[1]; @@ -428,9 +448,13 @@ Location: " + minisrv_config.config.unauthorized_url`; // assume webtv since there is a :/ in the GET var service_name = shortURL.split(':/')[0]; var urlToPath = wtvshared.fixPathSlashes(service_name + path.sep + shortURL.split(':/')[1]); + var shared_romcache = null; + if (shortURL.indexOf("/ROMCache/") != -1 && minisrv_config.config.enable_shared_romcache) { + shared_romcache = wtvshared.fixPathSlashes(minisrv_config.config.SharedROMCache + path.sep + shortURL.split(':/')[1]); + } if (minisrv_config.config.debug_flags.show_headers) console.log(" * Incoming headers on socket ID", socket.id, (await wtvshared.decodePostData(wtvshared.filterSSID(Object.assign({}, request_headers))))); socket_sessions[socket.id].request_headers = request_headers; - processPath(socket, urlToPath, request_headers, service_name); + processPath(socket, urlToPath, request_headers, service_name, shared_romcache); } else if (shortURL.indexOf('http://') >= 0 || shortURL.indexOf('https://') >= 0) { doHTTPProxy(socket, request_headers); } else { diff --git a/zefie_wtvp_minisrv/config.json b/zefie_wtvp_minisrv/config.json index a9b3fb76..ce0f6c36 100644 --- a/zefie_wtvp_minisrv/config.json +++ b/zefie_wtvp_minisrv/config.json @@ -6,6 +6,8 @@ "ServiceVault" ], "SessionStore": "SessionStore", + "SharedROMCache": "SharedROMCache", + "enable_shared_romcache": true, "service_owner": "a minisrv user", "service_owner_account": "minisrvuser", "service_owner_contact": "someone", diff --git a/zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj b/zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj index 0322f6f7..cece7dc9 100644 --- a/zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj +++ b/zefie_wtvp_minisrv/zefie_wtvp_minisrv.njsproj @@ -338,6 +338,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Code @@ -405,6 +462,9 @@ + + + \ No newline at end of file