diff --git a/docs/publish.md b/docs/publish.md index 491327d9..71fc13bc 100644 --- a/docs/publish.md +++ b/docs/publish.md @@ -2678,6 +2678,27 @@ Here's a simple example: ])); ``` +#### Auth Query Param +In some instances, you may want to send auth credentials in the URL (e.g., a GET webhook or a JSON POST request). You +can use the `auth` query parameter. Set the value to the base64 encoding of the value of the `Authorization` header +and strip any trailing `=`. **Be sure to only send auth credentials over an HTTPS connection** + +Here is an example: +``` + Step 1. base64(user:pass) -> base64(testuser:fakepassword) -> dGVzdHVzZXI6ZmFrZXBhc3N3b3Jk + Step 2. Authorization header -> Basic base64(testuser:fakepassword) -> Basic dGVzdHVzZXI6ZmFrZXBhc3N3b3Jk + Step 3. base64(Authorization header) -> base64(Basic dGVzdHVzZXI6ZmFrZXBhc3N3b3Jk) -> QmFzaWMgZEdWemRIVnpaWEk2Wm1GclpYQmhjM04zYjNKaw== + Step 4. remove trailing `=` (if any) -> QmFzaWMgZEdWemRIVnpaWEk2Wm1GclpYQmhjM04zYjNKaw== -> QmFzaWMgZEdWemRIVnpaWEk2Wm1GclpYQmhjM04zYjNKaw + Step 5. add query param to URL -> https://ntfy.sh/topic -> https://ntfy.sh/topic?auth=QmFzaWMgZEdWemRIVnpaWEk2Wm1GclpYQmhjM04zYjNKaw +``` + +!!! note + Do NOT remove trailing `=` after step 2 + +The following command will generate the appropriate value for you on *nix systems: + +```echo -n "Basic `echo -n 'testuser:fakepassword' | base64`" | base64 | tr -d '='``` + ### Message caching !!! info If `Cache: no` is used, messages will only be delivered to connected subscribers, and won't be re-delivered if a diff --git a/docs/releases.md b/docs/releases.md index a4fb376f..c03d63ff 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -4,10 +4,15 @@ and the [ntfy Android app](https://github.com/binwiederhier/ntfy-android/release ## ntfy server v1.29.0 (UNRELEASED) +**Features:** + +* Allow IP CIDRs in `visitor-request-limit-exempt-hosts` ([#423](https://github.com/binwiederhier/ntfy/issues/423), thanks to [@karmanyaahm](https://github.com/karmanyaahm)) + **Bug fixes + maintenance:** * Subscriptions can now have a display name ([#370](https://github.com/binwiederhier/ntfy/issues/370), thanks to [@tfheen](https://github.com/tfheen) for reporting) * Bump Go version to Go 18.x ([#422](https://github.com/binwiederhier/ntfy/issues/422)) +* Web: Strip trailing slash when subscribing ([#428](https://github.com/binwiederhier/ntfy/issues/428), thanks to [@raining1123](https://github.com/raining1123) for reporting, and [@wunter8](https://github.com/wunter8) for fixing) * Allow empty passwords in `client.yml` ([#374](https://github.com/binwiederhier/ntfy/issues/374), thanks to [@cyqsimon](https://github.com/cyqsimon) for reporting, and [@wunter8](https://github.com/wunter8) for fixing) **Documentation:** diff --git a/web/src/components/SubscribeDialog.js b/web/src/components/SubscribeDialog.js index 9ab5a08f..62cfeb28 100644 --- a/web/src/components/SubscribeDialog.js +++ b/web/src/components/SubscribeDialog.js @@ -90,6 +90,13 @@ const SubscribePage = (props) => { return validTopic(topic) && !isExistingTopicUrl; } })(); + const updateBaseUrl = (ev, newVal) => { + if (validUrl(newVal)) { + props.setBaseUrl(newVal.replace(/\/$/, '')); // strip trailing slash after https?:// + } else { + props.setBaseUrl(newVal); + } + }; return ( <> {t("subscribe_dialog_subscribe_title")} @@ -128,7 +135,7 @@ const SubscribePage = (props) => { options={existingBaseUrls} sx={{ maxWidth: 400 }} inputValue={props.baseUrl} - onInputChange={(ev, newVal) => props.setBaseUrl(newVal)} + onInputChange={updateBaseUrl} renderInput={ (params) =>