Add various features
* HTTP Server * Config files
This commit is contained in:
@@ -9,6 +9,7 @@ import (
|
||||
|
||||
"github.com/urfave/cli/v2"
|
||||
"github.uio.no/torjus/dogtamer"
|
||||
"github.uio.no/torjus/dogtamer/config"
|
||||
"github.uio.no/torjus/dogtamer/server"
|
||||
"go.uber.org/zap"
|
||||
"go.uber.org/zap/zapcore"
|
||||
@@ -56,35 +57,51 @@ func main() {
|
||||
}
|
||||
|
||||
func ActionServe(c *cli.Context) error {
|
||||
logger := setupServerLogger()
|
||||
cfg, err := config.FromDefaultLocations()
|
||||
if err != nil {
|
||||
logger.Warn("No config file found.")
|
||||
}
|
||||
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
// Setup rtmp server
|
||||
s := server.NewRTMPServer(ctx, ":5566")
|
||||
logger := setupServerLogger()
|
||||
// Setup RTMP-server
|
||||
s := server.NewRTMPServer(ctx, cfg.RTMPListenAddr)
|
||||
s.Logger = logger
|
||||
|
||||
// Setup web server
|
||||
ws := server.NewWebServer(ctx, s)
|
||||
go func() {
|
||||
s.Logger.Info("Starting web server")
|
||||
err := ws.Serve()
|
||||
if err != nil && err != http.ErrServerClosed {
|
||||
s.Logger.Infow("Web server shut down with error", "err", err)
|
||||
}
|
||||
}()
|
||||
|
||||
// Setup web-server
|
||||
webDone := make(chan struct{})
|
||||
if cfg.HTTPServerEnable {
|
||||
ws := server.NewWebServer(ctx, s)
|
||||
ws.ListenAddr = cfg.HTTPListenAddr
|
||||
ws.Logger = logger
|
||||
go func() {
|
||||
s.Logger.Info("Starting web-server.")
|
||||
err := ws.Serve()
|
||||
if err != nil && err != http.ErrServerClosed {
|
||||
s.Logger.Infow("Web server shut down with error.", "err", err)
|
||||
}
|
||||
close(webDone)
|
||||
}()
|
||||
} else {
|
||||
close(webDone)
|
||||
}
|
||||
// Listen for SIGINT
|
||||
sigChan := make(chan os.Signal, 1)
|
||||
signal.Notify(sigChan, os.Interrupt)
|
||||
go func() {
|
||||
<-sigChan
|
||||
s.Logger.Info("Got shutdown signal.")
|
||||
s.Logger.Debug("Got shutdown signal.")
|
||||
cancel()
|
||||
}()
|
||||
|
||||
// Start RTMP-server
|
||||
s.Logger.Info("Starting RTMP-server.")
|
||||
if err := s.Listen(); err != nil {
|
||||
return cli.Exit(err, ExitGenericError)
|
||||
}
|
||||
|
||||
// Wait for webserver to exit, if started
|
||||
<-webDone
|
||||
s.Logger.Info("Server shut down.")
|
||||
return nil
|
||||
}
|
||||
@@ -97,7 +114,7 @@ func setupServerLogger() *zap.SugaredLogger {
|
||||
logEncoderConfig.EncodeDuration = zapcore.StringDurationEncoder
|
||||
|
||||
rootLoggerConfig := &zap.Config{
|
||||
Level: zap.NewAtomicLevelAt(zap.InfoLevel),
|
||||
Level: zap.NewAtomicLevelAt(zap.DebugLevel),
|
||||
OutputPaths: []string{"stdout"},
|
||||
ErrorOutputPaths: []string{"stdout"},
|
||||
Encoding: "console",
|
||||
|
Reference in New Issue
Block a user