From 532d5b9b9affc3816f655ac94659fcb99d6aab3e Mon Sep 17 00:00:00 2001 From: Aria Moradi Date: Mon, 19 Feb 2024 02:17:29 +0330 Subject: [PATCH] Add auth support to socsk proxy --- .../graphql/mutations/SettingsMutation.kt | 2 ++ .../tachidesk/graphql/types/SettingsType.kt | 8 ++++++++ .../suwayomi/tachidesk/server/ServerConfig.kt | 2 ++ .../suwayomi/tachidesk/server/ServerSetup.kt | 17 ++++++++++++++--- server/src/main/resources/server-reference.conf | 2 ++ server/src/test/resources/server-reference.conf | 2 ++ 6 files changed, 30 insertions(+), 3 deletions(-) diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/SettingsMutation.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/SettingsMutation.kt index 2da0455a..e6c0de50 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/SettingsMutation.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/SettingsMutation.kt @@ -39,6 +39,8 @@ class SettingsMutation { updateSetting(settings.socksProxyEnabled, serverConfig.socksProxyEnabled) updateSetting(settings.socksProxyHost, serverConfig.socksProxyHost) updateSetting(settings.socksProxyPort, serverConfig.socksProxyPort) + updateSetting(settings.socksProxyUsername, serverConfig.socksProxyUsername) + updateSetting(settings.socksProxyPassword, serverConfig.socksProxyPassword) // webUI updateSetting(settings.webUIFlavor?.uiName, serverConfig.webUIFlavor) diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/SettingsType.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/SettingsType.kt index 0c4f45ef..4b3b1538 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/SettingsType.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/SettingsType.kt @@ -23,6 +23,8 @@ interface Settings : Node { val socksProxyEnabled: Boolean? val socksProxyHost: String? val socksProxyPort: String? + val socksProxyUsername: String? + val socksProxyPassword: String? // webUI // requires restart (found no way to mutate (serve + "unserve") served files during runtime), exclude for now @@ -94,6 +96,8 @@ data class PartialSettingsType( override val socksProxyEnabled: Boolean?, override val socksProxyHost: String?, override val socksProxyPort: String?, + override val socksProxyUsername: String?, + override val socksProxyPassword: String?, // webUI override val webUIFlavor: WebUIFlavor?, override val initialOpenInBrowserEnabled: Boolean?, @@ -152,6 +156,8 @@ class SettingsType( override val socksProxyEnabled: Boolean, override val socksProxyHost: String, override val socksProxyPort: String, + override val socksProxyUsername: String, + override val socksProxyPassword: String, // webUI override val webUIFlavor: WebUIFlavor, override val initialOpenInBrowserEnabled: Boolean, @@ -209,6 +215,8 @@ class SettingsType( config.socksProxyEnabled.value, config.socksProxyHost.value, config.socksProxyPort.value, + config.socksProxyUsername.value, + config.socksProxyPassword.value, // webUI WebUIFlavor.from(config.webUIFlavor.value), config.initialOpenInBrowserEnabled.value, diff --git a/server/src/main/kotlin/suwayomi/tachidesk/server/ServerConfig.kt b/server/src/main/kotlin/suwayomi/tachidesk/server/ServerConfig.kt index 8e811314..7e1edc67 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/server/ServerConfig.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/server/ServerConfig.kt @@ -82,6 +82,8 @@ class ServerConfig(getConfig: () -> Config, val moduleName: String = SERVER_CONF val socksProxyEnabled: MutableStateFlow by OverrideConfigValue(BooleanConfigAdapter) val socksProxyHost: MutableStateFlow by OverrideConfigValue(StringConfigAdapter) val socksProxyPort: MutableStateFlow by OverrideConfigValue(StringConfigAdapter) + val socksProxyUsername: MutableStateFlow by OverrideConfigValue(StringConfigAdapter) + val socksProxyPassword: MutableStateFlow by OverrideConfigValue(StringConfigAdapter) // webUI val webUIEnabled: MutableStateFlow by OverrideConfigValue(BooleanConfigAdapter) diff --git a/server/src/main/kotlin/suwayomi/tachidesk/server/ServerSetup.kt b/server/src/main/kotlin/suwayomi/tachidesk/server/ServerSetup.kt index f1b9cbc6..5c986cb1 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/server/ServerSetup.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/server/ServerSetup.kt @@ -236,14 +236,25 @@ fun applicationSetup() { serverConfig.socksProxyEnabled, serverConfig.socksProxyHost, serverConfig.socksProxyPort, - ) { proxyEnabled, proxyHost, proxyPort -> - Triple(proxyEnabled, proxyHost, proxyPort) + serverConfig.socksProxyUsername, + serverConfig.socksProxyPassword, + ) { proxyEnabled, proxyHost, proxyPort, proxyUsername, proxyPassword -> + data class DataClassForDestruction( + val proxyEnabled: Boolean, + val proxyHost: String, + val proxyPort: String, + val proxyUsername: String, + val proxyPassword: String, + ) + DataClassForDestruction(proxyEnabled, proxyHost, proxyPort, proxyUsername, proxyPassword) }, - { (proxyEnabled, proxyHost, proxyPort) -> + { (proxyEnabled, proxyHost, proxyPort, proxyUsername, proxyPassword) -> logger.info("Socks Proxy changed - enabled= $proxyEnabled, proxy= $proxyHost:$proxyPort") if (proxyEnabled) { System.getProperties()["socksProxyHost"] = proxyHost System.getProperties()["socksProxyPort"] = proxyPort + System.getProperties()["java.net.socks.username"] = proxyUsername + System.getProperties()["java.net.socks.password"] = proxyPassword } else { System.getProperties()["socksProxyHost"] = "" System.getProperties()["socksProxyPort"] = "" diff --git a/server/src/main/resources/server-reference.conf b/server/src/main/resources/server-reference.conf index 9ff691b7..fa9218be 100644 --- a/server/src/main/resources/server-reference.conf +++ b/server/src/main/resources/server-reference.conf @@ -6,6 +6,8 @@ server.port = 4567 server.socksProxyEnabled = false server.socksProxyHost = "" server.socksProxyPort = "" +server.socksProxyUsername = "" +server.socksProxyPassword = "" # webUI server.webUIEnabled = true diff --git a/server/src/test/resources/server-reference.conf b/server/src/test/resources/server-reference.conf index 99566947..2cc7351c 100644 --- a/server/src/test/resources/server-reference.conf +++ b/server/src/test/resources/server-reference.conf @@ -6,6 +6,8 @@ server.port = 4567 server.socksProxyEnabled = false server.socksProxyHost = "" server.socksProxyPort = "" +server.socksProxyUsername = "" +server.socksProxyPassword = "" # downloader server.downloadAsCbz = false