mirror of
https://github.com/Suwayomi/Suwayomi-Server.git
synced 2026-07-04 11:24:35 -05:00
NPE fix suggested by @syer10
This commit is contained in:
@@ -19,18 +19,24 @@ class CloudflareInterceptor : Interceptor {
|
|||||||
|
|
||||||
private val network: NetworkHelper by injectLazy()
|
private val network: NetworkHelper by injectLazy()
|
||||||
|
|
||||||
private val `serverCheck` = arrayOf("cloudflare-nginx", "cloudflare")
|
|
||||||
|
|
||||||
@Synchronized
|
@Synchronized
|
||||||
override fun intercept(chain: Interceptor.Chain): Response {
|
override fun intercept(chain: Interceptor.Chain): Response {
|
||||||
|
val originalRequest = chain.request()
|
||||||
|
|
||||||
logger.debug { "CloudflareInterceptor is has started." }
|
logger.debug { "CloudflareInterceptor is has started." }
|
||||||
|
|
||||||
val response = chain.proceed(chain.request())
|
val response = chain.proceed(originalRequest)
|
||||||
|
|
||||||
// Check if Cloudflare anti-bot is on
|
// Check if Cloudflare anti-bot is on
|
||||||
if (response.code != 503 && response.header("Server") in serverCheck) {
|
if (response.code != 503 || response.header("Server") !in SERVER_CHECK) {
|
||||||
|
return response
|
||||||
|
}
|
||||||
|
|
||||||
logger.debug { "CloudflareInterceptor is kicking in..." }
|
logger.debug { "CloudflareInterceptor is kicking in..." }
|
||||||
|
|
||||||
return try {
|
return try {
|
||||||
|
// network.cookies.remove(originalRequest.url.toUri())
|
||||||
|
|
||||||
chain.proceed(resolveChallenge(response))
|
chain.proceed(resolveChallenge(response))
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
// Because OkHttp's enqueue only handles IOExceptions, wrap the exception so that
|
// Because OkHttp's enqueue only handles IOExceptions, wrap the exception so that
|
||||||
@@ -39,9 +45,6 @@ class CloudflareInterceptor : Interceptor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return response
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun resolveChallenge(response: Response): Request {
|
private fun resolveChallenge(response: Response): Request {
|
||||||
val browserVersion = BrowserVersion.BrowserVersionBuilder(BrowserVersion.BEST_SUPPORTED)
|
val browserVersion = BrowserVersion.BrowserVersionBuilder(BrowserVersion.BEST_SUPPORTED)
|
||||||
.setUserAgent(response.request.header("User-Agent") ?: BrowserVersion.BEST_SUPPORTED.userAgent)
|
.setUserAgent(response.request.header("User-Agent") ?: BrowserVersion.BEST_SUPPORTED.userAgent)
|
||||||
@@ -59,7 +62,7 @@ class CloudflareInterceptor : Interceptor {
|
|||||||
// Convert cookies -> OkHttp format
|
// Convert cookies -> OkHttp format
|
||||||
Cookie.Builder()
|
Cookie.Builder()
|
||||||
.domain(it.domain.removePrefix("."))
|
.domain(it.domain.removePrefix("."))
|
||||||
.expiresAt(it.expires.time)
|
.expiresAt(it.expires?.time ?: Long.MAX_VALUE)
|
||||||
.name(it.name)
|
.name(it.name)
|
||||||
.path(it.path)
|
.path(it.path)
|
||||||
.value(it.value).apply {
|
.value(it.value).apply {
|
||||||
@@ -98,4 +101,9 @@ class CloudflareInterceptor : Interceptor {
|
|||||||
.header("Cookie", newCookies.map { it.toString() }.joinToString("; "))
|
.header("Cookie", newCookies.map { it.toString() }.joinToString("; "))
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private val SERVER_CHECK = arrayOf("cloudflare-nginx", "cloudflare")
|
||||||
|
private val COOKIE_NAMES = listOf("cf_clearance")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user