Merge pull request #233 from Lysander66/feature-loadconf

[feat] 二次开发: 支持直接使用json字符串作为配置内容初始化ILalServer
pull/236/head
yoko 2 years ago committed by GitHub
commit e319e6fbf3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -11,7 +11,6 @@ package logic
import ( import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"io/ioutil"
"os" "os"
"strings" "strings"
@ -168,23 +167,18 @@ type CommonHttpAddrConfig struct {
HttpsKeyFile string `json:"https_key_file"` HttpsKeyFile string `json:"https_key_file"`
} }
func LoadConfAndInitLog(confFile string) *Config { func LoadConfAndInitLog(rawContent []byte) *Config {
var config *Config var config *Config
// 读取配置文件并解析原始内容 // 读取配置并解析原始内容
rawContent, err := ioutil.ReadFile(confFile) if err := json.Unmarshal(rawContent, &config); err != nil {
if err != nil { _, _ = fmt.Fprintf(os.Stderr, "unmarshal conf file failed. raw content=%s err=%+v", rawContent, err)
_, _ = fmt.Fprintf(os.Stderr, "read conf file failed. file=%s err=%+v", confFile, err)
base.OsExitAndWaitPressIfWindows(1)
}
if err = json.Unmarshal(rawContent, &config); err != nil {
_, _ = fmt.Fprintf(os.Stderr, "unmarshal conf file failed. file=%s err=%+v", confFile, err)
base.OsExitAndWaitPressIfWindows(1) base.OsExitAndWaitPressIfWindows(1)
} }
j, err := nazajson.New(rawContent) j, err := nazajson.New(rawContent)
if err != nil { if err != nil {
_, _ = fmt.Fprintf(os.Stderr, "nazajson unmarshal conf file failed. file=%s err=%+v", confFile, err) _, _ = fmt.Fprintf(os.Stderr, "nazajson unmarshal conf file failed. raw content=%s err=%+v", rawContent, err)
base.OsExitAndWaitPressIfWindows(1) base.OsExitAndWaitPressIfWindows(1)
} }
@ -328,7 +322,7 @@ func LoadConfAndInitLog(confFile string) *Config {
tlines = append(tlines, strings.TrimSpace(l)) tlines = append(tlines, strings.TrimSpace(l))
} }
compactRawContent := strings.Join(tlines, " ") compactRawContent := strings.Join(tlines, " ")
Log.Infof("load conf file succ. filename=%s, raw content=%s parsed=%+v", confFile, compactRawContent, config) Log.Infof("load conf succ. raw content=%s parsed=%+v", compactRawContent, config)
return config return config
} }

@ -85,6 +85,9 @@ type Option struct {
// //
ConfFilename string ConfFilename string
// ConfRawContent 配置JSON格式
ConfRawContent []byte
// NotifyHandler // NotifyHandler
// //
// 事件监听 // 事件监听

@ -11,28 +11,22 @@ package logic
import ( import (
"flag" "flag"
"fmt" "fmt"
"io/ioutil"
"net/http" "net/http"
_ "net/http/pprof"
"os" "os"
"path/filepath" "path/filepath"
"sync" "sync"
"time" "time"
"github.com/q191201771/naza/pkg/nazalog"
"github.com/q191201771/naza/pkg/defertaskthread"
"github.com/q191201771/lal/pkg/hls"
"github.com/q191201771/lal/pkg/base" "github.com/q191201771/lal/pkg/base"
"github.com/q191201771/lal/pkg/hls"
"github.com/q191201771/lal/pkg/httpts"
"github.com/q191201771/lal/pkg/rtsp"
_ "net/http/pprof"
"github.com/q191201771/lal/pkg/httpflv" "github.com/q191201771/lal/pkg/httpflv"
"github.com/q191201771/lal/pkg/httpts"
"github.com/q191201771/lal/pkg/rtmp" "github.com/q191201771/lal/pkg/rtmp"
"github.com/q191201771/lal/pkg/rtsp"
"github.com/q191201771/naza/pkg/defertaskthread"
"github.com/q191201771/naza/pkg/nazalog"
//"github.com/felixge/fgprof" //"github.com/felixge/fgprof"
) )
@ -68,6 +62,8 @@ func NewServerManager(modOption ...ModOption) *ServerManager {
fn(&sm.option) fn(&sm.option)
} }
rawContent := sm.option.ConfRawContent
if len(rawContent) == 0 {
confFile := sm.option.ConfFilename confFile := sm.option.ConfFilename
// 运行参数中没有配置文件,尝试从几个默认位置读取 // 运行参数中没有配置文件,尝试从几个默认位置读取
if confFile == "" { if confFile == "" {
@ -89,7 +85,14 @@ Doc: %s
base.OsExitAndWaitPressIfWindows(1) base.OsExitAndWaitPressIfWindows(1)
} }
} }
sm.config = LoadConfAndInitLog(confFile) var err error
rawContent, err = ioutil.ReadFile(confFile)
if err != nil {
_, _ = fmt.Fprintf(os.Stderr, "read conf file failed. file=%s err=%+v", confFile, err)
base.OsExitAndWaitPressIfWindows(1)
}
}
sm.config = LoadConfAndInitLog(rawContent)
base.LogoutStartInfo() base.LogoutStartInfo()
if sm.config.HlsConfig.Enable && sm.config.HlsConfig.UseMemoryAsDiskFlag { if sm.config.HlsConfig.Enable && sm.config.HlsConfig.UseMemoryAsDiskFlag {

Loading…
Cancel
Save