add manual timezone override

This commit is contained in:
zefie
2025-07-07 18:24:28 -04:00
parent 7e7c5b142e
commit bdd8442052
4 changed files with 147 additions and 6 deletions

View File

@@ -1412,6 +1412,8 @@ async function sendToClient(socket, headers_obj, data = null) {
var headers = ""; var headers = "";
var content_length = 0; var content_length = 0;
var eol = "\n"; var eol = "\n";
var timezone = "-0000";
if (typeof (data) === 'undefined' || data === null) data = ''; if (typeof (data) === 'undefined' || data === null) data = '';
if (typeof (headers_obj) === 'string') { if (typeof (headers_obj) === 'string') {
// string to header object // string to header object
@@ -1435,6 +1437,7 @@ async function sendToClient(socket, headers_obj, data = null) {
// logged in // logged in
headers_obj['wtv-mail-count'] = ssid_sessions[socket.ssid].mailstore.countUnreadMessages(0); headers_obj['wtv-mail-count'] = ssid_sessions[socket.ssid].mailstore.countUnreadMessages(0);
} }
timezone = ssid_sessions[socket.ssid].getSessionData("timezone") || "-0000"
} }
} }
} else { } else {
@@ -1483,8 +1486,15 @@ async function sendToClient(socket, headers_obj, data = null) {
wtvshared.getFileExt(socket_sessions[socket.id].request_headers.service_file_path).toLowerCase() !== "php" || wtvshared.getFileExt(socket_sessions[socket.id].request_headers.service_file_path).toLowerCase() !== "php" ||
wtvshared.getFileExt(socket_sessions[socket.id].request_headers.service_file_path).toLowerCase() !== "cgi" || wtvshared.getFileExt(socket_sessions[socket.id].request_headers.service_file_path).toLowerCase() !== "cgi" ||
socket_sessions[socket.id].request_headers.raw_file === true) { socket_sessions[socket.id].request_headers.raw_file === true) {
var last_modified = wtvshared.getFileLastModifiedUTCString(socket_sessions[socket.id].request_headers.service_file_path); if (socket.res) {
if (last_modified) headers_obj["Last-Modified"] = last_modified; var last_modified_formatted = wtvshared.getFileLastModifiedUTCString(socket_sessions[socket.id].request_headers.service_file_path);
} else {
var last_modified = wtvshared.getFileLastModifiedUTCObj(socket_sessions[socket.id].request_headers.service_file_path);
var strftime = require('strftime');
var strf = strftime.timezone(timezone);
var last_modified_formatted = strf("%a, %d %b %Y %H:%M:%S", last_modified);
}
if (last_modified_formatted) headers_obj["Last-Modified"] = last_modified_formatted;
} }
} }
} }

View File

