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.
+
+
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;
+}