From 04a648ec03af2c72563b64cf4c039b061411ad37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Tue, 28 Jan 2025 09:11:09 +0800 Subject: [PATCH 1/6] Update local DNS transport registration --- app/src/main/java/io/nekohasekai/sfa/bg/BoxService.kt | 2 -- .../java/io/nekohasekai/sfa/bg/PlatformInterfaceWrapper.kt | 5 +++++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/io/nekohasekai/sfa/bg/BoxService.kt b/app/src/main/java/io/nekohasekai/sfa/bg/BoxService.kt index 36264e87..fadfad60 100644 --- a/app/src/main/java/io/nekohasekai/sfa/bg/BoxService.kt +++ b/app/src/main/java/io/nekohasekai/sfa/bg/BoxService.kt @@ -150,7 +150,6 @@ class BoxService( } DefaultNetworkMonitor.start() - Libbox.registerLocalDNSTransport(LocalResolver) Libbox.setMemoryLimit(!Settings.disableMemoryLimit) val newService = try { @@ -263,7 +262,6 @@ class BoxService( } commandServer?.setService(null) boxService = null - Libbox.registerLocalDNSTransport(null) DefaultNetworkMonitor.stop() commandServer?.apply { diff --git a/app/src/main/java/io/nekohasekai/sfa/bg/PlatformInterfaceWrapper.kt b/app/src/main/java/io/nekohasekai/sfa/bg/PlatformInterfaceWrapper.kt index a6c6fe0a..381fb874 100644 --- a/app/src/main/java/io/nekohasekai/sfa/bg/PlatformInterfaceWrapper.kt +++ b/app/src/main/java/io/nekohasekai/sfa/bg/PlatformInterfaceWrapper.kt @@ -10,6 +10,7 @@ import android.util.Log import androidx.annotation.RequiresApi import io.nekohasekai.libbox.InterfaceUpdateListener import io.nekohasekai.libbox.Libbox +import io.nekohasekai.libbox.LocalDNSTransport import io.nekohasekai.libbox.NetworkInterfaceIterator import io.nekohasekai.libbox.PlatformInterface import io.nekohasekai.libbox.StringIterator @@ -169,6 +170,10 @@ interface PlatformInterfaceWrapper : PlatformInterface { return WIFIState(ssid, wifiInfo.bssid) } + override fun localDNSTransport(): LocalDNSTransport? { + return LocalResolver + } + private class InterfaceArray(private val iterator: Iterator) : NetworkInterfaceIterator { From 9b0f3433cefb038940906fb495ae5d7f2d8de0af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Wed, 8 Jan 2025 12:21:21 +0800 Subject: [PATCH 2/6] Add support for systemCertificates --- .../sfa/bg/PlatformInterfaceWrapper.kt | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/app/src/main/java/io/nekohasekai/sfa/bg/PlatformInterfaceWrapper.kt b/app/src/main/java/io/nekohasekai/sfa/bg/PlatformInterfaceWrapper.kt index 381fb874..068a529c 100644 --- a/app/src/main/java/io/nekohasekai/sfa/bg/PlatformInterfaceWrapper.kt +++ b/app/src/main/java/io/nekohasekai/sfa/bg/PlatformInterfaceWrapper.kt @@ -21,6 +21,9 @@ import java.net.Inet6Address import java.net.InetSocketAddress import java.net.InterfaceAddress import java.net.NetworkInterface +import java.security.KeyStore +import kotlin.io.encoding.Base64 +import kotlin.io.encoding.ExperimentalEncodingApi import io.nekohasekai.libbox.NetworkInterface as LibboxNetworkInterface interface PlatformInterfaceWrapper : PlatformInterface { @@ -174,6 +177,23 @@ interface PlatformInterfaceWrapper : PlatformInterface { return LocalResolver } + @OptIn(ExperimentalEncodingApi::class) + override fun systemCertificates(): StringIterator { + val certificates = mutableListOf() + val keyStore = KeyStore.getInstance("AndroidCAStore") + if (keyStore != null) { + keyStore.load(null, null); + val aliases = keyStore.aliases() + while (aliases.hasMoreElements()) { + val cert = keyStore.getCertificate(aliases.nextElement()) + certificates.add( + "-----BEGIN CERTIFICATE-----\n" + Base64.encode(cert.encoded) + "\n-----END CERTIFICATE-----" + ) + } + } + return StringArray(certificates.iterator()) + } + private class InterfaceArray(private val iterator: Iterator) : NetworkInterfaceIterator { From d5cb5bf928b737c03604ac573206de96f323a0a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Thu, 20 Feb 2025 22:30:22 +0800 Subject: [PATCH 3/6] Fix missing links for new deprecated warnings --- .../java/io/nekohasekai/sfa/ui/main/DashboardFragment.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/io/nekohasekai/sfa/ui/main/DashboardFragment.kt b/app/src/main/java/io/nekohasekai/sfa/ui/main/DashboardFragment.kt index 1068f2d7..9a836791 100644 --- a/app/src/main/java/io/nekohasekai/sfa/ui/main/DashboardFragment.kt +++ b/app/src/main/java/io/nekohasekai/sfa/ui/main/DashboardFragment.kt @@ -138,9 +138,11 @@ class DashboardFragment : Fragment(R.layout.fragment_dashboard) { builder.setPositiveButton(R.string.ok) { _, _ -> loopShowDeprecatedNotes(notes) } - builder.setNeutralButton(R.string.service_error_deprecated_warning_documentation) { _, _ -> - requireContext().launchCustomTab(note.migrationLink) - loopShowDeprecatedNotes(notes) + if (!note.migrationLink.isNullOrBlank()) { + builder.setNeutralButton(R.string.service_error_deprecated_warning_documentation) { _, _ -> + requireContext().launchCustomTab(note.migrationLink) + loopShowDeprecatedNotes(notes) + } } builder.show() } From f93246dae3fb6ff3745ed9f638f7279767fb16f1 Mon Sep 17 00:00:00 2001 From: jxw7453 Date: Sat, 22 Feb 2025 15:45:47 +0800 Subject: [PATCH 4/6] Add files via upload --- app/release.keystore | Bin 2201 -> 2644 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/app/release.keystore b/app/release.keystore index ab1a9fb2c7ce933e319b3996b608d42803e4fb92..acd2f0ecdaec1f7d932a2e667f0cabd9d6bd6961 100644 GIT binary patch literal 2644 zcma)8X*3iH8#XJW8O<=rzD)LQ29c$N(pUz`zI2ssgsv@HnHaJRF){WvxeAdo7m>2d znl*}qv6gIOzs2>P?>pV|{rbKi?|IMrJn!?I_t$e?EScRL2moQpumdPeHU=NFivX|! z3dyi;PaP8FJwm)W*91Qa}(`JM7ti zMmSaujHU|u3m&3A{Shmq)3^LrFPl)<`VAmZ3JC;=V&PD>e>(zU5EiTu6y_X*2e^U2 z09i27W03e>bw2!tpbR^I?Q#ShOa>2BIv3$#k+JTD1}0KpkMD0$qcPNz)_bG#Dn8T7 z)_N|XZH~5P^=F$dyJ0eNtyWJf-A|V{~hGCr>}@Aws;% z33GamMjho^E&2E+xqN8mbv3ai&D+wpR5#MKlDQtm ztNumY{nO^zwngD*IK!5AOUD)4x%k~t&z~YbVAJf5lBtnvW4oFM!l>Uv*FJ`(l6C%zoU6}sFAi;#7Wh8k z;88v>yP${bD%Z5Sczg9@!!AE$J;wd+n1OS*{z&VmBFV76xdou1HIj<78Vrzwx9SXg zGOj3?qDe@QBmvM3h~c}YPa^aK4i^NN??c+w^c}&;%1MT!6ogS}v%~}07{b7Xg;j+l zl@}diMvMB>8EP>|rA9+7m)reckl)zocetifMrZn_pQKB%1l?IiHyc%aeJnm11gP}T;s^u$$7U8?T%+$8MKp4`*-GM5NSqxEW_Mi6~epkE@lp$KwAYN zUcc#*Y->mz*zXXUp*PTC_2}KFiG;Jcpd$9f;K6NW*Q?(%4oa17r=2}`Sx0;BDUI<$ zara%OTRI7|(nOnoTt~P{X+Dk^I-jwaLsbrssMF*;?r z$jM`b!UJP35KdNP*u#6+pmEkU)!4Eh%PQVbA8?02%Mx_Io$@GRCagkbcF^ijeB2k< z=3%dmd@QA^ub;cV!+#zVg|(&NB#aD9Ue$ zS3@C?=-^dlkMsqJNrQtRl4vwKTb=1ei60a*mP?@^mk;aH8&s~(h z2Nf%FDWz7x&eyjeKFh9W8k=Xo%T!U4KAaUs1^W^{#QFLe9^CU8n<9RFP$+Dp$h4BY zf*WmG$eGn!iV+F%T5cMm@~ANSFmyXSBh7(Uw{ubg)?^V;;OsF^)RIx}nlU#Ds?kU= zee)Qnjph9nmoPMrU6_rUX>lpT7)OT1dAa7U%)H(s|FD{F$Je%^RX@?@F_|3qgy zlI^r~qs)4ZU6wR5rHt`ArlRoSkFUmEmNVYe;;}RlP*C5J=QcMgb!$LM$QUDU4J zudVJxjQqLx(4Oe#t@y55yJs$eepk>m=KDha9ALw$l zJ6)E73A3=ATCNCjH+_aO*XNEgt6N{yiGSwr9Wn7@e`m@IUtG|`q3DyFu2N^ruHjX# z&>VG+6`9<%bI^LnOTS#lu2n5kQD<N}oHeEnG!SI24mjCm55>%ln|j@hnH?<+{wYo-Z&4UXK$=jg4~a9_{j zjj8%mwzf*9YX-WRQyJMxkI(SZx%Q(b&V&2gsHVPg@^=b?UFSfgI@E{kHT#ap2KS}RO8{{H9fZtWB=r#Gd?+APFf*AFX$$Zcu(as z_&rV}%7$V&{T_dN!3rSSvw-$jo)<(7M_VFmJsrGeChu|FeOLTZZj@egQ%fA~^G9L@ zK6>HpEAzCK@%6^`(21uG-K78nd&m8R&A{S3|3+RIyl13em=wSdK#bpF7HxlSIbUd~ zJ6~WiTqm5jX)cJCe@oVw&)VbI_MCR2vpNZlsz}HT78p~!odOJNKUph!B?lMZNURaq zCmFtTbKwfwom3lZEq&f}w9aJfxZ-hprE{qFlUW1Zfgwz!P1)jGC}Hf*hB~rK^1Nae zAR4V1k0oGnSj4YS3kZO)fJL2ZMYV-Yu5bR;O|ktJF7YL*wJ2Va8G bKvU9UOeDWjZ& literal 2201 zcmcJP`8U*y8^`A}GsZL-l{K+R`w-h z3q_V9i725c`+SjYt~JTv+PdyN-|sp71K%H>b6(GL&U2pgyr1X1_m=jSAP@+2KY)MY zptq~1kB5`LtEbbI{hIFv$K*5w!UqMJ@I6ovfs#i6aDV_k0swpvI1@hqu76UYy`pu@ z=Jsxsxy8GL_13UEHPQp2lme=<+`XFVW!|_6@>8!cQ?X?$YzdA+@UAMSAhnuganBit zkM-myt%d1nX3}1mr#zDAmC_~-zvOl8R5$Ic>~7t>)D*21>`8Hzxy;Fa?A7w@45MPu z(7&Fyy)k}%6`MNdAW4F%xmkBY-quU5__O89mZ$iX&$7cl!HFG3_Ybc zCpk+@*4Ej@YYeurWTo-)oh8U)^vXB?R-;r`pALsQ(C8uL?$*oqcD~djQ2)y2J;fvYq&jUJ=rKy^%=@LP;+Ub6y?9G?FU?gnIG$3iJ z=(BR%#!ywgY>S3%ZTysgtf?eLLpuTytJthyeW>pyX+{6l%16Huq;Dy!zNK#AFrJ;5`!u4W~blKwMr!Wc>@B|qU8Dpn2+G$n#Oa)#Ay zQTC;h!RGJL1U>$qP=SlKCc5u?t3WRawMdrKSHJ921p0SUg`fY4w>EC6Xk!KZ7h-)D zS5M6naW0x#3X~N``d6}p$eZVD3U1OlI6Daa)|BAn+s!mDF4sh=u2*SF3%mW+sYf?n z>bu~NivcoW8(GX0Cz_1Q{D)ByN2EV=myCTvu9}-|(~@adDO@)IgbLm_h{JExcSG$G zMjp42#SwzK`HqI0 z-MW&%U)GfD=uRr1+p_JH0VNFYJMgm!kwhyy$Lga$vV3h^S{|;%*Ft9O&QlMv1Foj* zu`m0u*xpJwm#N&e*)h33eE0p#99#Q*>0P@e!YfNGi{Lsj7rLF8=CM{i@}-j$D}FHh z^7ex;)0ELlu|J&E9df#X8<~oc0y^s}9Y%G?a4r2gM*QT3P)^o)>WmSe*d^%5^_bPN zy4ZBFGX9xRY-R8vhI@nO*ut-StHPW=qGjPB z<&sq|_GaTn0sBL<7=ggVBVMOF-)T=rI6uaJ5^qW-dBo@=xH&c@t~7S0wBX{S49^>7 z07aEJH7RgAh&6tfbAJ>n?MFX60#fbre)RUv2Op>Y3{ho=qCf^X&>}1=$W5a(R^w zfqsD^gYFKtrBSb+>S915_4ft01AbNR3-fjL?aFmq79=r&;W3d4+2t^Q6LflvwA#e-oE?8n7|OmM$oBiF)!IVK4mU{~$!(Z2bmwT?V>_wA{!`?x zV$aroL9R>UOtQmLOPVi@`rVR>G1S6}up%(bhexS`ZQ+lqFxB&(6jlSlY7na+Q3lIP z@V!2hP67K^|!-3HPNLcCTtE!m`u; z>@Ks{6Y)Br_)PcXhZGoJZ+x%KxHb`%ptf*q0>#*jAGP0Amwux-+=pezu_&b&%)sFNEzLD zO&n6RwsMh<7ZrnM-cC2DPfmHF>NP%+%E|q`%=A@5l=)rla`LBuqQ-jL)KFS;IwdO0 z-sF?shJ&}Bqs1FTZ7tKB-?Ve@l~0`D+aManR9?EV(4p`ppV%Agz&n5*tf^uRmgK6_ z4-5@bAN6>KHjKQGKM(ees5j3kjqP32x`wuv!u@D81JGf&)^Ezb-@G+t=`8&wbamtj m=OlFF_k_r+I|dJ1Y&auB6NHB81!?Udy&2R$4UVi~(qs9UN From a69a17c33fdffb96cdc07b007d091b731d66e776 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Wed, 12 Feb 2025 20:59:01 +0800 Subject: [PATCH 5/6] Bump version --- version.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/version.properties b/version.properties index b056faa3..0f234088 100644 --- a/version.properties +++ b/version.properties @@ -1,3 +1,3 @@ -VERSION_CODE=478 -VERSION_NAME=1.11.3 -GO_VERSION=go1.23.5 +VERSION_CODE=484 +VERSION_NAME=1.12.0-alpha.11 +GO_VERSION=go1.24.0 From 6eb05c2bfa506a6aa06fab3d61e0a85108b9ac13 Mon Sep 17 00:00:00 2001 From: jxw7453 Date: Mon, 24 Feb 2025 11:36:13 +0800 Subject: [PATCH 6/6] Add files via upload