96 lines
1.6 KiB
Go
96 lines
1.6 KiB
Go
package config
|
|
|
|
import (
|
|
_ "embed"
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
)
|
|
|
|
//go:embed version
|
|
var version string
|
|
|
|
//go:embed name
|
|
var name string
|
|
|
|
//go:embed config.json
|
|
var defaultConfig string
|
|
|
|
type LogLevel string
|
|
|
|
const (
|
|
Debug LogLevel = "debug"
|
|
Info LogLevel = "info"
|
|
Warn LogLevel = "warn"
|
|
Error LogLevel = "error"
|
|
)
|
|
|
|
func GetVersion() string {
|
|
return strings.TrimSpace(version)
|
|
}
|
|
|
|
func GetName() string {
|
|
return strings.TrimSpace(name)
|
|
}
|
|
|
|
func GetLogLevel() LogLevel {
|
|
if IsDebug() {
|
|
return Debug
|
|
}
|
|
logLevel := os.Getenv("SUI_LOG_LEVEL")
|
|
if logLevel == "" {
|
|
return Info
|
|
}
|
|
return LogLevel(logLevel)
|
|
}
|
|
|
|
func IsDebug() bool {
|
|
return os.Getenv("SUI_DEBUG") == "true"
|
|
}
|
|
|
|
func GetBinFolderPath() string {
|
|
binFolderPath := os.Getenv("SUI_BIN_FOLDER")
|
|
if binFolderPath == "" {
|
|
binFolderPath = "bin"
|
|
}
|
|
return binFolderPath
|
|
}
|
|
|
|
func GetDBFolderPath() string {
|
|
dbFolderPath := os.Getenv("SUI_DB_FOLDER")
|
|
if dbFolderPath == "" {
|
|
dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
|
|
if err != nil {
|
|
dbFolderPath = "/usr/local/s-ui/db"
|
|
}
|
|
dbFolderPath = dir + "/db"
|
|
}
|
|
return dbFolderPath
|
|
}
|
|
|
|
func GetDBPath() string {
|
|
return fmt.Sprintf("%s/%s.db", GetDBFolderPath(), GetName())
|
|
}
|
|
|
|
func GetDefaultConfig() string {
|
|
apiEnv := GetEnvApi()
|
|
if len(apiEnv) > 0 {
|
|
return strings.Replace(defaultConfig, "127.0.0.1:1080", apiEnv, 1)
|
|
}
|
|
return defaultConfig
|
|
}
|
|
|
|
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"
|
|
}
|