@@ -24,12 +24,14 @@ import android.view.ViewGroup
24
24
import android.webkit.CookieManager
25
25
import android.webkit.WebResourceResponse
26
26
import android.webkit.WebView
27
+ import android.webkit.WebViewClient
27
28
import com.acsbendi.requestinspectorwebview.RequestInspectorOptions
28
29
import com.acsbendi.requestinspectorwebview.RequestInspectorWebViewClient
29
30
import com.acsbendi.requestinspectorwebview.WebViewRequest
30
31
import com.acsbendi.requestinspectorwebview.WebViewRequestType
31
32
import com.google.firebase.crashlytics.FirebaseCrashlytics
32
33
import com.hippo.ehviewer.EhApplication
34
+ import com.hippo.ehviewer.Settings
33
35
import com.hippo.ehviewer.client.EhCookieStore
34
36
import com.hippo.ehviewer.client.EhRequestBuilder
35
37
import com.hippo.ehviewer.client.EhUrl
@@ -79,7 +81,12 @@ class WebViewSignInScene : SolidScene() {
79
81
mWebView = WebView (context!! )
80
82
val webSettings = mWebView!! .settings
81
83
webSettings.javaScriptEnabled = true
82
- mWebView!! .webViewClient = LoginWebViewClient (mWebView!! )
84
+ if (Settings .getDF()){
85
+ mWebView!! .webViewClient = LoginWebViewClientSNI (mWebView!! )
86
+ }else {
87
+ mWebView!! .webViewClient = LoginWebViewClient ()
88
+ }
89
+
83
90
// mWebView.setWebViewClient(new UConfigActivity.UConfigWebViewClient(webView));
84
91
// mWebView.setWebChromeClient(new DialogWebChromeClient(this));
85
92
mWebView!! .loadUrl(EhUrl .URL_SIGN_IN )
@@ -95,7 +102,7 @@ class WebViewSignInScene : SolidScene() {
95
102
}
96
103
}
97
104
98
- private inner class LoginWebViewClient : RequestInspectorWebViewClient {
105
+ private inner class LoginWebViewClientSNI : RequestInspectorWebViewClient {
99
106
constructor (webView: WebView , options: RequestInspectorOptions ) : super (webView, options)
100
107
101
108
constructor (webView: WebView ) : super (webView)
@@ -240,4 +247,54 @@ class WebViewSignInScene : SolidScene() {
240
247
)
241
248
}
242
249
}
250
+
251
+ private inner class LoginWebViewClient : WebViewClient () {
252
+ fun parseCookies (url : HttpUrl , cookieStrings : String? ): List <Cookie > {
253
+ if (cookieStrings == null ) {
254
+ return emptyList()
255
+ }
256
+
257
+ var cookies: MutableList <Cookie >? = null
258
+ val pieces =
259
+ cookieStrings.split(" ;" .toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
260
+ for (piece in pieces) {
261
+ val cookie = Cookie .parse(url, piece) ? : continue
262
+ if (cookies == null ) {
263
+ cookies = java.util.ArrayList ()
264
+ }
265
+ cookies.add(cookie)
266
+ }
267
+
268
+ return cookies ? : emptyList()
269
+ }
270
+
271
+ fun addCookie (context : Context , domain : String? , cookie : Cookie ) {
272
+ EhApplication .getEhCookieStore(context)
273
+ .addCookie(EhCookieStore .newCookie(cookie, domain, true , true , true ))
274
+ }
275
+
276
+ override fun onPageFinished (view : WebView , url : String ) {
277
+ val context: Context = ehContext ? : return
278
+ val httpUrl = HttpUrl .parse(url) ? : return
279
+
280
+ val cookieString = CookieManager .getInstance().getCookie(EhUrl .HOST_E )
281
+ val cookies = parseCookies(httpUrl, cookieString)
282
+ var getId = false
283
+ var getHash = false
284
+ for (cookie in cookies) {
285
+ if (EhCookieStore .KEY_IPD_MEMBER_ID == cookie.name()) {
286
+ getId = true
287
+ } else if (EhCookieStore .KEY_IPD_PASS_HASH == cookie.name()) {
288
+ getHash = true
289
+ }
290
+ addCookie(context, EhUrl .DOMAIN_EX , cookie)
291
+ addCookie(context, EhUrl .DOMAIN_E , cookie)
292
+ }
293
+
294
+ if (getId && getHash) {
295
+ setResult(RESULT_OK , null )
296
+ finish()
297
+ }
298
+ }
299
+ }
243
300
}
0 commit comments