diff --git a/docs/docs/meshcentral/config.md b/docs/docs/meshcentral/config.md index 24a1be29..9c2aebe4 100644 --- a/docs/docs/meshcentral/config.md +++ b/docs/docs/meshcentral/config.md @@ -3410,6 +3410,10 @@ See description for information about each item. "userurl": { "type": "string", "description": "A URL given to users to help them setup this service." + }, + "authorization": { + "type": "string", + "description": "Authorization Header to include in the request" } }, "description": "Enabled ntfy.sh integration support." diff --git a/docs/docs/messaging/index.md b/docs/docs/messaging/index.md index 36a801e5..faf6da1f 100644 --- a/docs/docs/messaging/index.md +++ b/docs/docs/messaging/index.md @@ -202,7 +202,8 @@ For [self-hosting your own ntfy server](https://ntfy.sh/docs/install/) with [ACL "messaging": { "ntfy": { "host": "https://[my]ntfy.sh", - "userurl": "https://[my]ntfy.sh/userhelp" + "userurl": "https://[my]ntfy.sh/userhelp", + "authorization": "Basic cGhpbDpteXBhc3M=" } } } diff --git a/meshcentral-config-schema.json b/meshcentral-config-schema.json index 55755d1e..571cffd6 100644 --- a/meshcentral-config-schema.json +++ b/meshcentral-config-schema.json @@ -3408,6 +3408,10 @@ "userurl": { "type": "string", "description": "A URL given to users to help them setup this service." + }, + "authorization": { + "type": "string", + "description": "Authorization Header to include in the request" } }, "description": "Enabled ntfy.sh integration support." diff --git a/meshmessaging.js b/meshmessaging.js index 23e5c6e4..5d6c08cb 100644 --- a/meshmessaging.js +++ b/meshmessaging.js @@ -335,7 +335,8 @@ module.exports.CreateServer = function (parent) { 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 url = 'https://' + (((typeof parent.config.messaging.ntfy == 'object') && (typeof parent.config.messaging.ntfy.host == 'string')) ? parent.config.messaging.ntfy.host : 'ntfy.sh') + '/' + encodeURIComponent(to.substring(5)); - const req = require('https').request(new URL(url), { method: 'POST' }, function (res) { if (func != null) { func(true); } }); + const headers = (typeof parent.config.messaging.ntfy.authorization == 'string') ? { 'Authorization': parent.config.messaging.ntfy.authorization } : {}; + const req = require('https').request(new URL(url), { method: 'POST', headers: headers }, function (res) { if (func != null) { func(true); } }); req.on('error', function (err) { if (func != null) { func(false); } }); req.end(msg); } else if ((to.startsWith('zulip:')) && (obj.zulipClient != null)) { // zulip diff --git a/sample-config-advanced.json b/sample-config-advanced.json index f083d1e3..556ade53 100644 --- a/sample-config-advanced.json +++ b/sample-config-advanced.json @@ -628,6 +628,11 @@ "_discord": { "serverurl": "https://discord.gg/xxxxxxxxx", "token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxx" + }, + "_ntfy": { + "host": "https://[my]ntfy.sh", + "userurl": "https://[my]ntfy.sh/userhelp", + "authorization": "Basic xxxxxxxxxxxxxxxxxxxx" } } }