diff --git a/cmd/api/api.go b/cmd/api/api.go index c90e0c7d..0f0a162d 100644 --- a/cmd/api/api.go +++ b/cmd/api/api.go @@ -9,6 +9,7 @@ import ( "net/http" "os" "strconv" + "sync" ) func Init() { @@ -37,6 +38,7 @@ func Init() { initStatic(cfg.Mod.StaticDir) initWS(cfg.Mod.Origin) + HandleFunc("api", apiHandler) HandleFunc("api/config", configHandler) HandleFunc("api/exit", exitHandler) HandleFunc("api/streams", streamsHandler) @@ -100,6 +102,18 @@ func middlewareCORS(next http.Handler) http.Handler { }) } +var mu sync.Mutex + +func apiHandler(w http.ResponseWriter, r *http.Request) { + mu.Lock() + app.Info["host"] = r.Host + mu.Unlock() + + if err := json.NewEncoder(w).Encode(app.Info); err != nil { + log.Warn().Err(err).Caller().Send() + } +} + func exitHandler(w http.ResponseWriter, r *http.Request) { if r.Method != "POST" { http.Error(w, "", http.StatusBadRequest) diff --git a/cmd/app/app.go b/cmd/app/app.go index c78d4a72..c9dd1d63 100644 --- a/cmd/app/app.go +++ b/cmd/app/app.go @@ -15,6 +15,9 @@ var Version = "0.1-rc.8" var UserAgent = "go2rtc/" + Version var ConfigPath string +var Info = map[string]interface{}{ + "version": Version, +} func Init() { flag.StringVar( @@ -24,6 +27,8 @@ func Init() { flag.Parse() + Info["config_path"] = ConfigPath + data, _ = os.ReadFile(ConfigPath) var cfg struct { diff --git a/cmd/rtsp/rtsp.go b/cmd/rtsp/rtsp.go index 01fa7d76..7db8cd76 100644 --- a/cmd/rtsp/rtsp.go +++ b/cmd/rtsp/rtsp.go @@ -14,9 +14,9 @@ import ( func Init() { var conf struct { Mod struct { - Listen string `yaml:"listen"` - Username string `yaml:"username"` - Password string `yaml:"password"` + Listen string `yaml:"listen" json:"listen"` + Username string `yaml:"username" json:"-"` + Password string `yaml:"password" json:"-"` } `yaml:"rtsp"` } @@ -24,6 +24,7 @@ func Init() { conf.Mod.Listen = ":8554" app.LoadConfig(&conf) + app.Info["rtsp"] = conf.Mod log = app.GetLogger("rtsp")