Files
screego/cmd/serve.go
Jannis Mattheis 0602e758f4 Add serve command
2020-10-04 20:10:38 +02:00

56 lines
1.3 KiB
Go

package cmd
import (
mrand "math/rand"
"os"
"time"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"github.com/screego/server/auth"
"github.com/screego/server/config"
"github.com/screego/server/logger"
"github.com/screego/server/router"
"github.com/screego/server/server"
"github.com/screego/server/turn"
"github.com/screego/server/ws"
"github.com/urfave/cli"
)
var serveCmd = cli.Command{
Name: "serve",
Action: func(ctx *cli.Context) {
mrand.Seed(time.Now().Unix())
conf, errs := config.Get()
logger.Init(conf.LogLevel.AsZeroLogLevel())
exit := false
for _, err := range errs {
log.WithLevel(err.Level).Msg(err.Msg)
exit = exit || err.Level == zerolog.FatalLevel || err.Level == zerolog.PanicLevel
}
if exit {
os.Exit(1)
}
users, err := auth.ReadPasswordsFile(conf.UsersFile, conf.Secret)
if err != nil {
log.Fatal().Str("file", conf.UsersFile).Err(err).Msg("While loading users file")
}
auth, err := turn.Start(conf)
if err != nil {
log.Fatal().Err(err).Msg("could not start turn server")
}
rooms := ws.NewRooms(auth, users, conf)
go rooms.Start()
r := router.Router(conf, rooms, users)
if err := server.Start(r, conf.ServerAddress, conf.TLSCertFile, conf.TLSKeyFile); err != nil {
log.Fatal().Err(err).Msg("http server")
}
},
}