mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 14:27:57 +01:00 
			
		
		
		
	Add Google DoH provider
This commit is contained in:
		| @@ -9,6 +9,7 @@ import eu.kanade.tachiyomi.data.preference.PreferencesHelper | ||||
| import eu.kanade.tachiyomi.data.track.TrackManager | ||||
| import eu.kanade.tachiyomi.data.updater.UpdaterJob | ||||
| import eu.kanade.tachiyomi.extension.ExtensionUpdateJob | ||||
| import eu.kanade.tachiyomi.network.PREF_DOH_CLOUDFLARE | ||||
| import eu.kanade.tachiyomi.ui.library.LibrarySort | ||||
| import eu.kanade.tachiyomi.util.system.toast | ||||
| import eu.kanade.tachiyomi.widget.ExtendedNavigationView | ||||
| @@ -127,6 +128,17 @@ object Migrations { | ||||
|                     context.toast(R.string.myanimelist_relogin) | ||||
|                 } | ||||
|             } | ||||
|             if (oldVersion < 57) { | ||||
|                 // Migrate DNS over HTTPS setting | ||||
|                 val prefs = PreferenceManager.getDefaultSharedPreferences(context) | ||||
|                 val wasDohEnabled = prefs.getBoolean("enable_doh", false) | ||||
|                 if (wasDohEnabled) { | ||||
|                     prefs.edit { | ||||
|                         putInt(PreferenceKeys.dohProvider, PREF_DOH_CLOUDFLARE) | ||||
|                         remove("enable_doh") | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             return true | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -191,7 +191,7 @@ object PreferenceKeys { | ||||
|  | ||||
|     const val searchPinnedSourcesOnly = "search_pinned_sources_only" | ||||
|  | ||||
|     const val enableDoh = "enable_doh" | ||||
|     const val dohProvider = "doh_provider" | ||||
|  | ||||
|     const val defaultChapterFilterByRead = "default_chapter_filter_by_read" | ||||
|  | ||||
|   | ||||
| @@ -279,7 +279,7 @@ class PreferencesHelper(val context: Context) { | ||||
|  | ||||
|     fun trustedSignatures() = flowPrefs.getStringSet("trusted_signatures", emptySet()) | ||||
|  | ||||
|     fun enableDoh() = prefs.getBoolean(Keys.enableDoh, false) | ||||
|     fun dohProvider() = prefs.getInt(Keys.dohProvider, -1) | ||||
|  | ||||
|     fun lastSearchQuerySearchSettings() = flowPrefs.getString("last_search_query", "") | ||||
|  | ||||
|   | ||||
| @@ -0,0 +1,40 @@ | ||||
| package eu.kanade.tachiyomi.network | ||||
|  | ||||
| import okhttp3.HttpUrl.Companion.toHttpUrl | ||||
| import okhttp3.OkHttpClient | ||||
| import okhttp3.dnsoverhttps.DnsOverHttps | ||||
| import java.net.InetAddress | ||||
|  | ||||
| /** | ||||
|  * Based on https://github.com/square/okhttp/blob/ef5d0c83f7bbd3a0c0534e7ca23cbc4ee7550f3b/okhttp-dnsoverhttps/src/test/java/okhttp3/dnsoverhttps/DohProviders.java | ||||
|  */ | ||||
|  | ||||
| const val PREF_DOH_CLOUDFLARE = 1 | ||||
| const val PREF_DOH_GOOGLE = 2 | ||||
|  | ||||
| fun OkHttpClient.Builder.dohCloudflare() = dns( | ||||
|     DnsOverHttps.Builder().client(build()) | ||||
|         .url("https://cloudflare-dns.com/dns-query".toHttpUrl()) | ||||
|         .bootstrapDnsHosts( | ||||
|             InetAddress.getByName("162.159.36.1"), | ||||
|             InetAddress.getByName("162.159.46.1"), | ||||
|             InetAddress.getByName("1.1.1.1"), | ||||
|             InetAddress.getByName("1.0.0.1"), | ||||
|             InetAddress.getByName("162.159.132.53"), | ||||
|             InetAddress.getByName("2606:4700:4700::1111"), | ||||
|             InetAddress.getByName("2606:4700:4700::1001"), | ||||
|             InetAddress.getByName("2606:4700:4700::0064"), | ||||
|             InetAddress.getByName("2606:4700:4700::6400") | ||||
|         ) | ||||
|         .build() | ||||
| ) | ||||
|  | ||||
| fun OkHttpClient.Builder.dohGoogle() = dns( | ||||
|     DnsOverHttps.Builder().client(build()) | ||||
|         .url("https://dns.google/dns-query".toHttpUrl()) | ||||
|         .bootstrapDnsHosts( | ||||
|             InetAddress.getByName("8.8.4.4"), | ||||
|             InetAddress.getByName("8.8.8.8") | ||||
|         ) | ||||
|         .build() | ||||
| ) | ||||
| @@ -4,13 +4,10 @@ import android.content.Context | ||||
| import eu.kanade.tachiyomi.BuildConfig | ||||
| import eu.kanade.tachiyomi.data.preference.PreferencesHelper | ||||
| import okhttp3.Cache | ||||
| import okhttp3.HttpUrl.Companion.toHttpUrl | ||||
| import okhttp3.OkHttpClient | ||||
| import okhttp3.dnsoverhttps.DnsOverHttps | ||||
| import okhttp3.logging.HttpLoggingInterceptor | ||||
| import uy.kohesive.injekt.injectLazy | ||||
| import java.io.File | ||||
| import java.net.InetAddress | ||||
| import java.util.concurrent.TimeUnit | ||||
|  | ||||
| class NetworkHelper(context: Context) { | ||||
| @@ -38,25 +35,9 @@ class NetworkHelper(context: Context) { | ||||
|             builder.addInterceptor(httpLoggingInterceptor) | ||||
|         } | ||||
|  | ||||
|         if (preferences.enableDoh()) { | ||||
|             builder.dns( | ||||
|                 DnsOverHttps.Builder().client(builder.build()) | ||||
|                     .url("https://cloudflare-dns.com/dns-query".toHttpUrl()) | ||||
|                     .bootstrapDnsHosts( | ||||
|                         listOf( | ||||
|                             InetAddress.getByName("162.159.36.1"), | ||||
|                             InetAddress.getByName("162.159.46.1"), | ||||
|                             InetAddress.getByName("1.1.1.1"), | ||||
|                             InetAddress.getByName("1.0.0.1"), | ||||
|                             InetAddress.getByName("162.159.132.53"), | ||||
|                             InetAddress.getByName("2606:4700:4700::1111"), | ||||
|                             InetAddress.getByName("2606:4700:4700::1001"), | ||||
|                             InetAddress.getByName("2606:4700:4700::0064"), | ||||
|                             InetAddress.getByName("2606:4700:4700::6400") | ||||
|                         ) | ||||
|                     ) | ||||
|                     .build() | ||||
|             ) | ||||
|         when (preferences.dohProvider()) { | ||||
|             PREF_DOH_CLOUDFLARE -> builder.dohCloudflare() | ||||
|             PREF_DOH_GOOGLE -> builder.dohGoogle() | ||||
|         } | ||||
|  | ||||
|         builder.build() | ||||
|   | ||||
| @@ -17,9 +17,13 @@ import eu.kanade.tachiyomi.data.database.DatabaseHelper | ||||
| import eu.kanade.tachiyomi.data.library.LibraryUpdateService | ||||
| import eu.kanade.tachiyomi.data.library.LibraryUpdateService.Target | ||||
| import eu.kanade.tachiyomi.network.NetworkHelper | ||||
| import eu.kanade.tachiyomi.network.PREF_DOH_CLOUDFLARE | ||||
| import eu.kanade.tachiyomi.network.PREF_DOH_GOOGLE | ||||
| import eu.kanade.tachiyomi.ui.base.controller.DialogController | ||||
| import eu.kanade.tachiyomi.util.CrashLogUtil | ||||
| import eu.kanade.tachiyomi.util.preference.defaultValue | ||||
| import eu.kanade.tachiyomi.util.preference.intListPreference | ||||
| import eu.kanade.tachiyomi.util.preference.onChange | ||||
| import eu.kanade.tachiyomi.util.preference.onClick | ||||
| import eu.kanade.tachiyomi.util.preference.preference | ||||
| import eu.kanade.tachiyomi.util.preference.preferenceCategory | ||||
| @@ -124,11 +128,26 @@ class SettingsAdvancedController : SettingsController() { | ||||
|                     activity?.toast(R.string.cookies_cleared) | ||||
|                 } | ||||
|             } | ||||
|             switchPreference { | ||||
|                 key = Keys.enableDoh | ||||
|             intListPreference { | ||||
|                 key = Keys.dohProvider | ||||
|                 titleRes = R.string.pref_dns_over_https | ||||
|                 summaryRes = R.string.requires_app_restart | ||||
|                 defaultValue = false | ||||
|                 entries = arrayOf( | ||||
|                     context.getString(R.string.disabled), | ||||
|                     "Cloudflare", | ||||
|                     "Google", | ||||
|                 ) | ||||
|                 entryValues = arrayOf( | ||||
|                     "-1", | ||||
|                     PREF_DOH_CLOUDFLARE.toString(), | ||||
|                     PREF_DOH_GOOGLE.toString(), | ||||
|                 ) | ||||
|                 defaultValue = "-1" | ||||
|                 summary = "%s" | ||||
|  | ||||
|                 onChange { | ||||
|                     activity?.toast(R.string.requires_app_restart) | ||||
|                     true | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -417,7 +417,7 @@ | ||||
|       <!-- Advanced section --> | ||||
|     <string name="label_network">Network</string> | ||||
|     <string name="pref_clear_cookies">Clear cookies</string> | ||||
|     <string name="pref_dns_over_https">DNS over HTTPS (Cloudflare)</string> | ||||
|     <string name="pref_dns_over_https">DNS over HTTPS</string> | ||||
|     <string name="requires_app_restart">Requires app restart to take effect</string> | ||||
|     <string name="cookies_cleared">Cookies cleared</string> | ||||
|     <string name="label_data">Data</string> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user