From 6a52d2a96844d0e53043ceaf14fe05a3a507c52f Mon Sep 17 00:00:00 2001 From: Vito0912 <86927734+Vito0912@users.noreply.github.com> Date: Sun, 3 Aug 2025 13:52:58 +0200 Subject: [PATCH 1/7] CORS --- client/pages/config/index.vue | 25 +++++++++++++++++++++++ server/Server.js | 4 ++-- server/objects/settings/ServerSettings.js | 3 +++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/client/pages/config/index.vue b/client/pages/config/index.vue index 7083c789..0a885854 100644 --- a/client/pages/config/index.vue +++ b/client/pages/config/index.vue @@ -144,6 +144,10 @@ +
+ +
+ @@ -338,7 +338,7 @@ export default { }) if (containsInvalid) { - this.$toast.error('Invalid CORS origin') + this.$toast.error(this.$strings.ToastInvalidUrls) this.newServerSettings.allowedOrigins = val.map((origin) => origin.trim().toLowerCase()) return } diff --git a/client/strings/en-us.json b/client/strings/en-us.json index f31a8a1d..d5e57847 100644 --- a/client/strings/en-us.json +++ b/client/strings/en-us.json @@ -293,6 +293,7 @@ "LabelContinueListening": "Continue Listening", "LabelContinueReading": "Continue Reading", "LabelContinueSeries": "Continue Series", + "LabelCorsAllowed": "Allowed CORS", "LabelCover": "Cover", "LabelCoverImageURL": "Cover Image URL", "LabelCoverProvider": "Cover Provider", @@ -1034,6 +1035,7 @@ "ToastInvalidImageUrl": "Invalid image URL", "ToastInvalidMaxEpisodesToDownload": "Invalid max episodes to download", "ToastInvalidUrl": "Invalid URL", + "ToastInvalidUrls": "One or more URLs are invalid", "ToastItemCoverUpdateSuccess": "Item cover updated", "ToastItemDeletedFailed": "Failed to delete item", "ToastItemDeletedSuccess": "Deleted item", From e408070b19c0f6aacb436cd639e76f46603a6e0e Mon Sep 17 00:00:00 2001 From: Vito0912 <86927734+Vito0912@users.noreply.github.com> Date: Sun, 3 Aug 2025 14:02:33 +0200 Subject: [PATCH 3/7] better heading --- client/strings/en-us.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/strings/en-us.json b/client/strings/en-us.json index d5e57847..9b97d727 100644 --- a/client/strings/en-us.json +++ b/client/strings/en-us.json @@ -293,7 +293,7 @@ "LabelContinueListening": "Continue Listening", "LabelContinueReading": "Continue Reading", "LabelContinueSeries": "Continue Series", - "LabelCorsAllowed": "Allowed CORS", + "LabelCorsAllowed": "Allowed CORS Origins", "LabelCover": "Cover", "LabelCoverImageURL": "Cover Image URL", "LabelCoverProvider": "Cover Provider", From 1097de6f1fdfaa78c8e9105c1cb7efd1e352a2e9 Mon Sep 17 00:00:00 2001 From: Vito0912 <86927734+Vito0912@users.noreply.github.com> Date: Mon, 4 Aug 2025 19:17:46 +0200 Subject: [PATCH 4/7] now updates the input field --- client/pages/config/index.vue | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/client/pages/config/index.vue b/client/pages/config/index.vue index fdc811c1..8796d52a 100644 --- a/client/pages/config/index.vue +++ b/client/pages/config/index.vue @@ -328,24 +328,25 @@ export default { this.updateSettingsKey('language', val) }, updateCorsOrigins(val) { - const containsInvalid = val.some((origin) => { + const validOrigins = [] + const invalidOrigins = [] + + val.forEach((origin) => { + const trimmedOrigin = origin.trim().toLowerCase() try { - new URL(origin) - return false + new URL(trimmedOrigin) + validOrigins.push(trimmedOrigin) } catch { - return true + invalidOrigins.push(trimmedOrigin) } }) - if (containsInvalid) { + if (invalidOrigins.length > 0) { this.$toast.error(this.$strings.ToastInvalidUrls) - this.newServerSettings.allowedOrigins = val.map((origin) => origin.trim().toLowerCase()) - return } - this.newServerSettings.allowedOrigins = val.map((origin) => origin.trim().toLowerCase()) - - this.updateSettingsKey('allowedOrigins', this.newServerSettings.allowedOrigins) + this.newServerSettings.allowedOrigins = validOrigins + this.updateSettingsKey('allowedOrigins', validOrigins) }, updateSettingsKey(key, val) { if (key === 'scannerDisableWatcher') { From df3878d4cad448d0f450845059724bec200bdb31 Mon Sep 17 00:00:00 2001 From: advplyr Date: Mon, 4 Aug 2025 17:54:29 -0500 Subject: [PATCH 5/7] Add Security section to settings with allowed cors origin setting, increase width of setting inputs --- client/pages/config/index.vue | 12 ++++++++---- client/strings/en-us.json | 1 + 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/client/pages/config/index.vue b/client/pages/config/index.vue index 8796d52a..1fd2cbcc 100644 --- a/client/pages/config/index.vue +++ b/client/pages/config/index.vue @@ -131,21 +131,25 @@
- +

{{ $strings.LabelExample }}: {{ dateExample }}

- +

{{ $strings.LabelExample }}: {{ timeExample }}

- + +
+ +
+

{{ $strings.HeaderSettingsSecurity }}

- +
diff --git a/client/strings/en-us.json b/client/strings/en-us.json index 9b97d727..87d4887d 100644 --- a/client/strings/en-us.json +++ b/client/strings/en-us.json @@ -198,6 +198,7 @@ "HeaderSettingsDisplay": "Display", "HeaderSettingsExperimental": "Experimental Features", "HeaderSettingsGeneral": "General", + "HeaderSettingsSecurity": "Security", "HeaderSettingsScanner": "Scanner", "HeaderSettingsWebClient": "Web Client", "HeaderSleepTimer": "Sleep Timer", From 1908ec3df5a18d4fcfb28a171e29ec69c2eaf532 Mon Sep 17 00:00:00 2001 From: advplyr Date: Mon, 4 Aug 2025 17:54:59 -0500 Subject: [PATCH 6/7] Remove commented out experimental features setting --- client/pages/config/index.vue | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/client/pages/config/index.vue b/client/pages/config/index.vue index 1fd2cbcc..3d030bb3 100644 --- a/client/pages/config/index.vue +++ b/client/pages/config/index.vue @@ -151,23 +151,6 @@
- - - From 08c9e8d47d76c29b2ad78731ffb09061a6d131ee Mon Sep 17 00:00:00 2001 From: advplyr Date: Mon, 4 Aug 2025 17:56:56 -0500 Subject: [PATCH 7/7] Fix i18n string order --- client/strings/en-us.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/strings/en-us.json b/client/strings/en-us.json index 87d4887d..70ac874d 100644 --- a/client/strings/en-us.json +++ b/client/strings/en-us.json @@ -198,8 +198,8 @@ "HeaderSettingsDisplay": "Display", "HeaderSettingsExperimental": "Experimental Features", "HeaderSettingsGeneral": "General", - "HeaderSettingsSecurity": "Security", "HeaderSettingsScanner": "Scanner", + "HeaderSettingsSecurity": "Security", "HeaderSettingsWebClient": "Web Client", "HeaderSleepTimer": "Sleep Timer", "HeaderStatsLargestItems": "Largest Items",