diff --git a/package.nw/GridTracker.html b/package.nw/GridTracker.html index af6a155..77b1bb1 100644 --- a/package.nw/GridTracker.html +++ b/package.nw/GridTracker.html @@ -2978,6 +2978,59 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +
+ + + + + + + + + + +
+ + +
SimplePush API Key
+ +
+
+
+ + + + + + + + + + + + + +
+ + +
Pushover Credentials
+ + +
+ + +
+

diff --git a/package.nw/i18n/cn-t.json b/package.nw/i18n/cn-t.json index dcbbaa1..37b3618 100644 --- a/package.nw/i18n/cn-t.json +++ b/package.nw/i18n/cn-t.json @@ -166,6 +166,12 @@ "settings.Alerts.label": "警報", "settings.CallRoster.label": "呼叫清單", "settings.OAMS.label": "OAMS", + "settings.OAMS.simplepush.enable.label": "Simplepush Message Forwarding on/off", + "settings.OAMS.simplepush.apikey.label": "Simplepush API Key", + "settings.OAMS.pushover.enable.label": "Pushover Message Forwarding on/off", + "settings.OAMS.pushover.credentials.label": "Pushover Credentials", + "settings.OAMS.pushover.username.label": "Username", + "settings.OAMS.pushover.token.label": "Token", "settings.Logbook.label": "日志", "settings.Update.label": "更新", "settings.About.label": "關於", diff --git a/package.nw/i18n/cn.json b/package.nw/i18n/cn.json index e7973fe..e164951 100644 --- a/package.nw/i18n/cn.json +++ b/package.nw/i18n/cn.json @@ -166,6 +166,12 @@ "settings.Alerts.label": "警报", "settings.CallRoster.label": "呼叫列表", "settings.OAMS.label": "OAMS", + "settings.OAMS.simplepush.enable.label": "Simplepush Message Forwarding on/off", + "settings.OAMS.simplepush.apikey.label": "Simplepush API Key", + "settings.OAMS.pushover.enable.label": "Pushover Message Forwarding on/off", + "settings.OAMS.pushover.credentials.label": "Pushover Credentials", + "settings.OAMS.pushover.username.label": "Username", + "settings.OAMS.pushover.token.label": "Token", "settings.Logbook.label": "日志", "settings.Update.label": "更新", "settings.About.label": "关于", diff --git a/package.nw/i18n/de.json b/package.nw/i18n/de.json index 9012337..2feceb7 100644 --- a/package.nw/i18n/de.json +++ b/package.nw/i18n/de.json @@ -166,6 +166,12 @@ "settings.Alerts.label": "Alarme", "settings.CallRoster.label": "Rufzeichenliste", "settings.OAMS.label": "OAMS", + "settings.OAMS.simplepush.enable.label": "Simplepush Nachrichtenweiterleitung ein/aus", + "settings.OAMS.simplepush.apikey.label": "Simplepush API Key", + "settings.OAMS.pushover.enable.label": "Pushover Nachrichtenweiterleitung ein/aus", + "settings.OAMS.pushover.credentials.label": "Pushover Zugangsdaten", + "settings.OAMS.pushover.username.label": "Benutzername", + "settings.OAMS.pushover.token.label": "Token", "settings.Logbook.label": "Logbook", "settings.Update.label": "Update", "settings.About.label": "Über", diff --git a/package.nw/i18n/en.json b/package.nw/i18n/en.json index a780e7e..3bba1f9 100644 --- a/package.nw/i18n/en.json +++ b/package.nw/i18n/en.json @@ -165,6 +165,12 @@ "settings.Alerts.label": "Alerts", "settings.CallRoster.label": "Call Roster", "settings.OAMS.label": "OAMS", + "settings.OAMS.simplepush.enable.label": "Simplepush Message Forwarding on/off", + "settings.OAMS.simplepush.apikey.label": "Simplepush API Key", + "settings.OAMS.pushover.enable.label": "Pushover Message Forwarding on/off", + "settings.OAMS.pushover.credentials.label": "Pushover Credentials", + "settings.OAMS.pushover.username.label": "Username", + "settings.OAMS.pushover.token.label": "Token", "settings.Logbook.label": "Logbook", "settings.Update.label": "Update", "settings.About.label": "About", diff --git a/package.nw/lib/defaults.js b/package.nw/lib/defaults.js index 1e018b0..214d8cd 100644 --- a/package.nw/lib/defaults.js +++ b/package.nw/lib/defaults.js @@ -193,7 +193,12 @@ var def_msgSettings = { msgFrequencySelect: 0, msgActionSelect: 1, msgAwaySelect: 0, - msgAwayText: "I am away from the shack at the moment" + msgAwayText: "I am away from the shack at the moment", + msgSimplepush: 0, + msgSimplePushApiKey: "", + msgPushover: 0, + msgPushoverUsername: "", + msgPushoverToken: "" }; var def_receptionSettings = { diff --git a/package.nw/lib/gt.js b/package.nw/lib/gt.js index 2533cc5..3973acb 100644 --- a/package.nw/lib/gt.js +++ b/package.nw/lib/gt.js @@ -469,6 +469,7 @@ GT.unconfirmedCalls = new Map(); GT.tracker = {}; GT.lastTrasmissionTimeSec = timeNowSec(); +GT.getPostBuffer = getPostBuffer; const PSKREPORTER_INTERVAL_IN_SECONDS = 5 * 60; @@ -10677,6 +10678,18 @@ function setOamsBandActivityNeighbors(checkbox) oamsBandActivityCheck(); } +function setOamsSimplepush(checkbox) +{ + GT.msgSettings.msgSimplepush = checkbox.checked; + localStorage.msgSettings = JSON.stringify(GT.msgSettings); +} + +function setOamsPushover(checkbox) +{ + GT.msgSettings.msgPushover = checkbox.checked; + localStorage.msgSettings = JSON.stringify(GT.msgSettings); +} + function setMsgEnable(checkbox) { GT.appSettings.gtMsgEnable = checkbox.checked; @@ -13026,6 +13039,9 @@ function loadMsgSettings() { document.getElementById(key).value = GT.msgSettings[key]; } + + msgSimplepush.checked = GT.msgSettings.msgSimplepush; + msgPushover.checked = GT.msgSettings.msgPushover; ValidateText(msgAwayText); setMsgSettingsView(); } diff --git a/package.nw/lib/gtws.js b/package.nw/lib/gtws.js index ed4f4a4..4cb5224 100644 --- a/package.nw/lib/gtws.js +++ b/package.nw/lib/gtws.js @@ -567,6 +567,46 @@ function htmlEntities(str) .replace(/"/g, """); } +function sendSimplePushMessage(jsmesg) +{ + const url = "https://api.simplepush.io/send"; + let data = { key: GT.msgSettings.msgSimplePushApiKey, title: "GridTracker Chat Message", msg: jsmesg.call + ": " + jsmesg.msg }; + getPostBuffer( + url, + null, // callback, + null, + "https", + 443, + data, + 500, // timeoutMs, + null, // timeoutCallback, + "simplepush" + ); +} + +function sendPushOverMessage(jsmesg) +{ + const url = "https://api.pushover.net/1/messages.json"; + let data = { + user: GT.msgSettings.msgPushoverUsername, + token: GT.msgSettings.msgPushoverToken, + title: + "GridTracker Chat Message", + message: jsmesg.call + ": " + jsmesg.msg + }; + getPostBuffer( + url, + null, // callback, + null, + "https", + 443, + data, + 500, // timeoutMs, + null, // timeoutCallback, + "pushover" + ); +} + function gtChatMessage(jsmesg) { if (GT.appSettings.gtMsgEnable == true) @@ -580,7 +620,7 @@ function gtChatMessage(jsmesg) } catch (e) { - jsmesg.msg = "Corrupt message recieved"; + jsmesg.msg = "Corrupt message received"; } if (jsmesg.call != null && jsmesg.call != "" && jsmesg.call != "NOCALL") @@ -589,6 +629,16 @@ function gtChatMessage(jsmesg) GT.gtUnread[cid] = true; GT.gtCurrentMessageCount++; + if (GT.msgSettings.msgSimplepush && GT.msgSettings.msgSimplePushApiKey != null) + { + sendSimplePushMessage(jsmesg); + } + if (GT.msgSettings.msgPushover && GT.msgSettings.msgPushoverUsername != null && + GT.msgSettings.msgPushoverToken != null) + { + sendPushOverMessage(jsmesg); + } + if (newChatMessage(cid, jsmesg) == false) alertChatMessage(); if (GT.msgSettings.msgAwaySelect == 1 && !(cid in GT.gtSentAwayToCid)) diff --git a/package.nw/lib/roster/sendAlerts.js b/package.nw/lib/roster/sendAlerts.js index 0d77830..b3e53ca 100644 --- a/package.nw/lib/roster/sendAlerts.js +++ b/package.nw/lib/roster/sendAlerts.js @@ -110,8 +110,95 @@ function sendAlerts(callRoster, rosterSettings) { conosle.log(e); } - CR.scriptReport = Object(); } - else CR.scriptReport = Object(); + if (window.opener.GT.msgSettings.msgPushover) + { + sendPushOverAlert(parseCRJson(CR.scriptReport)); + } + if (window.opener.GT.msgSettings.msgSimplepush) + { + sendSimplePushMessage(parseCRJson(CR.scriptReport)); + } + CR.scriptReport = Object(); } } + +function sendSimplePushMessage(message) +{ + const url = "https://api.simplepush.io/send"; + let data = { + key: window.opener.GT.msgSettings.msgSimplePushApiKey, + title: "GridTracker Alert " + window.opener.GT.appSettings.myCall, + msg: message + }; + window.opener.GT.getPostBuffer( + url, + null, // callback, + null, + "https", + 443, + data, + 500, // timeoutMs, + null, // timeoutCallback, + "simplepush" + ); +} +function sendPushOverAlert(message) +{ + const url = "https://api.pushover.net/1/messages.json"; + let data = { + user: window.opener.GT.msgSettings.msgPushoverUsername, + token: window.opener.GT.msgSettings.msgPushoverToken, + title: + "GridTracker Alert " + window.opener.GT.appSettings.myCall, + message: message + }; + window.opener.GT.getPostBuffer( + url, + null, // callback, + null, + "https", + 443, + data, + 500, // timeoutMs, + null, // timeoutCallback, + "pushover" + ); +} + +function parseCRJson(data) +{ + let message = ""; + for (let callsign in data) + { + if (data[callsign].shouldAlert === true && data[callsign].alerted === false) + { + if (data[callsign].grid) + { + if (data[callsign].state) + { + message = message + callsign + ", " + data[callsign].dxccName + ", " + data[callsign].RSTsent.toString() + ", " + data[callsign].grid + ", " + data[callsign].band + ", " + data[callsign].state + "\n"; + } + else + { + message = message + callsign + ", " + data[callsign].dxccName + ", " + data[callsign].RSTsent.toString() + ", " + data[callsign].grid + ", " + data[callsign].band + "\n"; + } + } + else + { + if (!data[callsign].grid) + { + if (data[callsign].state) + { + message = message + callsign + ", " + data[callsign].dxccName + ", " + data[callsign].RSTsent.toString() + ", " + data[callsign].band + ", " + data[callsign].state + "\n"; + } + else + { + message = message + callsign + ", " + data[callsign].dxccName + ", " + data[callsign].RSTsent.toString() + ", " + data[callsign].band + "\n"; + } + } + } + } + } + return message; +}