Ntfy trigger not working with authentication on a selfhosted instance
Closed this issue · 4 comments
When trying to configure a Ntfy trigger to my selfhosted Ntfy instance using authentication, the WUD docker logs show error 403 forbidden.
I have tried with both username and password and a token with the same result. Both the username and password and the token were verified to be working outside of the WUD container.
I configured it to connect to the public ntfy.sh server and the notification worked as expected. It is only when sending to my selfhosted instance that requires authentication that it is failing.
Docker compose environment options for WUD:
environment:
- WUD_TRIGGER_NTFY_SELFHOSTED_URL=https://xxxxxxxxxxxxxxx
- WUD_TRIGGER_NTFY_SELFHOSTED_TOPIC=wud
- WUD_TRIGGER_NTFY_SELFHOSTED_PRIORITY=2
- WUD_TRIGGER_NTFY_SELFHOSTED_AUTH_USER=xxxxxxx
- WUD_TRIGGER_NTFY_SELFHOSTED_AUTH_PASSWORD=xxxxxxxxxxxxxxxxxxxxx
- WUD_TRIGGER_NTFY_SELFHOSTED_MODE=batch
- WUD_WATCHER_LOCAL_SOCKET=/var/run/docker.sock
WUD docker logs:
01:13:35.842 INFO whats-up-docker/watcher.docker.local: Cron finished (6 containers watched, 0 errors, 5 available updates)
01:13:35.986 WARN whats-up-docker/trigger.ntfy.selfhosted: Error (403 - {"code":40301,"http":403,"error":"forbidden","link":"https://ntfy.sh/docs/publish/#authentication"})
01:13:35.987 DEBUG whats-up-docker/trigger.ntfy.selfhosted: 403 - {"code":40301,"http":403,"error":"forbidden","link":"https://ntfy.sh/docs/publish/#authentication"}
StatusCodeError: 403 - {"code":40301,"http":403,"error":"forbidden","link":"https://ntfy.sh/docs/publish/#authentication"}
at new StatusCodeError (/home/node/app/node_modules/request-promise-native/node_modules/request-promise-core/lib/errors.js:32:15)
at plumbing.callback (/home/node/app/node_modules/request-promise-native/node_modules/request-promise-core/lib/plumbing.js:104:33)
at Request.RP$callback [as _callback] (/home/node/app/node_modules/request-promise-native/node_modules/request-promise-core/lib/plumbing.js:46:31)
at self.callback (/home/node/app/node_modules/request/request.js:185:22)
at Request.emit (node:events:517:28)
at Request.emit (node:domain:489:12)
at Request.<anonymous> (/home/node/app/node_modules/request/request.js:1154:10)
at Request.emit (node:events:517:28)
at Request.emit (node:domain:489:12)
at IncomingMessage.<anonymous> (/home/node/app/node_modules/request/request.js:1076:12)
at Object.onceWrapper (node:events:631:28)
at IncomingMessage.emit (node:events:529:35)
at IncomingMessage.emit (node:domain:489:12)
at endReadableNT (node:internal/streams/readable:1400:12)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
First: thanks for the new feature! Now I can stop using a nodered-service to reformat a WUD-post-request so ntfy can understand it :).
Unfortunately I'm also unable to get authentication working.
Looking at the code, I think the issue is at the if-structures at line 78 (user/password) and 84 (bearer-token) in the ntfy.js file.
The if-clause checks this.configuration.user
and this.configuration.password
but then uses this.configuration.auth.user
and this.configuration.auth.password
.
(I'm unfamiliar with this programming language, so I could be wrong.)
if (this.configuration.auth && this.configuration.user && this.configuration.password) {
options.auth = {
user: this.configuration.auth.user,
pass: this.configuration.auth.password,
};
}
Should be
if (this.configuration.auth && this.configuration.auth.user && this.configuration.auth.password) {
...
}
Same for the token-if: checks this.configuration.token
, uses this.configuration.auth.bearer
if (this.configuration.auth && this.configuration.token) {
options.auth = {
bearer: this.configuration.auth.bearer,
};
}
Should be (using this.configuration.auth.token as per the docs, but could be wrong here)
if (this.configuration.auth && this.configuration.auth.token) {
options.auth = {
bearer: this.configuration.auth.token,
};
}
Thank you both for your feedback and your analysis 👍 .
Actually I didn't test that part by a lack of time (or laziness 🤔 )...
@joost471 you're right; there is a glitch with the condition; I'm going to fix it.
Released in 7.1.1
And it works! Thanks for the great app and the quick response!