github nicholas-fedor/shoutrrr v0.23.0

4 hours ago

What's Changed

Shoutrrr v0.23.0 adds improved service URL validation and service standardization. TLS, timeout, and logging behavior should be more consistent. Leveled logging is now supported through log/slog. skiptlsverify is also supported for more services that can be self-hosted.

URL Validation

Service URLs that break these rules are now rejected when they are read.

  • Discord webhook and thread IDs must be numeric.
  • A Twilio account SID must be AC followed by 32 hexadecimal characters.
  • A Google Chat URL must include its space path.
  • A Zulip URL must include an API key.
  • A Lark token must be a single path segment.
  • MQTT topics can't contain +, #, or a null character.
  • MQTT and SMTP ports must be between 1 and 65535.
  • Rocket.Chat and Zulip reject unknown query keys.
  • A query can't contain a malformed escape or a literal semicolon, except in ntfy.
  • A setting can't be given under two spellings, such as title and Title.
  • A URL can't end in a bare #.

Send Checks

  • Each send checks its config the same way reading its URL does, before any request or connection. A config built in code or changed by send params now fails the send when its URL would be rejected.
  • Unknown send params fail the send in Google Chat, Join, Notifiarr, Rocket.Chat, and Zulip, and in Discord sends of raw JSON. The title, message, and level params are still accepted everywhere.
  • A Matrix send without configured rooms fails when the account has joined none.
  • An IFTTT send fails when its events param empties the list.
  • A Discord message that is only whitespace fails.

TLS

  • Gotify's disabletls no longer skips certificate verification. Add skiptlsverify=yes to keep skipping it.
  • GetURL writes the skiptlsverify key for Gotify, ntfy, and MQTT. Releases before v0.23.0 reject that key.

Timeouts

  • A send without a deadline is bounded by its service's own time budget.
  • A router timeout longer than 10 seconds is now honored.
  • The default HTTP clients no longer set a request timeout of their own.

Logging

  • Plain loggers receive lines in the form LEVEL message key=value, so warnings start with WARN instead of Warning:.
  • Success and progress messages log at Debug.
  • Errors that a send returns are no longer logged as well.

Deprecations

The following items are deprecated in this release. See the Deprecations documentation page for more information.

URL Settings

Service Deprecated Replacement
Bark scheme disabletls
Gotify insecureskipverify skiptlsverify
MQTT disabletlsverification skiptlsverify
ntfy disabletlsverification skiptlsverify
ntfy scheme disabletls

Go API

Package Deprecated Replacement
bark Config.Scheme Config.DisableTLS
bark HTTPClient types.HTTPClient
bark DefaultHTTPClient Service.SetHTTPClient
bark NewDefaultHTTPClient Service.SetHTTPClient
bark Service.HTTPClient Service.SetHTTPClient
discord HTTPClient types.HTTPClient
discord DefaultHTTPClient Service.SetHTTPClient
discord NewDefaultHTTPClient Service.SetHTTPClient
discord Service.HTTPClient Service.SetHTTPClient
gotify Config.InsecureSkipVerify Config.SkipTLSVerify
gotify HTTPClientManager Service.SetHTTPClient
gotify DefaultHTTPClientManager Service.SetHTTPClient
gotify HTTPTimeout None. Sends use the Service.ServiceTimeout budget.
lark ErrMissingHost None. No function returns it.
matrix HTTPClient types.HTTPClient
matrix DefaultHTTPClient Service.SetHTTPClient
mqtt Config.DisableTLSVerification Config.SkipTLSVerify
ntfy Config.DisableTLSVerification Config.SkipTLSVerify
ntfy Config.Scheme Config.DisableTLS
ntfy HTTPTimeout None. Sends use the Service.ServiceTimeout budget.
pushover Service.Client Service.SetHTTPClient
rocketchat Service.Client Service.SetHTTPClient
rocketchat ErrInvalidURLScheme None. No function returns it.
standard Logger.Log Logger.Debug, Logger.Info, or Logger.Warn
standard Logger.Logf Logger.Debug, Logger.Info, or Logger.Warn
teams HTTPClient types.HTTPClient
twilio HTTPClient types.HTTPClient
twilio DefaultHTTPClient Service.SetHTTPClient
twilio Service.HTTPClient Service.SetHTTPClient
zulip HTTPClient types.HTTPClient
zulip DefaultHTTPClient Service.SetHTTPClient
zulip NewDefaultHTTPClient Service.SetHTTPClient
zulip Service.HTTPClient Service.SetHTTPClient

Commits

Features

Fixes

Dependency Updates

  • chore(deps): update module golang.org/x/net to v0.62.0 by @renovate[bot] in #1902
  • chore(deps): update module go.yaml.in/yaml/v3 to v3.0.6 by @renovate[bot] in #2006

Full Changelog: v0.22.1...v0.23.0

Don't miss a new shoutrrr release

NewReleases is sending notifications on new releases.