|
|
|
|
@ -7,7 +7,12 @@ import okhttp3.Response
|
|
|
|
|
import org.koitharu.kotatsu.parsers.config.MangaSourceConfig
|
|
|
|
|
import org.koitharu.kotatsu.parsers.model.MangaSource
|
|
|
|
|
import org.koitharu.kotatsu.parsers.util.await
|
|
|
|
|
import java.security.SecureRandom
|
|
|
|
|
import java.security.cert.X509Certificate
|
|
|
|
|
import java.util.concurrent.TimeUnit
|
|
|
|
|
import javax.net.ssl.SSLContext
|
|
|
|
|
import javax.net.ssl.SSLSocketFactory
|
|
|
|
|
import javax.net.ssl.X509TrustManager
|
|
|
|
|
|
|
|
|
|
internal object MangaLoaderContextMock : MangaLoaderContext() {
|
|
|
|
|
|
|
|
|
|
@ -15,6 +20,7 @@ internal object MangaLoaderContextMock : MangaLoaderContext() {
|
|
|
|
|
|
|
|
|
|
override val httpClient: OkHttpClient = OkHttpClient.Builder()
|
|
|
|
|
.cookieJar(cookieJar)
|
|
|
|
|
.permissiveSSL()
|
|
|
|
|
.addInterceptor(CommonHeadersInterceptor())
|
|
|
|
|
.addInterceptor(CloudFlareInterceptor())
|
|
|
|
|
.connectTimeout(20, TimeUnit.SECONDS)
|
|
|
|
|
@ -52,4 +58,24 @@ internal object MangaLoaderContextMock : MangaLoaderContext() {
|
|
|
|
|
cookieJar.loadFromStream(it)
|
|
|
|
|
} ?: println("No cookies loaded!")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun OkHttpClient.Builder.permissiveSSL() = also { builder ->
|
|
|
|
|
runCatching {
|
|
|
|
|
val trustAllCerts = object : X509TrustManager {
|
|
|
|
|
override fun checkClientTrusted(chain: Array<X509Certificate>, authType: String) = Unit
|
|
|
|
|
|
|
|
|
|
override fun checkServerTrusted(chain: Array<X509Certificate>, authType: String) = Unit
|
|
|
|
|
|
|
|
|
|
override fun getAcceptedIssuers(): Array<X509Certificate> = emptyArray()
|
|
|
|
|
}
|
|
|
|
|
val sslContext = SSLContext.getInstance("SSL")
|
|
|
|
|
sslContext.init(null, arrayOf(trustAllCerts), SecureRandom())
|
|
|
|
|
val sslSocketFactory: SSLSocketFactory = sslContext.socketFactory
|
|
|
|
|
builder.sslSocketFactory(sslSocketFactory, trustAllCerts)
|
|
|
|
|
builder.hostnameVerifier { _, _ -> true }
|
|
|
|
|
}.onFailure {
|
|
|
|
|
it.printStackTrace()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|