improve systemd or docker detection

This commit is contained in:
Alireza Ahmadi
2024-10-29 13:14:25 +01:00
parent 1d46d72186
commit 282e244517
4 changed files with 14 additions and 4 deletions
+9
View File
@@ -79,3 +79,12 @@ func GetDefaultConfig() string {
func GetEnvApi() string {
return os.Getenv("SINGBOX_API")
}
func IsSystemd() bool {
pid := os.Getppid()
cmdline, err := os.ReadFile(fmt.Sprintf("/proc/%d/comm", pid))
if err != nil {
return false
}
return string(cmdline) == "systemd\n"
}
+2 -2
View File
@@ -3,6 +3,7 @@ package logger
import (
"fmt"
"os"
"s-ui/config"
"time"
"github.com/op/go-logging"
@@ -22,14 +23,13 @@ func InitLogger(level logging.Level) {
var err error
var backend logging.Backend
var format logging.Formatter
ppid := os.Getppid()
backend, err = logging.NewSyslogBackend("")
if err != nil {
println("Unable to use syslog: " + err.Error())
backend = logging.NewLogBackend(os.Stderr, "", 0)
}
if ppid > 1 && err != nil {
if config.IsSystemd() && err != nil {
format = logging.MustStringFormatter(`%{time:2006/01/02 15:04:05} %{level} - %{message}`)
} else {
format = logging.MustStringFormatter(`%{level} - %{message}`)
+2
View File
@@ -14,6 +14,7 @@ import (
var ApiAddr string
var LastUpdate int64
var IsSystemd bool
type ConfigService struct {
ClientService
@@ -38,6 +39,7 @@ func NewConfigService() *ConfigService {
}
func (s *ConfigService) InitConfig() error {
IsSystemd = config.IsSystemd()
configPath := config.GetBinFolderPath()
data, err := os.ReadFile(configPath + "/config.json")
if err != nil {
+1 -2
View File
@@ -145,10 +145,9 @@ func (s *ServerService) GetLogs(service string, count string, level string) []st
if service == "s-ui" {
return logger.GetLogs(c, level)
}
ppid := os.Getppid()
var lines []string
var cmdArgs []string
if ppid > 1 {
if IsSystemd {
cmdArgs = []string{"journalctl", "-u", service, "--no-pager", "-n", count, "-p", level}
} else {
cmdArgs = []string{"tail", "/logs/" + service + ".log", "-n", count}