mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
DNS-over-HTTPS (Adguard) (#5715)
* Update DohProviders.kt * Update NetworkHelper.kt * Update SettingsAdvancedController.kt * fix typo * Fix typo * Fix typo
This commit is contained in:
parent
fa2e8303e2
commit
6407d7ca3f
5 changed files with 53 additions and 31 deletions
|
@ -7,8 +7,9 @@ import coil.ImageLoader
|
|||
import coil.decode.GifDecoder
|
||||
import coil.decode.ImageDecoderDecoder
|
||||
import coil.decode.SvgDecoder
|
||||
import com.chuckerteam.chucker.api.ChuckerInterceptor
|
||||
import okhttp3.OkHttpClient
|
||||
import eu.kanade.tachiyomi.network.NetworkHelper
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
|
||||
class CoilSetup(context: Context) {
|
||||
init {
|
||||
|
@ -26,11 +27,8 @@ class CoilSetup(context: Context) {
|
|||
add(SvgDecoder(context))
|
||||
add(MangaFetcher())
|
||||
add(ByteArrayFetcher())
|
||||
}.okHttpClient {
|
||||
OkHttpClient.Builder()
|
||||
.addInterceptor(ChuckerInterceptor(context))
|
||||
.build()
|
||||
}
|
||||
.okHttpClient(Injekt.get<NetworkHelper>().coilClient)
|
||||
.build()
|
||||
|
||||
Coil.setImageLoader(imageLoader)
|
||||
|
|
|
@ -11,6 +11,7 @@ import java.net.InetAddress
|
|||
|
||||
const val PREF_DOH_CLOUDFLARE = 1
|
||||
const val PREF_DOH_GOOGLE = 2
|
||||
const val PREF_DOH_ADGUARD = 3
|
||||
|
||||
fun OkHttpClient.Builder.dohCloudflare() = dns(
|
||||
DnsOverHttps.Builder().client(build())
|
||||
|
@ -38,3 +39,16 @@ fun OkHttpClient.Builder.dohGoogle() = dns(
|
|||
)
|
||||
.build()
|
||||
)
|
||||
|
||||
// AdGuard "Default" DNS works too but for the sake of making sure no site is blacklisted, i picked "Unfiltered"
|
||||
fun OkHttpClient.Builder.dohAdGuard() = dns(
|
||||
DnsOverHttps.Builder().client(build())
|
||||
.url("https://dns-unfiltered.adguard.com/dns-query".toHttpUrl())
|
||||
.bootstrapDnsHosts(
|
||||
InetAddress.getByName("94.140.14.140"),
|
||||
InetAddress.getByName("94.140.14.141"),
|
||||
InetAddress.getByName("2a10:50c0::1:ff"),
|
||||
InetAddress.getByName("2a10:50c0::2:ff"),
|
||||
)
|
||||
.build()
|
||||
)
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package eu.kanade.tachiyomi.network
|
||||
|
||||
import android.content.Context
|
||||
import coil.util.CoilUtils
|
||||
import com.chuckerteam.chucker.api.ChuckerInterceptor
|
||||
import eu.kanade.tachiyomi.BuildConfig
|
||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||
|
@ -10,7 +11,7 @@ import uy.kohesive.injekt.injectLazy
|
|||
import java.io.File
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
class NetworkHelper(context: Context) {
|
||||
class NetworkHelper(val context: Context) {
|
||||
|
||||
private val preferences: PreferencesHelper by injectLazy()
|
||||
|
||||
|
@ -20,24 +21,31 @@ class NetworkHelper(context: Context) {
|
|||
|
||||
val cookieManager = AndroidCookieJar()
|
||||
|
||||
val client by lazy {
|
||||
OkHttpClient.Builder()
|
||||
.cookieJar(cookieManager)
|
||||
.cache(Cache(cacheDir, cacheSize))
|
||||
.connectTimeout(30, TimeUnit.SECONDS)
|
||||
.readTimeout(30, TimeUnit.SECONDS)
|
||||
.addInterceptor(UserAgentInterceptor())
|
||||
.apply {
|
||||
if (BuildConfig.DEBUG) {
|
||||
addInterceptor(ChuckerInterceptor(context))
|
||||
private val baseClientBuilder: OkHttpClient.Builder
|
||||
get() {
|
||||
val builder = OkHttpClient.Builder()
|
||||
.cookieJar(cookieManager)
|
||||
.connectTimeout(30, TimeUnit.SECONDS)
|
||||
.readTimeout(30, TimeUnit.SECONDS)
|
||||
.addInterceptor(UserAgentInterceptor())
|
||||
.apply {
|
||||
if (BuildConfig.DEBUG) {
|
||||
addInterceptor(ChuckerInterceptor(context))
|
||||
}
|
||||
|
||||
when (preferences.dohProvider()) {
|
||||
PREF_DOH_CLOUDFLARE -> dohCloudflare()
|
||||
PREF_DOH_GOOGLE -> dohGoogle()
|
||||
PREF_DOH_ADGUARD -> dohAdGuard()
|
||||
}
|
||||
}
|
||||
|
||||
when (preferences.dohProvider()) {
|
||||
PREF_DOH_CLOUDFLARE -> dohCloudflare()
|
||||
PREF_DOH_GOOGLE -> dohGoogle()
|
||||
}
|
||||
}.build()
|
||||
}
|
||||
return builder
|
||||
}
|
||||
|
||||
val client by lazy { baseClientBuilder.cache(Cache(cacheDir, cacheSize)).build() }
|
||||
|
||||
val coilClient by lazy { baseClientBuilder.cache(CoilUtils.createDefaultCache(context)).build() }
|
||||
|
||||
val cloudflareClient by lazy {
|
||||
client.newBuilder()
|
||||
|
|
|
@ -24,6 +24,7 @@ import eu.kanade.tachiyomi.data.library.LibraryUpdateService
|
|||
import eu.kanade.tachiyomi.data.library.LibraryUpdateService.Target
|
||||
import eu.kanade.tachiyomi.data.preference.PreferenceKeys
|
||||
import eu.kanade.tachiyomi.network.NetworkHelper
|
||||
import eu.kanade.tachiyomi.network.PREF_DOH_ADGUARD
|
||||
import eu.kanade.tachiyomi.network.PREF_DOH_CLOUDFLARE
|
||||
import eu.kanade.tachiyomi.network.PREF_DOH_GOOGLE
|
||||
import eu.kanade.tachiyomi.source.SourceManager
|
||||
|
@ -33,11 +34,7 @@ import eu.kanade.tachiyomi.util.system.launchIO
|
|||
import eu.kanade.tachiyomi.util.system.launchUI
|
||||
import eu.kanade.tachiyomi.util.system.toast
|
||||
import eu.kanade.tachiyomi.util.view.openInBrowser
|
||||
import kotlinx.coroutines.CoroutineStart
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.*
|
||||
import rx.Observable
|
||||
import rx.android.schedulers.AndroidSchedulers
|
||||
import rx.schedulers.Schedulers
|
||||
|
@ -190,12 +187,16 @@ class SettingsAdvancedController : SettingsController() {
|
|||
activity?.toast(R.string.cookies_cleared)
|
||||
}
|
||||
}
|
||||
|
||||
intListPreference(activity) {
|
||||
key = PreferenceKeys.dohProvider
|
||||
titleRes = R.string.doh
|
||||
entriesRes = arrayOf(R.string.disabled, R.string.cloudflare, R.string.google)
|
||||
entryValues = listOf(-1, PREF_DOH_CLOUDFLARE, PREF_DOH_GOOGLE)
|
||||
entriesRes = arrayOf(
|
||||
R.string.disabled,
|
||||
R.string.cloudflare,
|
||||
R.string.google,
|
||||
R.string.adGuard
|
||||
)
|
||||
entryValues = listOf(-1, PREF_DOH_CLOUDFLARE, PREF_DOH_GOOGLE, PREF_DOH_ADGUARD)
|
||||
|
||||
defaultValue = -1
|
||||
onChange {
|
||||
|
|
|
@ -750,6 +750,7 @@
|
|||
<string name="disabled">Disabled</string>
|
||||
<string name="cloudflare" translatable="false">Cloudflare</string>
|
||||
<string name="google" translatable="false">Google</string>
|
||||
<string name="adGuard" translatable="false">AdGuard</string>
|
||||
<string name="requires_app_restart">Requires app restart to take effect</string>
|
||||
<string name="used_">Used: %1$s</string>
|
||||
<plurals name="cache_cleared">
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue