Parcourir la source

SSL solution for only login on older versions

Khubaib il y a 4 mois
Parent
commit
31061f289f

BIN
app/release/app-release.aab


BIN
app/release/app-release.apk


+ 2 - 2
app/release/output-metadata.json

@@ -11,8 +11,8 @@
       "type": "SINGLE",
       "filters": [],
       "attributes": [],
-      "versionCode": 33100,
-      "versionName": "3.3.1",
+      "versionCode": 33500,
+      "versionName": "3.3.5",
       "outputFile": "app-release.apk"
     }
   ],

+ 0 - 8
app/src/main/java/com/vpn/fastestvpnservice/screens/helpScreensAll/AboutScreen.kt

@@ -1,12 +1,6 @@
 package com.vpn.fastestvpnservice.screens.helpScreensAll
 
 import android.app.Activity
-import android.graphics.Bitmap
-import android.os.Build
-import android.util.Log
-import android.view.ViewGroup
-import android.webkit.WebView
-import android.webkit.WebViewClient
 import androidx.compose.foundation.background
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.BoxScope
@@ -26,7 +20,6 @@ import androidx.compose.runtime.Composable
 import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableFloatStateOf
-import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
@@ -39,7 +32,6 @@ import androidx.compose.ui.res.colorResource
 import androidx.compose.ui.res.painterResource
 import androidx.compose.ui.tooling.preview.Preview
 import androidx.compose.ui.unit.dp
-import androidx.compose.ui.viewinterop.AndroidView
 import androidx.navigation.NavHostController
 import androidx.navigation.compose.rememberNavController
 import com.vpn.fastestvpnservice.R

+ 0 - 86
app/src/main/java/com/vpn/fastestvpnservice/screens/helpScreensAll/CustomerSupportScreen.kt

@@ -5,13 +5,10 @@ import android.app.Activity
 import android.content.Intent
 import android.graphics.Bitmap
 import android.net.Uri
-import android.net.http.SslError
-import android.os.Build
 import android.util.Log
 import android.view.View
 import android.view.ViewGroup
 import android.webkit.PermissionRequest
-import android.webkit.SslErrorHandler
 import android.webkit.ValueCallback
 import android.webkit.WebChromeClient
 import android.webkit.WebResourceError
@@ -38,12 +35,10 @@ import androidx.compose.runtime.Composable
 import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableFloatStateOf
-import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.toArgb
 import androidx.compose.ui.platform.LocalContext
 import androidx.compose.ui.platform.LocalView
@@ -54,9 +49,7 @@ import androidx.compose.ui.unit.dp
 import androidx.compose.ui.viewinterop.AndroidView
 import androidx.core.view.WindowCompat
 import androidx.navigation.NavHostController
-import androidx.navigation.compose.rememberNavController
 import com.vpn.fastestvpnservice.R
-import com.vpn.fastestvpnservice.beans.isDarkTheme
 import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
 import kotlinx.coroutines.delay
 
@@ -232,85 +225,6 @@ fun CSWebView(url: String, activity: ComponentActivity) {
     )
 }
 
