From a0d6ff912b081ad2a4ff56f60ff0378317e64b99 Mon Sep 17 00:00:00 2001 From: Kelvin K Date: Fri, 7 Jun 2024 12:52:25 +0200 Subject: [PATCH] App version info for plugins, trust all certs dev setting, latest refs --- .../com/futo/platformplayer/SettingsDev.kt | 14 ++++++++++ .../api/http/ManagedHttpClient.kt | 28 +++++++++++++++++++ .../engine/packages/PackageBridge.kt | 15 ++++++++++ app/src/main/res/values/strings.xml | 3 ++ app/src/stable/assets/sources/bilibili | 2 +- app/src/stable/assets/sources/patreon | 2 +- app/src/stable/assets/sources/youtube | 2 +- app/src/unstable/AndroidManifest.xml | 2 +- app/src/unstable/assets/sources/bilibili | 2 +- app/src/unstable/assets/sources/patreon | 2 +- app/src/unstable/assets/sources/youtube | 2 +- 11 files changed, 67 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/futo/platformplayer/SettingsDev.kt b/app/src/main/java/com/futo/platformplayer/SettingsDev.kt index 91bba5e4..aa5e4c94 100644 --- a/app/src/main/java/com/futo/platformplayer/SettingsDev.kt +++ b/app/src/main/java/com/futo/platformplayer/SettingsDev.kt @@ -33,6 +33,7 @@ import com.futo.platformplayer.stores.FragmentedStorageFileJson import com.futo.platformplayer.views.fields.ButtonField import com.futo.platformplayer.views.fields.FieldForm import com.futo.platformplayer.views.fields.FormField +import com.futo.platformplayer.views.fields.FormFieldWarning import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -493,6 +494,17 @@ class SettingsDev : FragmentedStorageFileJson() { } + + @FormField(R.string.networking, FieldForm.GROUP, -1, 18) + var networking = Networking(); + @Serializable + class Networking { + @FormField(R.string.allow_all_certificates, FieldForm.TOGGLE, -1, 0) + @FormFieldWarning(R.string.allow_all_certificates_warning) + var allowAllCertificates: Boolean = false; + } + + @Contextual @Transient @FormField(R.string.info, FieldForm.GROUP, -1, 19) @@ -503,6 +515,8 @@ class SettingsDev : FragmentedStorageFileJson() { var channelCacheStartupCount = StateCache.instance.channelCacheStartupCount; } + + //region BOILERPLATE override fun encode(): String { return Json.encodeToString(this); diff --git a/app/src/main/java/com/futo/platformplayer/api/http/ManagedHttpClient.kt b/app/src/main/java/com/futo/platformplayer/api/http/ManagedHttpClient.kt index 9c79b665..5121f41e 100644 --- a/app/src/main/java/com/futo/platformplayer/api/http/ManagedHttpClient.kt +++ b/app/src/main/java/com/futo/platformplayer/api/http/ManagedHttpClient.kt @@ -1,5 +1,7 @@ package com.futo.platformplayer.api.http +import androidx.collection.arrayMapOf +import com.futo.platformplayer.SettingsDev import com.futo.platformplayer.constructs.Event1 import com.futo.platformplayer.ensureNotMainThread import com.futo.platformplayer.logging.Logger @@ -13,6 +15,11 @@ import okhttp3.Response import okhttp3.ResponseBody import okhttp3.WebSocket import okhttp3.WebSocketListener +import java.security.SecureRandom +import java.security.cert.X509Certificate +import javax.net.ssl.SSLContext +import javax.net.ssl.TrustManager +import javax.net.ssl.X509TrustManager import kotlin.system.measureTimeMillis open class ManagedHttpClient { @@ -25,8 +32,29 @@ open class ManagedHttpClient { var user_agent = "Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0" + private val trustAllCerts = arrayOf( + object: X509TrustManager { + override fun checkClientTrusted(chain: Array?, authType: String?) { } + override fun checkServerTrusted(chain: Array?, authType: String?) { } + override fun getAcceptedIssuers(): Array { + return arrayOf(); + } + } + ); + private fun trustAllCertificates(builder: OkHttpClient.Builder) { + val sslContext = SSLContext.getInstance("SSL"); + sslContext.init(null, trustAllCerts, SecureRandom()); + builder.sslSocketFactory(sslContext.socketFactory, trustAllCerts[0] as X509TrustManager); + builder.hostnameVerifier { a, b -> + return@hostnameVerifier true; + } + Logger.w(TAG, "Creating INSECURE client (TrustAll)"); + } + constructor(builder: OkHttpClient.Builder = OkHttpClient.Builder()) { _builderTemplate = builder; + if(SettingsDev.instance.developerMode && SettingsDev.instance.networking.allowAllCertificates) + trustAllCertificates(builder); client = builder.addNetworkInterceptor { chain -> val request = beforeRequest(chain.request()); val response = afterRequest(chain.proceed(request)); diff --git a/app/src/main/java/com/futo/platformplayer/engine/packages/PackageBridge.kt b/app/src/main/java/com/futo/platformplayer/engine/packages/PackageBridge.kt index d07720e8..44464b0d 100644 --- a/app/src/main/java/com/futo/platformplayer/engine/packages/PackageBridge.kt +++ b/app/src/main/java/com/futo/platformplayer/engine/packages/PackageBridge.kt @@ -1,6 +1,8 @@ package com.futo.platformplayer.engine.packages import com.caoccao.javet.annotations.V8Function +import com.caoccao.javet.annotations.V8Property +import com.futo.platformplayer.BuildConfig import com.futo.platformplayer.logging.Logger import com.futo.platformplayer.states.StateDeveloper import com.futo.platformplayer.UIDialogs @@ -35,6 +37,19 @@ class PackageBridge : V8Package { _clientAuth = plugin.httpClientAuth; } + + @V8Property + fun buildVersion(): Int { + //If debug build, assume max version + if(BuildConfig.VERSION_CODE == 1) + return Int.MAX_VALUE; + return BuildConfig.VERSION_CODE; + } + @V8Property + fun buildFlavor(): String { + return BuildConfig.FLAVOR; + } + @V8Function fun toast(str: String) { StateApp.instance.scopeOrNull?.launch(Dispatchers.Main) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 786fbd99..4cba9f1c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -347,6 +347,7 @@ Get answers to common questions Give feedback on the application Info + Networking Gesture controls Volume slider Enable slide gesture to change volume @@ -461,6 +462,8 @@ Deletes all ongoing downloads Deletes all unresolved source files Developer Mode + Allow All Certificates + This risks exposing all your Grayjay network traffic. Development Server Experimental Cache diff --git a/app/src/stable/assets/sources/bilibili b/app/src/stable/assets/sources/bilibili index 611f692c..b518be4d 160000 --- a/app/src/stable/assets/sources/bilibili +++ b/app/src/stable/assets/sources/bilibili @@ -1 +1 @@ -Subproject commit 611f692ced94bac637907b105170a4143580281a +Subproject commit b518be4dd5e162e67e9ca64e09be3fe574fccdb7 diff --git a/app/src/stable/assets/sources/patreon b/app/src/stable/assets/sources/patreon index cee1fda4..5b191993 160000 --- a/app/src/stable/assets/sources/patreon +++ b/app/src/stable/assets/sources/patreon @@ -1 +1 @@ -Subproject commit cee1fda4e875a46315a9d4492e2e3b541d98f39f +Subproject commit 5b1919934d20f8c53de9959b04bdb66e0c6af3e9 diff --git a/app/src/stable/assets/sources/youtube b/app/src/stable/assets/sources/youtube index 37e2ed94..c23302da 160000 --- a/app/src/stable/assets/sources/youtube +++ b/app/src/stable/assets/sources/youtube @@ -1 +1 @@ -Subproject commit 37e2ed94384ff82f4cb67a2250877cb1e8e03c57 +Subproject commit c23302da76fc706faf02f7d9331ed28baed04607 diff --git a/app/src/unstable/AndroidManifest.xml b/app/src/unstable/AndroidManifest.xml index 8a600a38..0f4a00b8 100644 --- a/app/src/unstable/AndroidManifest.xml +++ b/app/src/unstable/AndroidManifest.xml @@ -4,7 +4,7 @@ - + diff --git a/app/src/unstable/assets/sources/bilibili b/app/src/unstable/assets/sources/bilibili index 611f692c..b518be4d 160000 --- a/app/src/unstable/assets/sources/bilibili +++ b/app/src/unstable/assets/sources/bilibili @@ -1 +1 @@ -Subproject commit 611f692ced94bac637907b105170a4143580281a +Subproject commit b518be4dd5e162e67e9ca64e09be3fe574fccdb7 diff --git a/app/src/unstable/assets/sources/patreon b/app/src/unstable/assets/sources/patreon index cee1fda4..5b191993 160000 --- a/app/src/unstable/assets/sources/patreon +++ b/app/src/unstable/assets/sources/patreon @@ -1 +1 @@ -Subproject commit cee1fda4e875a46315a9d4492e2e3b541d98f39f +Subproject commit 5b1919934d20f8c53de9959b04bdb66e0c6af3e9 diff --git a/app/src/unstable/assets/sources/youtube b/app/src/unstable/assets/sources/youtube index d0cca1ac..c23302da 160000 --- a/app/src/unstable/assets/sources/youtube +++ b/app/src/unstable/assets/sources/youtube @@ -1 +1 @@ -Subproject commit d0cca1ac04a1812414ee633a08585dc896701a32 +Subproject commit c23302da76fc706faf02f7d9331ed28baed04607