From 587f770531b315c499d7ad235352cb9de387730f Mon Sep 17 00:00:00 2001 From: HuanCheng65 <22636177+HuanCheng65@users.noreply.github.com> Date: Sun, 26 Jun 2022 20:55:30 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=9E=9D=E7=BD=91?= =?UTF-8?q?=E6=9F=A5=E9=87=8D=E6=97=A0=E6=B3=95=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../post/plugins/asoulcnki/api/CheckApi.kt | 5 ++ .../asoulcnki/api/SSLSocketClient.java | 70 +++++++++++++++++++ .../tieba/post/utils/EmotionManager.kt | 26 ++++--- 3 files changed, 91 insertions(+), 10 deletions(-) create mode 100644 app/src/main/java/com/huanchengfly/tieba/post/plugins/asoulcnki/api/SSLSocketClient.java diff --git a/app/src/main/java/com/huanchengfly/tieba/post/plugins/asoulcnki/api/CheckApi.kt b/app/src/main/java/com/huanchengfly/tieba/post/plugins/asoulcnki/api/CheckApi.kt index 68dadaa1..13868183 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/plugins/asoulcnki/api/CheckApi.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/plugins/asoulcnki/api/CheckApi.kt @@ -18,6 +18,11 @@ object CheckApi { .addConverterFactory(GsonConverterFactory.create()) .client(OkHttpClient.Builder().apply { connectionPool(connectionPool) + sslSocketFactory( + SSLSocketClient.getSSLSocketFactory(), + SSLSocketClient.getX509TrustManager() + ) + hostnameVerifier(SSLSocketClient.getHostnameVerifier()) }.build()) .build() .create(ICheckApi::class.java) diff --git a/app/src/main/java/com/huanchengfly/tieba/post/plugins/asoulcnki/api/SSLSocketClient.java b/app/src/main/java/com/huanchengfly/tieba/post/plugins/asoulcnki/api/SSLSocketClient.java new file mode 100644 index 00000000..e3064e06 --- /dev/null +++ b/app/src/main/java/com/huanchengfly/tieba/post/plugins/asoulcnki/api/SSLSocketClient.java @@ -0,0 +1,70 @@ +package com.huanchengfly.tieba.post.plugins.asoulcnki.api; + +import java.security.KeyStore; +import java.security.SecureRandom; +import java.security.cert.X509Certificate; +import java.util.Arrays; + +import javax.net.ssl.HostnameVerifier; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSocketFactory; +import javax.net.ssl.TrustManager; +import javax.net.ssl.TrustManagerFactory; +import javax.net.ssl.X509TrustManager; + + +public class SSLSocketClient { + + //获取这个SSLSocketFactory + public static SSLSocketFactory getSSLSocketFactory() { + try { + SSLContext sslContext = SSLContext.getInstance("SSL"); + sslContext.init(null, getTrustManager(), new SecureRandom()); + return sslContext.getSocketFactory(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + //获取TrustManager + private static TrustManager[] getTrustManager() { + return new TrustManager[]{ + new X509TrustManager() { + @Override + public void checkClientTrusted(X509Certificate[] chain, String authType) { + } + + @Override + public void checkServerTrusted(X509Certificate[] chain, String authType) { + } + + @Override + public X509Certificate[] getAcceptedIssuers() { + return new X509Certificate[]{}; + } + } + }; + } + + //获取HostnameVerifier + public static HostnameVerifier getHostnameVerifier() { + return (s, sslSession) -> true; + } + + public static X509TrustManager getX509TrustManager() { + X509TrustManager trustManager = null; + try { + TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + trustManagerFactory.init((KeyStore) null); + TrustManager[] trustManagers = trustManagerFactory.getTrustManagers(); + if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager)) { + throw new IllegalStateException("Unexpected default trust managers:" + Arrays.toString(trustManagers)); + } + trustManager = (X509TrustManager) trustManagers[0]; + } catch (Exception e) { + e.printStackTrace(); + } + + return trustManager; + } +} diff --git a/app/src/main/java/com/huanchengfly/tieba/post/utils/EmotionManager.kt b/app/src/main/java/com/huanchengfly/tieba/post/utils/EmotionManager.kt index 1d7dab3b..36143e41 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/utils/EmotionManager.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/utils/EmotionManager.kt @@ -86,7 +86,13 @@ object EmotionManager { contextRef = WeakReference(context) val emotionCache = getEmotionDataCache() if (emotionCache.ids.isEmpty()) { - for (i in 1..137) { + for (i in 1..50) { + emotionIds.add("image_emoticon$i") + } + for (i in 61..101) { + emotionIds.add("image_emoticon$i") + } + for (i in 125..137) { emotionIds.add("image_emoticon$i") } } else { @@ -129,18 +135,18 @@ object EmotionManager { } fun getEmotionCacheDir(): File { - return File(getContext().externalCacheDir ?: getContext().cacheDir, "emotion") + return File(getContext().externalCacheDir ?: getContext().cacheDir, "emotion").apply { + if (exists() && isFile) { + delete() + mkdirs() + } else if (!exists()) { + mkdirs() + } + } } fun getEmotionFile(id: String): File { - val emotionsCacheDir = getEmotionCacheDir() - if (emotionsCacheDir.exists() && emotionsCacheDir.isFile) { - emotionsCacheDir.delete() - emotionsCacheDir.mkdirs() - } else if (!emotionsCacheDir.exists()) { - emotionsCacheDir.mkdirs() - } - return File(emotionsCacheDir, "$id.png") + return File(getEmotionCacheDir(), "$id.png") } fun getEmotionIdByName(name: String): String? {