diff --git a/cmd/cli/cli.go b/cmd/cli/cli.go index da9d8c9..986e069 100644 --- a/cmd/cli/cli.go +++ b/cmd/cli/cli.go @@ -61,7 +61,7 @@ var ( v = viper.NewWithOptions(viper.KeyDelimiter("::")) defaultConfigFile = "ctrld.toml" rootCertPool *x509.CertPool - errSelfCheckNoAnswer = errors.New("No response from ctrld listener. You can try to re-launch with flag --skip_self_checks") + errSelfCheckNoAnswer = errors.New("no response from ctrld listener. You can try to re-launch with flag --skip_self_checks") ) var basicModeFlags = []string{"listen", "primary_upstream", "secondary_upstream", "domains"} diff --git a/cmd/cli/service.go b/cmd/cli/service.go index 82f144c..0567b88 100644 --- a/cmd/cli/service.go +++ b/cmd/cli/service.go @@ -10,6 +10,7 @@ import ( "github.com/kardianos/service" "github.com/Control-D-Inc/ctrld/internal/router" + "github.com/Control-D-Inc/ctrld/internal/router/openwrt" ) // newService wraps service.New call to return service.Service @@ -188,6 +189,13 @@ func checkHasElevatedPrivilege() { func unixSystemVServiceStatus() (service.Status, error) { out, err := exec.Command("/etc/init.d/ctrld", "status").CombinedOutput() if err != nil { + // Specific case for openwrt >= 24.10, it returns non-success code + // for above status command, which may not right. + if router.Name() == openwrt.Name { + if string(bytes.ToLower(bytes.TrimSpace(out))) == "inactive" { + return service.StatusStopped, nil + } + } return service.StatusUnknown, nil }