@@ -35,6 +35,7 @@ else {
var userid = '1' + Math.floor(Math.random() * 1000000000000000000); var userid = '1' + Math.floor(Math.random() * 1000000000000000000);
var messenger_enabled = 0; var messenger_enabled = 0;
var messenger_authorized = 0; var messenger_authorized = 0;
var timezone = "-0000";
if (request_headers.query.skip_splash) gourl = "wtv-home:/home?"; if (request_headers.query.skip_splash) gourl = "wtv-home:/home?";
else gourl = "wtv-home:/splash?"; else gourl = "wtv-home:/splash?";
} else if (!session_data.getSessionData("registered")) { } else if (!session_data.getSessionData("registered")) {
@@ -48,6 +49,7 @@ else {
var messenger_enabled = session_data.getSessionData("messenger_enabled") || 0; var messenger_enabled = session_data.getSessionData("messenger_enabled") || 0;
var messenger_authorized = session_data.getSessionData("messenger_authorized") || 0; var messenger_authorized = session_data.getSessionData("messenger_authorized") || 0;
var messenger_email = session_data.getSessionData("messenger_email"); var messenger_email = session_data.getSessionData("messenger_email");
var timezone = session_data.getSessionData("timezone") || "-0000";
var gourl = "wtv-home:/splash?"; var gourl = "wtv-home:/splash?";
} }
var limitedLogin = session_data.lockdown; var limitedLogin = session_data.lockdown;
@@ -87,10 +89,11 @@ wtv-expire-all: wtv-head-waiter:
`; `;
if (!limitedLogin && !limitedLoginRegistered) { if (!limitedLogin && !limitedLoginRegistered) {
headers += `wtv-client-time-zone: GMT -0000
headers += `wtv-country: US
wtv-client-time-zone: GMT ${timezone}
wtv-client-time-dst-rule: GMT wtv-client-time-dst-rule: GMT
wtv-client-date: `+ strftime("%a, %d %b %Y %H:%M:%S", new Date(new Date().toUTCString())) + ` GMT wtv-client-date: ${new Date().toUTCString()}
wtv-country: US
wtv-language-header: en-US,en wtv-language-header: en-US,en
wtv-noback-all: wtv- wtv-noback-all: wtv-
wtv-transition-override: off wtv-transition-override: off

View File

@@ -0,0 +1,124 @@
var minisrv_service_file = true;
var timezone = "-0000";
if (session_data.isRegistered()) {
timezone = session_data.getSessionData("timezone") || timezone;
if (request_headers.query.timezone) {
timezone = request_headers.query.timezone;
session_data.setSessionData("timezone", timezone);
}
}
strf = strftime.timezone(timezone)
headers = `200 OK
Connection: Keep-Alive
wtv-expire-all: wtv-
wtv-expire-all: http
wtv-client-time-zone: GMT -0000
wtv-client-time-dst-rule: false
wtv-client-date: ${strf("%a, %d %b %Y %H:%M:%S", new Date(new Date().setUTCSeconds(new Date().getUTCSeconds())))} GMT
Content-Type: text/html`
html = `<HTML>
<HEAD>
<TITLE>
Set Timezone
</TITLE>
<DISPLAY nosave skipback noscroll>
</HEAD>
<sidebar width=110> <table cellspacing=0 cellpadding=0 BGCOLOR="30364D">
<tr>
<td colspan=3 abswidth=104 absheight=4>
<td rowspan=99 width=6 absheight=420 valign=top align=left>
<img src="wtv-home:/ROMCache/Shadow.gif" width=6 height=420>
<tr>
<td abswidth=6>
<td abswidth=92 absheight=76>
<table href="wtv-home:/home" absheight=76 cellspacing=0 cellpadding=0>
<tr>
<td align=right>
<img src="${minisrv_config.config.service_logo}" width=87 height=67>
</table>
<td abswidth=6>
<tr><td absheight=5 colspan=3>
<table cellspacing=0 cellpadding=0>
<tr><td abswidth=104 absheight=2 valign=middle align=center bgcolor="1C1E28">
<img src="wtv-home:/ROMCache/Spacer.gif" width=1 height=1>
<tr><td abswidth=104 absheight=1 valign=top align=left>
<tr><td abswidth=104 absheight=2 valign=top align=left bgcolor="4D5573">
<img src="wtv-home:/ROMCache/Spacer.gif" width=1 height=1>
</table>
<tr><td absheight=37>
<tr><td absheight=263 align=right colspan=3>
<img src="ROMCache/AccountBanner.gif" width=53 height=263>
<tr><td absheight=41>
</table>
</sidebar>
<BODY BGCOLOR="#191919" TEXT="#44cc55" LINK="189CD6" VLINK="189CD6" HSPACE=0 VSPACE=0 FONTSIZE="large"
>
<table cellspacing=0 cellpadding=0>
<tr>
<td abswidth=14>
<td abswidth=416 absheight=80 valign=center>
<font size="+2" color="E7CE4A"><blackface><shadow>
Set Timezone
<td abswidth=20>
<tr>
<td>
<td absheight=244 valign=top align=left>
<form action="wtv-setup:/timezone" method="post">
Current system time: <clock></clock><br><br>
Your current timezone is set to: <b>${timezone}</b><br><br>`;
const timezones = [
["UTC-12:00", "-1200"], ["UTC-11:00", "-1100"], ["UTC-10:00", "-1000"], ["UTC-09:00", "-0900"], ["UTC-08:00", "-0800"],
["UTC-07:00", "-0700"], ["UTC-06:00", "-0600"], ["UTC-05:00", "-0500"], ["UTC-04:00", "-0400"], ["UTC-03:00", "-0300"],
["UTC-02:00", "-0200"], ["UTC-01:00", "-0100"], ["UTC&#177;00:00", "-0000"], ["UTC+01:00", "+0100"], ["UTC+02:00", "+0200"],
["UTC+03:00", "+0300"], ["UTC+04:00", "+0400"], ["UTC+05:00", "+0500"], ["UTC+06:00", "+0600"], ["UTC+07:00", "+0700"],
["UTC+08:00", "+0800"], ["UTC+09:00", "+0900"], ["UTC+10:00", "+1000"], ["UTC+11:00", "+1100"], ["UTC+12:00", "+1200"]
];
html += `<select name="timezone" onchange="this.form.submit()">\n`;
for (const tz of timezones) {
html += ` <option value="${tz[1]}" ${tz[1] === timezone ? 'selected' : ''}>${tz[0]}</option>\n`;
}
html += `</select>`;
html += `</form>
<TR>
<TD>
<TD COLSPAN=4 HEIGHT=0 VALIGN=top ALIGN=left>
<tr>
<TD>
<td colspan=3 height=2 valign=middle align=center bgcolor="2B2B2B">
<spacer type=block width=436 height=1>
<tr>
<TD>
<td colspan=4 height=1 valign=top align=left>
<tr>
<TD>
<td colspan=3 height=2 valign=top align=left bgcolor="0D0D0D">
<spacer type=block width=436 height=1>
<TR>
<TD>
<TD COLSPAN=4 HEIGHT=4 VALIGN=top ALIGN=left>
<TR>
<TD>
<TD COLSPAN=2 VALIGN=top ALIGN=left>
<tr>
<TD COLSPAN=2 VALIGN=top ALIGN=right>
<FORM action="wtv-setup:/setup">
<FONT COLOR="#E7CE4A" SIZE=-1><SHADOW>
<INPUT TYPE=SUBMIT BORDERIMAGE="file://ROM/Borders/ButtonBorder2.bif" Value=Done NAME="Done" USESTYLE WIDTH=103>
</SHADOW></FONT></FORM>
<TD>
</TABLE>
</BODY>
</HTML>
`;
data = html;

View File

@@ -662,6 +662,10 @@ class WTVShared {
return this.getFileLastModified(file).toUTCString(); return this.getFileLastModified(file).toUTCString();
} }
getFileLastModifiedUTCObj(file) {
return new Date(new Date().setUTCSeconds(this.getFileLastModified(file).getUTCSeconds()));
}
/** /**
* Returns a RFC7231 compliant UTC Date String from the current time * Returns a RFC7231 compliant UTC Date String from the current time
* @param {Number} offset Offset from current time (+/-) * @param {Number} offset Offset from current time (+/-)