From da4aedca979c54f0b42548b72f705984c4ab7fb1 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sat, 3 Jun 2023 16:54:04 +0300 Subject: [PATCH] Fix proxy authentication --- .../core/network/ProxyAuthenticator.kt | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/network/ProxyAuthenticator.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/network/ProxyAuthenticator.kt index bc1fb8d53..fb4ffad7e 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/network/ProxyAuthenticator.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/network/ProxyAuthenticator.kt @@ -6,12 +6,24 @@ import okhttp3.Request import okhttp3.Response import okhttp3.Route import org.koitharu.kotatsu.core.prefs.AppSettings +import java.net.PasswordAuthentication +import java.net.Proxy class ProxyAuthenticator( private val settings: AppSettings, -) : Authenticator { +) : Authenticator, java.net.Authenticator() { + + init { + setDefault(this) + } override fun authenticate(route: Route?, response: Response): Request? { + if (!isProxyEnabled()) { + return null + } + if (response.request.header(CommonHeaders.PROXY_AUTHORIZATION) != null) { + return null + } val login = settings.proxyLogin ?: return null val password = settings.proxyPassword ?: return null val credential = Credentials.basic(login, password) @@ -19,4 +31,15 @@ class ProxyAuthenticator( .header(CommonHeaders.PROXY_AUTHORIZATION, credential) .build() } + + override fun getPasswordAuthentication(): PasswordAuthentication? { + if (!isProxyEnabled()) { + return null + } + val login = settings.proxyLogin ?: return null + val password = settings.proxyPassword ?: return null + return PasswordAuthentication(login, password.toCharArray()) + } + + private fun isProxyEnabled() = settings.proxyType != Proxy.Type.DIRECT }