-//@Composable
-//fun CustomCSWebView(url: String, activity: ComponentActivity) {
-//    AndroidView(factory = {
-//        val webView = WebView(it).apply {
-//            layoutParams = ViewGroup.LayoutParams(
-//                ViewGroup.LayoutParams.MATCH_PARENT,
-//                ViewGroup.LayoutParams.MATCH_PARENT
-//            )
-//            webViewClient = WebViewClient()
-//
-//            settings.javaScriptEnabled = true
-//            settings.allowContentAccess = true
-//            settings.allowFileAccess = true
-//            settings.allowFileAccessFromFileURLs = true
-//            settings.allowUniversalAccessFromFileURLs = true
-//            settings.databaseEnabled = true
-//            settings.domStorageEnabled = true
-//            settings.loadsImagesAutomatically = true
-//            settings.builtInZoomControls = true
-//            settings.displayZoomControls = true
-//            settings.mediaPlaybackRequiresUserGesture = false
-//            settings.supportZoom()
-//            settings.loadWithOverviewMode = true
-//            setLayerType(View.LAYER_TYPE_NONE, null)
-//            settings.databaseEnabled = true
-//
-//            webViewClient = object : WebViewClient() {
-//                override fun onReceivedSslError(
-//                    view: WebView?,
-//                    handler: SslErrorHandler?,
-//                    error: SslError?
-//                ) {
-//                    handler?.proceed()
-//                }
-//            }
-//
-//            webChromeClient = object : WebChromeClient() {
-//                override fun onPermissionRequest(request: PermissionRequest?) {
-//                    super.onPermissionRequest(request)
-//                    Log.d("test_file_chat", "onActivityResult: onPermissionRequest")
-//                    request?.grant(request.resources)
-//                }
-//
-//                override fun onShowFileChooser(
-//                    webView: WebView?,
-//                    filePathCallback: ValueCallback<Array<Uri>>?,
-//                    fileChooserParams: FileChooserParams?
-//                ): Boolean {
-//                    Log.d("test_file_chat", "onActivityResult: onShowFileChooser")
-//                    fileChooserCallback?.onReceiveValue(null)
-//                    fileChooserCallback = filePathCallback
-//                    val selectionIntent = Intent(Intent.ACTION_GET_CONTENT)
-//                    selectionIntent.addCategory(Intent.CATEGORY_OPENABLE)
-//                    selectionIntent.type = "*/*"
-//                    val chooserIntent = Intent(Intent.ACTION_CHOOSER)
-//                    chooserIntent.putExtra(Intent.EXTRA_INTENT, selectionIntent)
-//                    activity.startActivityForResult(chooserIntent, 551)
-//
-//                    return true
-//                }
-//
-//            }
-//
-//            setDownloadListener { uri, userAgent, contentDisposition, mimetype, contentLength ->
-//                handleURI(
-//                    uri
-//                )
-//            }
-//            setOnLongClickListener { v ->
-//                handleURI((v as WebView).hitTestResult.extra)
-//                true
-//            }
-//        }
-//
-//        loadContentWithOkHttp(webView, url)
-//        webView
-//        })
-//}
-
 fun handleURI(uri: String?) {
     if (uri != null) {
         val i = Intent(Intent.ACTION_VIEW)

+ 0 - 124
app/src/main/java/com/vpn/fastestvpnservice/screens/helpScreensAll/FAQScreen.kt

@@ -3,10 +3,8 @@ package com.vpn.fastestvpnservice.screens.helpScreensAll
 import android.annotation.SuppressLint
 import android.app.Activity
 import android.graphics.Bitmap
-import android.os.Build
 import android.util.Log
 import android.view.ViewGroup
-import android.webkit.WebSettings
 import android.webkit.WebView
 import android.webkit.WebViewClient
 import androidx.compose.animation.animateContentSize
@@ -68,18 +66,7 @@ import com.vpn.fastestvpnservice.beans.isDarkTheme
 import com.vpn.fastestvpnservice.constants.AppConstant
 import com.vpn.fastestvpnservice.constants.HelpDesc
 import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
-import com.vpn.fastestvpnservice.retrofit.WebServiceFactory
 import kotlinx.coroutines.delay
-import okhttp3.OkHttpClient
-import okhttp3.Request
-import java.io.IOException
-import java.security.SecureRandom
-import java.security.cert.X509Certificate
-import javax.net.ssl.HostnameVerifier
-import javax.net.ssl.SSLContext
-import javax.net.ssl.SSLSession
-import javax.net.ssl.TrustManager
-import javax.net.ssl.X509TrustManager
 
 var showLoader: MutableState<Boolean> = mutableStateOf(true)
 
@@ -144,39 +131,6 @@ fun FAQ(navHostController: NavHostController) {
     }
 }
 
-//@Composable
-//fun BoxScope.CustomWebView(url: String) {
-//    AndroidView(factory = { context ->
-//        val webView = WebView(context).apply {
-//            layoutParams = ViewGroup.LayoutParams(
-//                ViewGroup.LayoutParams.MATCH_PARENT,
-//                ViewGroup.LayoutParams.MATCH_PARENT
-//            )
-//
-//            settings.apply {
-//                javaScriptEnabled = true
-//                domStorageEnabled = true
-//                loadsImagesAutomatically = true
-//                mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW
-//            }
-//
-//            webViewClient = object : WebViewClient() {
-//                override fun onReceivedSslError(
-//                    view: WebView?,
-//                    handler: android.webkit.SslErrorHandler?,
-//                    error: android.net.http.SslError?
-//                ) {
-//                    handler?.proceed() // Bypass SSL certificate issues (for debugging)
-//                }
-//            }
-//        }
-//
-//        // Make the OkHttp request
-//        loadContentWithOkHttp(webView, url)
-//        webView
-//    })
-//}
-
 @Composable
 fun BoxScope.WebView(url: String) {
     AndroidView(factory = {
@@ -214,84 +168,6 @@ fun BoxScope.WebView(url: String) {
     )
 }
 
-//fun loadContentWithOkHttp(webView: WebView, url: String) {
-//    val client = createUnsafeOkHttpClient()
-//    val request = Request.Builder().url(url).build()
-//
-//    Log.d("test_webview", "loadContentWithOkHttp")
-//
-//    client.newCall(request).enqueue(object : okhttp3.Callback {
-//        override fun onFailure(call: okhttp3.Call, e: IOException) {
-//            showLoader.value = false
-//            Log.d("test_webview", "onFailure")
-//            Log.e("CustomWebView", "Failed to load URL with OkHttp: ${e.message}")
-//        }
-//
-//        override fun onResponse(call: okhttp3.Call, response: okhttp3.Response) {
-//            showLoader.value = false
-//            Log.d("test_webview", "onResponse")
-//
-//            val htmlContent = response.body?.string() ?: ""
-//            // Load the HTML content into the WebView on the main thread
-//
-//            webView.post {
-//                showLoader.value = false
-//                Log.d("test_webview", "webView.post")
-//                webView.loadDataWithBaseURL(url, htmlContent, "text/html", "UTF-8", null)
-//            }
-//        }
-//    })
-//}
-
-
-//fun WebView.trustAllCertificates() {
-//    try {
-//        Log.d("test_webview", "try")
-//        val trustAllCerts = arrayOf<TrustManager>(
-//            object : X509TrustManager {
-//                override fun checkClientTrusted(
-//                    chain: Array<out X509Certificate>?,
-//                    authType: String?
-//                ) {}
-//
-//                override fun checkServerTrusted(
-//                    chain: Array<out X509Certificate>?,
-//                    authType: String?
-//                ) {}
-//
-//                override fun getAcceptedIssuers(): Array<X509Certificate> = arrayOf()
-//            }
-//        )
-//
-//        val sslContext = SSLContext.getInstance("TLS")
-//        sslContext.init(null, trustAllCerts, SecureRandom())
-//        this.settings.javaScriptEnabled = true
-//        // Set the SSL factory to the custom context that trusts all certificates
-//        sslContext.socketFactory
-//    } catch (e: Exception) {
-//        Log.d("test_webview", "catch")
-//    }
-//}
-//
-//fun createUnsafeOkHttpClient(): OkHttpClient {
-//    val trustAllCerts = arrayOf<TrustManager>(
-//        object : X509TrustManager {
-//            override fun checkClientTrusted(chain: Array<X509Certificate>, authType: String) {}
-//            override fun checkServerTrusted(chain: Array<X509Certificate>, authType: String) {}
-//            override fun getAcceptedIssuers(): Array<X509Certificate> = arrayOf()
-//        }
-//    )
-//
-//    val sslContext = SSLContext.getInstance("TLS")
-//    sslContext.init(null, trustAllCerts, SecureRandom())
-//    val sslSocketFactory = sslContext.socketFactory
-//
-//    return OkHttpClient.Builder()
-//        .sslSocketFactory(sslSocketFactory, trustAllCerts[0] as X509TrustManager)
-//        .hostnameVerifier(HostnameVerifier { _, _ -> true })
-//        .build()
-//}
-
 @Composable
 fun BoxScope.ShowExpandList(
     navHostController: NavHostController

+ 0 - 16
app/src/main/java/com/vpn/fastestvpnservice/screens/helpScreensAll/PrivacyPolicyScreen.kt

@@ -1,40 +1,28 @@
 package com.vpn.fastestvpnservice.screens.helpScreensAll
 
 import android.app.Activity
-import android.graphics.Bitmap
-import android.os.Build
-import android.util.Log
-import android.view.ViewGroup
-import android.webkit.WebView
-import android.webkit.WebViewClient
 import androidx.compose.foundation.background
-import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.BoxScope
 import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.fillMaxHeight
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.size
-import androidx.compose.foundation.layout.width
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.verticalScroll
 import androidx.compose.material.Icon
 import androidx.compose.material.IconButton
 import androidx.compose.material.Surface
 import androidx.compose.material.Text
-import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.automirrored.filled.ArrowBack
 import androidx.compose.material3.CircularProgressIndicator
 import androidx.compose.material3.MaterialTheme
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableFloatStateOf
-import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
@@ -47,12 +35,9 @@ import androidx.compose.ui.platform.LocalView
 import androidx.compose.ui.res.colorResource
 import androidx.compose.ui.res.painterResource
 import androidx.compose.ui.text.TextStyle
-import androidx.compose.ui.text.font.FontWeight
-import androidx.compose.ui.text.style.TextAlign
 import androidx.compose.ui.tooling.preview.Preview
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
-import androidx.compose.ui.viewinterop.AndroidView
 import androidx.navigation.NavHostController
 import androidx.navigation.compose.rememberNavController
 import com.vpn.fastestvpnservice.R
@@ -60,7 +45,6 @@ import com.vpn.fastestvpnservice.beans.isDarkTheme
 import com.vpn.fastestvpnservice.constants.AppConstant
 import com.vpn.fastestvpnservice.constants.PrivacyPolicyDesc
 import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
-import com.vpn.fastestvpnservice.sealedClass.BottomBarScreen
 import kotlinx.coroutines.delay
 
 @Composable

+ 0 - 26
app/src/main/java/com/vpn/fastestvpnservice/screens/helpScreensAll/TermsAndConditionsScreen.kt

@@ -1,69 +1,43 @@
 package com.vpn.fastestvpnservice.screens.helpScreensAll
 
 import android.app.Activity
-import android.graphics.Bitmap
-import android.os.Build
 import android.util.Log
-import android.view.ViewGroup
-import android.webkit.WebView
-import android.webkit.WebViewClient
 import androidx.compose.foundation.background
-import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.BoxScope
-import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.Row
-import androidx.compose.foundation.layout.Spacer
 import androidx.compose.foundation.layout.fillMaxHeight
 import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.size
-import androidx.compose.foundation.layout.width
-import androidx.compose.foundation.rememberScrollState
-import androidx.compose.foundation.verticalScroll
 import androidx.compose.material.Icon
 import androidx.compose.material.IconButton
 import androidx.compose.material.Surface
 import androidx.compose.material.Text
-import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.automirrored.filled.ArrowBack
 import androidx.compose.material3.CircularProgressIndicator
 import androidx.compose.material3.MaterialTheme
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableFloatStateOf
-import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.toArgb
 import androidx.compose.ui.platform.LocalConfiguration
 import androidx.compose.ui.platform.LocalContext
 import androidx.compose.ui.platform.LocalView
 import androidx.compose.ui.res.colorResource
 import androidx.compose.ui.res.painterResource
-import androidx.compose.ui.text.TextStyle
-import androidx.compose.ui.text.font.FontWeight
-import androidx.compose.ui.text.style.TextAlign
 import androidx.compose.ui.tooling.preview.Preview
 import androidx.compose.ui.unit.dp
-import androidx.compose.ui.unit.sp
-import androidx.compose.ui.viewinterop.AndroidView
 import androidx.navigation.NavHostController
 import androidx.navigation.compose.rememberNavController
 import com.vpn.fastestvpnservice.R
 import com.vpn.fastestvpnservice.beans.isDarkTheme
 import com.vpn.fastestvpnservice.constants.AppConstant
-import com.vpn.fastestvpnservice.constants.PrivacyPolicyDesc
-import com.vpn.fastestvpnservice.constants.TermsAndConditionsDesc
 import com.vpn.fastestvpnservice.helpers.BasePreferenceHelper
-import com.vpn.fastestvpnservice.sealedClass.BottomBarScreen
-import com.vpn.fastestvpnservice.sealedClass.Screen
 import kotlinx.coroutines.delay
 
 @Composable