From aff75c2dec60657dc789483e2b2b72361ae425b1 Mon Sep 17 00:00:00 2001
From: FooIbar <118464521+FooIbar@users.noreply.github.com>
Date: Sat, 1 Jul 2023 14:53:29 +0800
Subject: [PATCH] Add option for bypassing Cloudflare
---
app/src/main/java/com/hippo/ehviewer/EhApplication.kt | 2 +-
app/src/main/java/com/hippo/ehviewer/Settings.kt | 1 +
.../java/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt | 5 +++++
app/src/main/res/values-zh-rCN/strings.xml | 2 ++
app/src/main/res/values/strings.xml | 2 ++
5 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/app/src/main/java/com/hippo/ehviewer/EhApplication.kt b/app/src/main/java/com/hippo/ehviewer/EhApplication.kt
index ac85efda1..a60d39509 100644
--- a/app/src/main/java/com/hippo/ehviewer/EhApplication.kt
+++ b/app/src/main/java/com/hippo/ehviewer/EhApplication.kt
@@ -159,7 +159,7 @@ class EhApplication : Application(), ImageLoaderFactory {
}.build(),
)
- addInterceptor(CloudflareInterceptor(appCtx))
+ if (Settings.bypassCloudflare) addInterceptor(CloudflareInterceptor(appCtx))
// TODO: Rewrite CronetInterceptor to use android.net.http.HttpEngine and make it Android 14 only when released
addInterceptor { chain ->
diff --git a/app/src/main/java/com/hippo/ehviewer/Settings.kt b/app/src/main/java/com/hippo/ehviewer/Settings.kt
index 49d7a6b0f..0c9127255 100755
--- a/app/src/main/java/com/hippo/ehviewer/Settings.kt
+++ b/app/src/main/java/com/hippo/ehviewer/Settings.kt
@@ -53,6 +53,7 @@ object Settings : DataStorePreferences(null) {
var blackDarkTheme by boolPref("black_dark_theme", false).observed { updateWhenAmoledModeChanges() }
var preloadThumbAggressively by boolPref("preload_thumb_aggressively", false)
var downloadOriginImage by boolPref("download_origin_image", false)
+ var bypassCloudflare by boolPref("bypass_cloudflare", false)
var thumbSizeDp by intPref("thumb_size_", 120)
var favLocalCount by intPref("fav_local", 0)
var favCloudCount by intPref("fav_cloud", 0)
diff --git a/app/src/main/java/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt b/app/src/main/java/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt
index c4bc2032e..0756a8cc4 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt
+++ b/app/src/main/java/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt
@@ -125,6 +125,11 @@ fun AdvancedScreen() {
entryValueRes = R.array.app_language_entry_values,
value = Settings::language,
)
+ SwitchPreference(
+ title = stringResource(id = R.string.settings_advanced_bypass_cloudflare),
+ summary = stringResource(id = R.string.settings_advanced_bypass_cloudflare_summary),
+ value = Settings::bypassCloudflare,
+ )
SwitchPreference(
title = stringResource(id = R.string.preload_thumb_aggressively),
value = Settings::preloadThumbAggressively,
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 978971fb3..fdd03415a 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -371,6 +371,8 @@
已保存日志至 %s
阅读缓存大小
App 界面语言
+ [实验性] 绕过 Cloudflare
+ 若持续遇到 403 错误可尝试此项(需要重启应用)
导出数据
保存数据至外置存储器,例如下载列表,快速搜索列表
已导出数据至 %s
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ee3ff5c71..70b9bf38d 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -415,6 +415,8 @@
Logcat dumped to %s
Read cache size
App language
+ [Experimental] Bypass Cloudflare
+ Try this if you keep getting 403 error (App restart required)
Export data
Save data like download list, quick search list, to external storage
Exported data to %s