Browse Source

Fix for bad yaml file

世界 4 years ago
parent
commit
901f1d3594

+ 1 - 1
app/build.gradle

@@ -172,7 +172,7 @@ dependencies {
 
     implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
     implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0-RC"
-    implementation "androidx.activity:activity-ktx:1.2.2"
+    implementation "androidx.activity:activity-ktx:1.2.3"
     implementation "androidx.fragment:fragment-ktx:1.3.3"
     implementation "androidx.browser:browser:1.3.0"
 

+ 7 - 2
app/src/main/java/io/nekohasekai/sagernet/database/ProfileManager.kt

@@ -44,6 +44,7 @@ import io.nekohasekai.sagernet.fmt.v2ray.VMessBean
 import io.nekohasekai.sagernet.ktx.*
 import io.nekohasekai.sagernet.utils.DirectBoot
 import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
+import org.yaml.snakeyaml.TypeDescription
 import org.yaml.snakeyaml.Yaml
 import org.yaml.snakeyaml.error.YAMLException
 import java.io.IOException
@@ -51,6 +52,7 @@ import java.sql.SQLException
 import java.util.*
 import kotlin.collections.ArrayList
 
+
 object ProfileManager {
 
     interface Listener {
@@ -351,7 +353,9 @@ object ProfileManager {
             try {
 
                 // clash
-                for (proxy in (Yaml().loadAs(
+                for (proxy in (Yaml().apply {
+                    addTypeDescription(TypeDescription(String::class.java, "str"))
+                }.loadAs(
                     text,
                     Map::class.java
                 )["proxies"] as? (List<Map<String, Any?>>)
@@ -481,7 +485,8 @@ object ProfileManager {
                 }
                 proxies.forEach { it.initDefaultValues() }
                 return 1 to proxies
-            } catch (ignored: YAMLException) {
+            } catch (e: YAMLException) {
+                Logs.w(e)
             }
         }