Jaseem Abid
631eeb0816
Validate ntfy.sh URL before use
...
I had a couple of panics due to invalid URL, which could have been an
error message during startup.
Example:
Apr 01 17:33:49 nyx.jabid.in alertmanager-ntfy[878013]: 2024/04/01 17:33:49 Received valid hook from 127.0.0.1:43130
Apr 01 17:33:49 nyx.jabid.in alertmanager-ntfy[878013]: 2024/04/01 17:33:49 Processing alert: {firing map[alertname:Target Down instance:devkit.local:80 job:esphome severity:high] map[description:The target is not reachable summary:Target is down] 2024->
Apr 01 17:33:49 nyx.jabid.in alertmanager-ntfy[878013]: 2024/04/01 17:33:49 http: panic serving 127.0.0.1:43130: runtime error: invalid memory address or nil pointer dereference
Apr 01 17:33:49 nyx.jabid.in alertmanager-ntfy[878013]: goroutine 1013 [running]:
Apr 01 17:33:49 nyx.jabid.in alertmanager-ntfy[878013]: net/http.(*conn).serve.func1()
Apr 01 17:33:49 nyx.jabid.in alertmanager-ntfy[878013]: /usr/lib/go/src/net/http/server.go:1868 +0xb9
Apr 01 17:33:49 nyx.jabid.in alertmanager-ntfy[878013]: panic({0x840200?, 0xd01360?})
Apr 01 17:33:49 nyx.jabid.in alertmanager-ntfy[878013]: /usr/lib/go/src/runtime/panic.go:920 +0x270
Apr 01 17:33:49 nyx.jabid.in alertmanager-ntfy[878013]: main.WebhookHandler({0xa1d5f0, 0xc00038e000}, 0xc0001b0000)
Apr 01 17:33:49 nyx.jabid.in alertmanager-ntfy[878013]: /home/j/src/alertmanager-ntfy/main.go:45 +0xbf2
Apr 01 17:33:49 nyx.jabid.in alertmanager-ntfy[878013]: net/http.HandlerFunc.ServeHTTP(0x10?, {0xa1d5f0?, 0xc00038e000?}, 0xc0004020ac?)
Apr 01 17:33:49 nyx.jabid.in alertmanager-ntfy[878013]: /usr/lib/go/src/net/http/server.go:2136 +0x29
Apr 01 17:33:49 nyx.jabid.in alertmanager-ntfy[878013]: net/http.(*ServeMux).ServeHTTP(0x411f45?, {0xa1d5f0, 0xc00038e000}, 0xc0001b0000)
Apr 01 17:33:49 nyx.jabid.in alertmanager-ntfy[878013]: /usr/lib/go/src/net/http/server.go:2514 +0x142
Apr 01 17:33:49 nyx.jabid.in alertmanager-ntfy[878013]: net/http.serverHandler.ServeHTTP({0xa1c0c0?}, {0xa1d5f0?, 0xc00038e000?}, 0x6?)
Apr 01 17:33:49 nyx.jabid.in alertmanager-ntfy[878013]: /usr/lib/go/src/net/http/server.go:2938 +0x8e
Apr 01 17:33:49 nyx.jabid.in alertmanager-ntfy[878013]: net/http.(*conn).serve(0xc0000d21b0, {0xa1e1f0, 0xc00027a600})
Apr 01 17:33:49 nyx.jabid.in alertmanager-ntfy[878013]: /usr/lib/go/src/net/http/server.go:2009 +0x5f4
Apr 01 17:33:49 nyx.jabid.in alertmanager-ntfy[878013]: created by net/http.(*Server).Serve in goroutine 1
Apr 01 17:33:49 nyx.jabid.in alertmanager-ntfy[878013]: /usr/lib/go/src/net/http/server.go:3086 +0x5cb
2024-04-01 19:21:37 +01:00
Jaseem Abid
cc35ddbe0f
Enable basic auth only if username/password is set
...
Empty password leads to an authorization error, which isn't ideal.
Also log the response in case its an error, I think this would be handy
in case the upstream starts misbehaving. By default won't add to log
noise.
Example:
```
curl -s -u ':' -d "test" ntfy.sh/test | jq .
{
"code": 40101,
"http": 401,
"error": "unauthorized",
"link": "https://ntfy.sh/docs/publish/#authentication "
}
```
2023-02-10 19:35:21 +00:00