kopia lustrzana https://gitlab.com/gridtracker.org/gridtracker
Merge branch 'cbayer-push-notifications' into 'master'
push notifications See merge request gridtracker.org/gridtracker!280 If this is changing anything in the UI or operational behavior, please prepare to update the wiki!merge-requests/237/merge
commit
d7a6e20ebe
|
@ -2978,6 +2978,59 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="mapItem">
|
||||||
|
<table align="center">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label data-i18n="settings.OAMS.simplepush.enable.label" for="msgSimplepush">Enable / Disable Simplepush Message forwarding</label>
|
||||||
|
<input title="Enable / Disable Simplepush" type="checkbox" id="msgSimplepush"
|
||||||
|
onclick="setOamsSimplepush(this);" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td data-i18n="settings.OAMS.simplepush.apikey.label"
|
||||||
|
title="SimplePush API Key to forward messages to your phone">SimplePush API Key</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<input title="SimplePush API Key to forward messages to your phone" type="text" id="msgSimplePushApiKey"
|
||||||
|
class="inputTextValue" maxlength="255" size="16"
|
||||||
|
oninput="ValidateText(this); newMessageSetting(this);" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="mapItem">
|
||||||
|
<table align="center">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label data-i18n="settings.OAMS.pushover.enable.label" for="msgPushover">Enable / Disable Pushover Message forwarding</label>
|
||||||
|
<input title="Enable / Disable Pushover" type="checkbox" id="msgPushover"
|
||||||
|
onclick="setOamsPushover(this);" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td data-i18n="settings.OAMS.pushover.credentials.label"
|
||||||
|
title="Pushover Credentials to forward messages to your phone">Pushover Credentials</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label data-i18n="settings.OAMS.pushover.username.label" for="msgPushoverUsername">Username</label>
|
||||||
|
<input title="Pushover Username to forward messages to your phone" type="text" id="msgPushoverUsername"
|
||||||
|
class="inputTextValue" maxlength="255" size="16"
|
||||||
|
oninput="ValidateText(this); newMessageSetting(this);" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label data-i18n="settings.OAMS.pushover.token.label" for="msgPushoverToken">Token</label>
|
||||||
|
<input title="Pushover Token to forward messages to your phone" type="text" id="msgPushoverToken"
|
||||||
|
class="inputTextValue" maxlength="255" size="16"
|
||||||
|
oninput="ValidateText(this); newMessageSetting(this);" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
<br />
|
<br />
|
||||||
<div class="mapItem" id="msgFrequencySelectDiv">
|
<div class="mapItem" id="msgFrequencySelectDiv">
|
||||||
<table align="center">
|
<table align="center">
|
||||||
|
|
|
@ -166,6 +166,12 @@
|
||||||
"settings.Alerts.label": "警報",
|
"settings.Alerts.label": "警報",
|
||||||
"settings.CallRoster.label": "呼叫清單",
|
"settings.CallRoster.label": "呼叫清單",
|
||||||
"settings.OAMS.label": "OAMS",
|
"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.Logbook.label": "日志",
|
||||||
"settings.Update.label": "更新",
|
"settings.Update.label": "更新",
|
||||||
"settings.About.label": "關於",
|
"settings.About.label": "關於",
|
||||||
|
|
|
@ -166,6 +166,12 @@
|
||||||
"settings.Alerts.label": "警报",
|
"settings.Alerts.label": "警报",
|
||||||
"settings.CallRoster.label": "呼叫列表",
|
"settings.CallRoster.label": "呼叫列表",
|
||||||
"settings.OAMS.label": "OAMS",
|
"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.Logbook.label": "日志",
|
||||||
"settings.Update.label": "更新",
|
"settings.Update.label": "更新",
|
||||||
"settings.About.label": "关于",
|
"settings.About.label": "关于",
|
||||||
|
|
|
@ -166,6 +166,12 @@
|
||||||
"settings.Alerts.label": "Alarme",
|
"settings.Alerts.label": "Alarme",
|
||||||
"settings.CallRoster.label": "Rufzeichenliste",
|
"settings.CallRoster.label": "Rufzeichenliste",
|
||||||
"settings.OAMS.label": "OAMS",
|
"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.Logbook.label": "Logbook",
|
||||||
"settings.Update.label": "Update",
|
"settings.Update.label": "Update",
|
||||||
"settings.About.label": "Über",
|
"settings.About.label": "Über",
|
||||||
|
|
|
@ -165,6 +165,12 @@
|
||||||
"settings.Alerts.label": "Alerts",
|
"settings.Alerts.label": "Alerts",
|
||||||
"settings.CallRoster.label": "Call Roster",
|
"settings.CallRoster.label": "Call Roster",
|
||||||
"settings.OAMS.label": "OAMS",
|
"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.Logbook.label": "Logbook",
|
||||||
"settings.Update.label": "Update",
|
"settings.Update.label": "Update",
|
||||||
"settings.About.label": "About",
|
"settings.About.label": "About",
|
||||||
|
|
|
@ -193,7 +193,12 @@ var def_msgSettings = {
|
||||||
msgFrequencySelect: 0,
|
msgFrequencySelect: 0,
|
||||||
msgActionSelect: 1,
|
msgActionSelect: 1,
|
||||||
msgAwaySelect: 0,
|
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 = {
|
var def_receptionSettings = {
|
||||||
|
|
|
@ -469,6 +469,7 @@ GT.unconfirmedCalls = new Map();
|
||||||
|
|
||||||
GT.tracker = {};
|
GT.tracker = {};
|
||||||
GT.lastTrasmissionTimeSec = timeNowSec();
|
GT.lastTrasmissionTimeSec = timeNowSec();
|
||||||
|
GT.getPostBuffer = getPostBuffer;
|
||||||
|
|
||||||
const PSKREPORTER_INTERVAL_IN_SECONDS = 5 * 60;
|
const PSKREPORTER_INTERVAL_IN_SECONDS = 5 * 60;
|
||||||
|
|
||||||
|
@ -10677,6 +10678,18 @@ function setOamsBandActivityNeighbors(checkbox)
|
||||||
oamsBandActivityCheck();
|
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)
|
function setMsgEnable(checkbox)
|
||||||
{
|
{
|
||||||
GT.appSettings.gtMsgEnable = checkbox.checked;
|
GT.appSettings.gtMsgEnable = checkbox.checked;
|
||||||
|
@ -13026,6 +13039,9 @@ function loadMsgSettings()
|
||||||
{
|
{
|
||||||
document.getElementById(key).value = GT.msgSettings[key];
|
document.getElementById(key).value = GT.msgSettings[key];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
msgSimplepush.checked = GT.msgSettings.msgSimplepush;
|
||||||
|
msgPushover.checked = GT.msgSettings.msgPushover;
|
||||||
ValidateText(msgAwayText);
|
ValidateText(msgAwayText);
|
||||||
setMsgSettingsView();
|
setMsgSettingsView();
|
||||||
}
|
}
|
||||||
|
|
|
@ -567,6 +567,46 @@ function htmlEntities(str)
|
||||||
.replace(/"/g, """);
|
.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)
|
function gtChatMessage(jsmesg)
|
||||||
{
|
{
|
||||||
if (GT.appSettings.gtMsgEnable == true)
|
if (GT.appSettings.gtMsgEnable == true)
|
||||||
|
@ -580,7 +620,7 @@ function gtChatMessage(jsmesg)
|
||||||
}
|
}
|
||||||
catch (e)
|
catch (e)
|
||||||
{
|
{
|
||||||
jsmesg.msg = "Corrupt message recieved";
|
jsmesg.msg = "Corrupt message received";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (jsmesg.call != null && jsmesg.call != "" && jsmesg.call != "NOCALL")
|
if (jsmesg.call != null && jsmesg.call != "" && jsmesg.call != "NOCALL")
|
||||||
|
@ -589,6 +629,16 @@ function gtChatMessage(jsmesg)
|
||||||
GT.gtUnread[cid] = true;
|
GT.gtUnread[cid] = true;
|
||||||
GT.gtCurrentMessageCount++;
|
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 (newChatMessage(cid, jsmesg) == false) alertChatMessage();
|
||||||
|
|
||||||
if (GT.msgSettings.msgAwaySelect == 1 && !(cid in GT.gtSentAwayToCid))
|
if (GT.msgSettings.msgAwaySelect == 1 && !(cid in GT.gtSentAwayToCid))
|
||||||
|
|
|
@ -110,8 +110,95 @@ function sendAlerts(callRoster, rosterSettings)
|
||||||
{
|
{
|
||||||
conosle.log(e);
|
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;
|
||||||
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue