diff --git a/cmd/server.go b/cmd/server.go index e5a5f91..6e36678 100644 --- a/cmd/server.go +++ b/cmd/server.go @@ -15,6 +15,7 @@ import ( "github.com/synctv-org/synctv/internal/rtmp" sysnotify "github.com/synctv-org/synctv/internal/sysNotify" "github.com/synctv-org/synctv/server" + "github.com/synctv-org/synctv/utils" ) var ServerCmd = &cobra.Command{ @@ -63,6 +64,8 @@ func Server(cmd *cobra.Command, args []string) { if err != nil { log.Fatal(err) } + utils.OptFilePath(&conf.Conf.Server.CertPath) + utils.OptFilePath(&conf.Conf.Server.KeyPath) if conf.Conf.Rtmp.Enable { if useMux { muxer := cmux.New(serverListener) diff --git a/internal/bootstrap/config.go b/internal/bootstrap/config.go index 2b4b1c3..f805718 100644 --- a/internal/bootstrap/config.go +++ b/internal/bootstrap/config.go @@ -28,11 +28,7 @@ func InitConfig(ctx context.Context) error { if flags.ConfigFile == "" { flags.ConfigFile = filepath.Join(flags.DataDir, "config.yaml") } else { - fileAbs, err := filepath.Abs(flags.ConfigFile) - if err != nil { - log.Fatalf("get config file abs path error: %v", err) - } - flags.ConfigFile = fileAbs + utils.OptFilePath(&flags.ConfigFile) } err := confFromConfig(flags.ConfigFile, conf.Conf) if err != nil { diff --git a/internal/bootstrap/db.go b/internal/bootstrap/db.go index bd1103b..8dabcd9 100644 --- a/internal/bootstrap/db.go +++ b/internal/bootstrap/db.go @@ -4,7 +4,6 @@ import ( "context" "database/sql" "fmt" - "path/filepath" "strings" "time" @@ -13,6 +12,7 @@ import ( "github.com/synctv-org/synctv/cmd/flags" "github.com/synctv-org/synctv/internal/conf" "github.com/synctv-org/synctv/internal/db" + "github.com/synctv-org/synctv/utils" "gorm.io/driver/mysql" "gorm.io/driver/postgres" "gorm.io/gorm" @@ -67,9 +67,7 @@ func InitDatabase(ctx context.Context) error { if !strings.HasSuffix(conf.Conf.Database.DBName, ".db") { conf.Conf.Database.DBName = conf.Conf.Database.DBName + ".db" } - if !filepath.IsAbs(conf.Conf.Database.DBName) { - conf.Conf.Database.DBName = filepath.Join(flags.DataDir, conf.Conf.Database.DBName) - } + utils.OptFilePath(&conf.Conf.Database.DBName) dsn = fmt.Sprintf("%s?_journal_mode=WAL&_vacuum=incremental&_pragma=foreign_keys(1)", conf.Conf.Database.DBName) log.Infof("sqlite3 database file: %s", conf.Conf.Database.DBName) } diff --git a/internal/bootstrap/log.go b/internal/bootstrap/log.go index 5049a89..91c07d5 100644 --- a/internal/bootstrap/log.go +++ b/internal/bootstrap/log.go @@ -5,12 +5,12 @@ import ( "io" "log" "os" - "path/filepath" "github.com/natefinch/lumberjack" "github.com/sirupsen/logrus" "github.com/synctv-org/synctv/cmd/flags" "github.com/synctv-org/synctv/internal/conf" + "github.com/synctv-org/synctv/utils" "github.com/zijiren233/go-colorable" ) @@ -27,9 +27,7 @@ func setLog(l *logrus.Logger) { func InitLog(ctx context.Context) error { setLog(logrus.StandardLogger()) if conf.Conf.Log.Enable { - if !filepath.IsAbs(conf.Conf.Log.FilePath) { - conf.Conf.Log.FilePath = filepath.Join(flags.DataDir, conf.Conf.Log.FilePath) - } + utils.OptFilePath(&conf.Conf.Log.FilePath) var l = &lumberjack.Logger{ Filename: conf.Conf.Log.FilePath, MaxSize: conf.Conf.Log.MaxSize, diff --git a/utils/utils.go b/utils/utils.go index 06ca3c9..3fcc188 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -11,6 +11,7 @@ import ( "sync" "sync/atomic" + "github.com/synctv-org/synctv/cmd/flags" yamlcomment "github.com/zijiren233/yaml-comment" "gopkg.in/yaml.v3" ) @@ -230,3 +231,12 @@ func getLocalIPs() []net.IP { return localIPs } + +func OptFilePath(filePath *string) { + if filePath == nil || *filePath == "" { + return + } + if !filepath.IsAbs(*filePath) { + *filePath = filepath.Join(flags.DataDir, *filePath) + } +}