diff --git a/core/src/main/golang/native/config/process.go b/core/src/main/golang/native/config/process.go
index 606c0782..7ed60b8e 100644
--- a/core/src/main/golang/native/config/process.go
+++ b/core/src/main/golang/native/config/process.go
@@ -17,6 +17,7 @@ import (
)
var processors = []processor{
+ patchExternalController, // must before patchOverride, so we only apply ExternalController in Override settings
patchOverride,
patchGeneral,
patchProfile,
@@ -39,9 +40,19 @@ func patchOverride(cfg *config.RawConfig, _ string) error {
return nil
}
-func patchGeneral(cfg *config.RawConfig, _ string) error {
+func patchExternalController(cfg *config.RawConfig, _ string) error {
+ cfg.ExternalController = ""
+ cfg.ExternalControllerTLS = ""
+
+ return nil
+}
+
+func patchGeneral(cfg *config.RawConfig, profileDir string) error {
cfg.Interface = ""
- cfg.ExternalUI = ""
+ cfg.RoutingMark = 0
+ if cfg.ExternalController != "" || cfg.ExternalControllerTLS != "" {
+ cfg.ExternalUI = profileDir + "/ui"
+ }
return nil
}
diff --git a/core/src/main/java/com/github/kr328/clash/core/model/ConfigurationOverride.kt b/core/src/main/java/com/github/kr328/clash/core/model/ConfigurationOverride.kt
index 8f87a698..3ae806af 100644
--- a/core/src/main/java/com/github/kr328/clash/core/model/ConfigurationOverride.kt
+++ b/core/src/main/java/com/github/kr328/clash/core/model/ConfigurationOverride.kt
@@ -42,7 +42,10 @@ data class ConfigurationOverride(
var ipv6: Boolean? = null,
@SerialName("external-controller")
- var externalController: String? = "127.0.0.1:0",
+ var externalController: String? = null,
+
+ @SerialName("external-controller-tls")
+ var externalControllerTLS: String? = null,
@SerialName("secret")
var secret: String? = null,
diff --git a/design/src/main/java/com/github/kr328/clash/design/OverrideSettingsDesign.kt b/design/src/main/java/com/github/kr328/clash/design/OverrideSettingsDesign.kt
index 9c8c8610..3f17f70e 100644
--- a/design/src/main/java/com/github/kr328/clash/design/OverrideSettingsDesign.kt
+++ b/design/src/main/java/com/github/kr328/clash/design/OverrideSettingsDesign.kt
@@ -149,6 +149,14 @@ class OverrideSettingsDesign(
empty = R.string.default_
)
+ editableText(
+ value = configuration::externalControllerTLS,
+ adapter = NullableTextAdapter.String,
+ title = R.string.external_controller_tls,
+ placeholder = R.string.dont_modify,
+ empty = R.string.default_
+ )
+
editableText(
value = configuration::secret,
adapter = NullableTextAdapter.String,
diff --git a/design/src/main/res/values/strings.xml b/design/src/main/res/values/strings.xml
index a0664de3..0be678d2 100644
--- a/design/src/main/res/values/strings.xml
+++ b/design/src/main/res/values/strings.xml
@@ -147,6 +147,7 @@
Log Level
IPv6
External Controller
+ External Controller TLS
Secret
Hosts
New