Added free ntfy.sh notification service integration.
This commit is contained in:
parent
e2b442ae66
commit
8f84c5d2d3
|
@ -71,6 +71,13 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// For ntfy
|
||||||
|
{
|
||||||
|
"messaging": {
|
||||||
|
"ntfy": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Construct a messaging server object
|
// Construct a messaging server object
|
||||||
|
@ -196,7 +203,7 @@ module.exports.CreateServer = function (parent) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// CallMeBot client setup
|
// CallMeBot client setup (https://www.callmebot.com/)
|
||||||
if (parent.config.messaging.callmebot) {
|
if (parent.config.messaging.callmebot) {
|
||||||
obj.callMeBotClient = true;
|
obj.callMeBotClient = true;
|
||||||
obj.providers += 16; // Enable CallMeBot messaging
|
obj.providers += 16; // Enable CallMeBot messaging
|
||||||
|
@ -215,6 +222,12 @@ module.exports.CreateServer = function (parent) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ntfy client setup (https://ntfy.sh/)
|
||||||
|
if (parent.config.messaging.ntfy) {
|
||||||
|
obj.ntfyClient = true;
|
||||||
|
obj.providers += 64; // Enable ntfy messaging
|
||||||
|
}
|
||||||
|
|
||||||
// Send a direct message to a specific userid
|
// Send a direct message to a specific userid
|
||||||
async function discordSendMsg(userId, message) {
|
async function discordSendMsg(userId, message) {
|
||||||
const user = await obj.discordClient.users.fetch(userId).catch(function () { return null; });
|
const user = await obj.discordClient.users.fetch(userId).catch(function () { return null; });
|
||||||
|
@ -278,6 +291,10 @@ module.exports.CreateServer = function (parent) {
|
||||||
const Pushover = require('node-pushover');
|
const Pushover = require('node-pushover');
|
||||||
const push = new Pushover({ token: parent.config.messaging.pushover.token, user: to.substring(9) });
|
const push = new Pushover({ token: parent.config.messaging.pushover.token, user: to.substring(9) });
|
||||||
push.send(domain.title ? domain.title : 'MeshCentral', msg, function (err, res) { if (func != null) { func(err == null); } });
|
push.send(domain.title ? domain.title : 'MeshCentral', msg, function (err, res) { if (func != null) { func(err == null); } });
|
||||||
|
} else if ((to.startsWith('ntfy:')) && (obj.ntfyClient != null)) { // ntfy
|
||||||
|
const req = require('https').request(new URL('https://ntfy.sh/' + encodeURIComponent(to.substring(5))), { method: 'POST' }, function (res) { if (func != null) { func(true); } });
|
||||||
|
req.on('error', function (err) { if (func != null) { func(false); } });
|
||||||
|
req.end(msg);
|
||||||
} else {
|
} else {
|
||||||
// No providers found
|
// No providers found
|
||||||
func(false, "No messaging providers found for this message.");
|
func(false, "No messaging providers found for this message.");
|
||||||
|
|
12
meshuser.js
12
meshuser.js
|
@ -6702,6 +6702,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
|
||||||
if ((command.service == 8) && ((parent.parent.msgserver.providers & 8) != 0)) { handle = 'xmpp:' + command.handle; }
|
if ((command.service == 8) && ((parent.parent.msgserver.providers & 8) != 0)) { handle = 'xmpp:' + command.handle; }
|
||||||
if ((command.service == 16) && ((parent.parent.msgserver.providers & 16) != 0)) { handle = parent.parent.msgserver.callmebotUrlToHandle(command.handle); }
|
if ((command.service == 16) && ((parent.parent.msgserver.providers & 16) != 0)) { handle = parent.parent.msgserver.callmebotUrlToHandle(command.handle); }
|
||||||
if ((command.service == 32) && ((parent.parent.msgserver.providers & 32) != 0)) { handle = 'pushover:' + command.handle; }
|
if ((command.service == 32) && ((parent.parent.msgserver.providers & 32) != 0)) { handle = 'pushover:' + command.handle; }
|
||||||
|
if ((command.service == 64) && ((parent.parent.msgserver.providers & 64) != 0)) { handle = 'ntfy:' + command.handle; }
|
||||||
if (handle == null) return;
|
if (handle == null) return;
|
||||||
|
|
||||||
// Send a verification message
|
// Send a verification message
|
||||||
|
@ -6841,11 +6842,12 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
|
||||||
} else {
|
} else {
|
||||||
if (cmdData.cmdargs['_'].length != 2) {
|
if (cmdData.cmdargs['_'].length != 2) {
|
||||||
var r = [];
|
var r = [];
|
||||||
if ((parent.parent.msgserver.providers & 1) != 0) { r.push("Usage: MSG \"telegram:@UserHandle\" \"Message\"."); }
|
if ((parent.parent.msgserver.providers & 1) != 0) { r.push("Usage: MSG \"telegram:[@UserHandle]\" \"Message\"."); }
|
||||||
if ((parent.parent.msgserver.providers & 2) != 0) { r.push("Usage: MSG \"signal:UserHandle\" \"Message\"."); }
|
if ((parent.parent.msgserver.providers & 2) != 0) { r.push("Usage: MSG \"signal:[UserHandle]\" \"Message\"."); }
|
||||||
if ((parent.parent.msgserver.providers & 4) != 0) { r.push("Usage: MSG \"discord:Username#0000\" \"Message\"."); }
|
if ((parent.parent.msgserver.providers & 4) != 0) { r.push("Usage: MSG \"discord:[Username#0000]\" \"Message\"."); }
|
||||||
if ((parent.parent.msgserver.providers & 8) != 0) { r.push("Usage: MSG \"xmpp:username@server.com\" \"Message\"."); }
|
if ((parent.parent.msgserver.providers & 8) != 0) { r.push("Usage: MSG \"xmpp:[username@server.com]\" \"Message\"."); }
|
||||||
if ((parent.parent.msgserver.providers & 32) != 0) { r.push("Usage: MSG \"pushover:userkey\" \"Message\"."); }
|
if ((parent.parent.msgserver.providers & 32) != 0) { r.push("Usage: MSG \"pushover:[userkey]\" \"Message\"."); }
|
||||||
|
if ((parent.parent.msgserver.providers & 64) != 0) { r.push("Usage: MSG \"ntfy:[topic]\" \"Message\"."); }
|
||||||
cmdData.result = r.join('\r\n');
|
cmdData.result = r.join('\r\n');
|
||||||
} else {
|
} else {
|
||||||
parent.parent.msgserver.sendMessage(cmdData.cmdargs['_'][0], cmdData.cmdargs['_'][1], domain, function (status, msg) {
|
parent.parent.msgserver.sendMessage(cmdData.cmdargs['_'][0], cmdData.cmdargs['_'][1], domain, function (status, msg) {
|
||||||
|
|
|
@ -11987,12 +11987,15 @@
|
||||||
if ((serverinfo.userMsgProviders & 8) != 0) { y += '<option value=8>' + "XMPP" + '</option>'; }
|
if ((serverinfo.userMsgProviders & 8) != 0) { y += '<option value=8>' + "XMPP" + '</option>'; }
|
||||||
if ((serverinfo.userMsgProviders & 16) != 0) { y += '<option value=16>' + "CallMeBot" + '</option>'; }
|
if ((serverinfo.userMsgProviders & 16) != 0) { y += '<option value=16>' + "CallMeBot" + '</option>'; }
|
||||||
if ((serverinfo.userMsgProviders & 32) != 0) { y += '<option value=32>' + "Pushover" + '</option>'; }
|
if ((serverinfo.userMsgProviders & 32) != 0) { y += '<option value=32>' + "Pushover" + '</option>'; }
|
||||||
|
if ((serverinfo.userMsgProviders & 64) != 0) { y += '<option value=64>' + "ntfy" + '</option>'; }
|
||||||
y += '</select>';
|
y += '</select>';
|
||||||
x += '<table><tr><td>' + "Service" + '<td>' + y;
|
x += '<table><tr><td>' + "Service" + '<td>' + y;
|
||||||
x += '<tr><td>' + "Handle" + '<td><input maxlength=1024 style=width:160px;margin-left:8px id=d2handleinput onKeyUp=account_manageMessagingValidate() onkeypress="if (event.key==\'Enter\') account_manageMessagingValidate(1)">';
|
x += '<tr><td>' + "Handle" + '<td><input maxlength=1024 style=width:160px;margin-left:8px id=d2handleinput onKeyUp=account_manageMessagingValidate() onkeypress="if (event.key==\'Enter\') account_manageMessagingValidate(1)">';
|
||||||
x += '</table>';
|
x += '</table>';
|
||||||
if (serverinfo.discordUrl) { x += '<div id=d2discordurl style=display:none><br /><a href=' + serverinfo.discordUrl + ' target="_discord">' + "Join this Discord server to receive notifications." + '</a></div>'; }
|
if (serverinfo.discordUrl) { x += '<div id=d2discordurl style=display:none><br /><a href=' + serverinfo.discordUrl + ' target="_discord">' + "Join this Discord server to receive notifications." + '</a></div>'; }
|
||||||
x += '<div id=d2callmebotinfo style=display:none><br /><a href=https://www.callmebot.com/blog/free-api-signal-send-messages/ target="_callmebot">' + "Signal" + '</a>, <a href=https://www.callmebot.com/blog/free-api-whatsapp-messages/ target="_callmebot">' + "Whatsapp" + '</a>, <a href=https://www.callmebot.com/blog/free-api-facebook-messenger/ target="_callmebot">' + "Facebook" + '</a></div>';
|
x += '<div id=d2callmebotinfo style=display:none><br /><a href=https://www.callmebot.com/blog/free-api-signal-send-messages/ target="_callmebot">' + "Signal" + '</a>, <a href=https://www.callmebot.com/blog/free-api-whatsapp-messages/ target="_callmebot">' + "Whatsapp" + '</a>, <a href=https://www.callmebot.com/blog/free-api-facebook-messenger/ target="_callmebot">' + "Facebook" + '</a></div>';
|
||||||
|
x += '<div id=d2pushoverinfo style=display:none><br /><a href=https://pushover.net/ target="_pushover">' + "Information at Pushover.net" + '</a></div>';
|
||||||
|
x += '<div id=d2ntfyinfo style=display:none><br /><a href=https://ntfy.sh/ target="_ntfy">' + "Free service at ntfy.sh" + '</a></div>';
|
||||||
setDialogMode(2, "Messaging Notifications", 3, account_manageMessagingAdd, x, 'verifyMessaging');
|
setDialogMode(2, "Messaging Notifications", 3, account_manageMessagingAdd, x, 'verifyMessaging');
|
||||||
Q('d2handleinput').focus();
|
Q('d2handleinput').focus();
|
||||||
account_manageMessagingValidate();
|
account_manageMessagingValidate();
|
||||||
|
@ -12002,10 +12005,13 @@
|
||||||
function account_manageMessagingValidate(x) {
|
function account_manageMessagingValidate(x) {
|
||||||
if (serverinfo.discordUrl) { QV('d2discordurl', Q('d2serviceselect').value == 4); }
|
if (serverinfo.discordUrl) { QV('d2discordurl', Q('d2serviceselect').value == 4); }
|
||||||
QV('d2callmebotinfo', Q('d2serviceselect').value == 16);
|
QV('d2callmebotinfo', Q('d2serviceselect').value == 16);
|
||||||
|
QV('d2pushoverinfo', Q('d2serviceselect').value == 32);
|
||||||
|
QV('d2ntfyinfo', Q('d2serviceselect').value == 64);
|
||||||
if (Q('d2serviceselect').value == 4) { Q('d2handleinput')['placeholder'] = "Username:0000"; }
|
if (Q('d2serviceselect').value == 4) { Q('d2handleinput')['placeholder'] = "Username:0000"; }
|
||||||
else if (Q('d2serviceselect').value == 8) { Q('d2handleinput')['placeholder'] = "username@server.com"; }
|
else if (Q('d2serviceselect').value == 8) { Q('d2handleinput')['placeholder'] = "username@server.com"; }
|
||||||
else if (Q('d2serviceselect').value == 16) { Q('d2handleinput')['placeholder'] = "https://api.callmebot.com/..."; }
|
else if (Q('d2serviceselect').value == 16) { Q('d2handleinput')['placeholder'] = "https://api.callmebot.com/..."; }
|
||||||
else if (Q('d2serviceselect').value == 32) { Q('d2handleinput')['placeholder'] = "User key"; }
|
else if (Q('d2serviceselect').value == 32) { Q('d2handleinput')['placeholder'] = "User key"; }
|
||||||
|
else if (Q('d2serviceselect').value == 64) { Q('d2handleinput')['placeholder'] = "Topic"; }
|
||||||
else { Q('d2handleinput')['placeholder'] = "Username"; }
|
else { Q('d2handleinput')['placeholder'] = "Username"; }
|
||||||
var ok = (Q('d2handleinput').value.length > 0); QE('idx_dlgOkButton', ok); if ((x == 1) && ok) { dialogclose(1); }
|
var ok = (Q('d2handleinput').value.length > 0); QE('idx_dlgOkButton', ok); if ((x == 1) && ok) { dialogclose(1); }
|
||||||
}
|
}
|
||||||
|
@ -15870,12 +15876,15 @@
|
||||||
if ((serverinfo.userMsgProviders & 8) != 0) { y += '<option value=8>' + "XMPP" + '</option>'; }
|
if ((serverinfo.userMsgProviders & 8) != 0) { y += '<option value=8>' + "XMPP" + '</option>'; }
|
||||||
if ((serverinfo.userMsgProviders & 16) != 0) { y += '<option value=16>' + "CallMeBot" + '</option>'; }
|
if ((serverinfo.userMsgProviders & 16) != 0) { y += '<option value=16>' + "CallMeBot" + '</option>'; }
|
||||||
if ((serverinfo.userMsgProviders & 32) != 0) { y += '<option value=32>' + "Pushover" + '</option>'; }
|
if ((serverinfo.userMsgProviders & 32) != 0) { y += '<option value=32>' + "Pushover" + '</option>'; }
|
||||||
|
if ((serverinfo.userMsgProviders & 64) != 0) { y += '<option value=64>' + "ntfy" + '</option>'; }
|
||||||
y += '</select>';
|
y += '</select>';
|
||||||
x += '<table style=margin-top:12px><tr><td>' + "Service" + '<td>' + y;
|
x += '<table style=margin-top:12px><tr><td>' + "Service" + '<td>' + y;
|
||||||
x += '<tr><td>' + "Handle" + '<td><input maxlength=1024 style=width:160px;margin-left:8px id=d2handleinput onKeyUp=p30editMessagingValidate() onkeypress="if (event.key==\'Enter\') p30editMessagingValidate(1)">';
|
x += '<tr><td>' + "Handle" + '<td><input maxlength=1024 style=width:160px;margin-left:8px id=d2handleinput onKeyUp=p30editMessagingValidate() onkeypress="if (event.key==\'Enter\') p30editMessagingValidate(1)">';
|
||||||
x += '</table>';
|
x += '</table>';
|
||||||
if (serverinfo.discordUrl) { x += '<div id=d2discordurl style=display:none><br /><a href=' + serverinfo.discordUrl + ' target="_discord">' + "Join this Discord server to receive notifications." + '</a></div>' }
|
if (serverinfo.discordUrl) { x += '<div id=d2discordurl style=display:none><br /><a href=' + serverinfo.discordUrl + ' target="_discord">' + "Join this Discord server to receive notifications." + '</a></div>' }
|
||||||
x += '<div id=d2callmebotinfo style=display:none><br /><a href=https://www.callmebot.com/blog/free-api-signal-send-messages/ target="_callmebot">' + "Signal" + '</a>, <a href=https://www.callmebot.com/blog/free-api-whatsapp-messages/ target="_callmebot">' + "Whatsapp" + '</a>, <a href=https://www.callmebot.com/blog/free-api-facebook-messenger/ target="_callmebot">' + "Facebook" + '</a></div>';
|
x += '<div id=d2callmebotinfo style=display:none><br /><a href=https://www.callmebot.com/blog/free-api-signal-send-messages/ target="_callmebot">' + "Signal" + '</a>, <a href=https://www.callmebot.com/blog/free-api-whatsapp-messages/ target="_callmebot">' + "Whatsapp" + '</a>, <a href=https://www.callmebot.com/blog/free-api-facebook-messenger/ target="_callmebot">' + "Facebook" + '</a></div>';
|
||||||
|
x += '<div id=d2pushoverinfo style=display:none><br /><a href=https://pushover.net/ target="_pushover">' + "Information at Pushover.net" + '</a></div>';
|
||||||
|
x += '<div id=d2ntfyinfo style=display:none><br /><a href=https://ntfy.sh/ target="_ntfy">' + "Free service at ntfy.sh" + '</a></div>';
|
||||||
setDialogMode(2, "Messaging Notifications", 3, p30editMessagingEx, x, 'verifyMessaging');
|
setDialogMode(2, "Messaging Notifications", 3, p30editMessagingEx, x, 'verifyMessaging');
|
||||||
Q('d2handleinput').focus();
|
Q('d2handleinput').focus();
|
||||||
if (userinfo.msghandle) {
|
if (userinfo.msghandle) {
|
||||||
|
@ -15890,6 +15899,7 @@
|
||||||
if ((toData[0] == 'facebook') && (toData.length == 2)) { Q('d2handleinput').value = 'https://api.callmebot.com/facebook/send.php?apikey=' + decodeURIComponent(toData[1]); }
|
if ((toData[0] == 'facebook') && (toData.length == 2)) { Q('d2handleinput').value = 'https://api.callmebot.com/facebook/send.php?apikey=' + decodeURIComponent(toData[1]); }
|
||||||
}
|
}
|
||||||
if (userinfo.msghandle.startsWith('pushover:') && ((serverinfo.userMsgProviders & 32) != 0)) { Q('d2serviceselect').value = 32; Q('d2handleinput').value = userinfo.msghandle.substring(9); }
|
if (userinfo.msghandle.startsWith('pushover:') && ((serverinfo.userMsgProviders & 32) != 0)) { Q('d2serviceselect').value = 32; Q('d2handleinput').value = userinfo.msghandle.substring(9); }
|
||||||
|
if (userinfo.msghandle.startsWith('ntfy:') && ((serverinfo.userMsgProviders & 64) != 0)) { Q('d2serviceselect').value = 64; Q('d2handleinput').value = userinfo.msghandle.substring(5); }
|
||||||
}
|
}
|
||||||
p30editMessagingValidate();
|
p30editMessagingValidate();
|
||||||
}
|
}
|
||||||
|
@ -15898,11 +15908,14 @@
|
||||||
QE('d2handleinput', Q('d2serviceselect').value != 0);
|
QE('d2handleinput', Q('d2serviceselect').value != 0);
|
||||||
if (serverinfo.discordUrl) { QV('d2discordurl', Q('d2serviceselect').value == 4); }
|
if (serverinfo.discordUrl) { QV('d2discordurl', Q('d2serviceselect').value == 4); }
|
||||||
QV('d2callmebotinfo', Q('d2serviceselect').value == 16);
|
QV('d2callmebotinfo', Q('d2serviceselect').value == 16);
|
||||||
|
QV('d2pushoverinfo', Q('d2serviceselect').value == 32);
|
||||||
|
QV('d2ntfyinfo', Q('d2serviceselect').value == 64);
|
||||||
if (Q('d2serviceselect').value == 0) { Q('d2handleinput')['placeholder'] = ''; }
|
if (Q('d2serviceselect').value == 0) { Q('d2handleinput')['placeholder'] = ''; }
|
||||||
else if (Q('d2serviceselect').value == 4) { Q('d2handleinput')['placeholder'] = "Username:0000"; }
|
else if (Q('d2serviceselect').value == 4) { Q('d2handleinput')['placeholder'] = "Username:0000"; }
|
||||||
else if (Q('d2serviceselect').value == 8) { Q('d2handleinput')['placeholder'] = "username@server.com"; }
|
else if (Q('d2serviceselect').value == 8) { Q('d2handleinput')['placeholder'] = "username@server.com"; }
|
||||||
else if (Q('d2serviceselect').value == 16) { Q('d2handleinput')['placeholder'] = "https://api.callmebot.com/..."; }
|
else if (Q('d2serviceselect').value == 16) { Q('d2handleinput')['placeholder'] = "https://api.callmebot.com/..."; }
|
||||||
else if (Q('d2serviceselect').value == 32) { Q('d2handleinput')['placeholder'] = "User key"; }
|
else if (Q('d2serviceselect').value == 32) { Q('d2handleinput')['placeholder'] = "User key"; }
|
||||||
|
else if (Q('d2serviceselect').value == 64) { Q('d2handleinput')['placeholder'] = "Topic"; }
|
||||||
else { Q('d2handleinput')['placeholder'] = "Username"; }
|
else { Q('d2handleinput')['placeholder'] = "Username"; }
|
||||||
if (x == 1) { dialogclose(1); }
|
if (x == 1) { dialogclose(1); }
|
||||||
}
|
}
|
||||||
|
@ -15915,6 +15928,8 @@
|
||||||
else if (Q('d2serviceselect').value == 4) { handle = 'discord:' + Q('d2handleinput').value; }
|
else if (Q('d2serviceselect').value == 4) { handle = 'discord:' + Q('d2handleinput').value; }
|
||||||
else if (Q('d2serviceselect').value == 8) { handle = 'xmpp:' + Q('d2handleinput').value; }
|
else if (Q('d2serviceselect').value == 8) { handle = 'xmpp:' + Q('d2handleinput').value; }
|
||||||
else if (Q('d2serviceselect').value == 16) { handle = 'callmebot:' + Q('d2handleinput').value; }
|
else if (Q('d2serviceselect').value == 16) { handle = 'callmebot:' + Q('d2handleinput').value; }
|
||||||
|
else if (Q('d2serviceselect').value == 32) { handle = 'pushover:' + Q('d2handleinput').value; }
|
||||||
|
else if (Q('d2serviceselect').value == 64) { handle = 'ntfy:' + Q('d2handleinput').value; }
|
||||||
if (handle != null) { meshserver.send({ action: 'edituser', id: currentUser._id, msghandle: handle }); }
|
if (handle != null) { meshserver.send({ action: 'edituser', id: currentUser._id, msghandle: handle }); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue