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