mirror of
https://github.com/flavioribeiro/donut.git
synced 2025-10-05 15:06:51 +08:00
70 lines
1.5 KiB
Go
70 lines
1.5 KiB
Go
//go:build !js
|
|
// +build !js
|
|
|
|
package main
|
|
|
|
import (
|
|
"flag"
|
|
"log"
|
|
"net/http"
|
|
|
|
"github.com/flavioribeiro/donut/internal/controllers"
|
|
"github.com/flavioribeiro/donut/internal/entities"
|
|
"github.com/flavioribeiro/donut/internal/web"
|
|
"github.com/flavioribeiro/donut/internal/web/handlers"
|
|
|
|
"github.com/kelseyhightower/envconfig"
|
|
"go.uber.org/fx"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
func main() {
|
|
enableICEMux := false
|
|
flag.BoolVar(&enableICEMux, "enable-ice-mux", false, "Enable ICE Mux on :8081")
|
|
flag.Parse()
|
|
|
|
var c entities.Config
|
|
err := envconfig.Process("donut", &c)
|
|
if err != nil {
|
|
log.Fatal(err.Error())
|
|
}
|
|
c.EnableICEMux = enableICEMux
|
|
|
|
fx.New(
|
|
// HTTP Server
|
|
fx.Provide(web.NewHTTPServer),
|
|
|
|
// HTTP router
|
|
fx.Provide(web.NewServeMux),
|
|
|
|
// HTTP handlers
|
|
fx.Provide(handlers.NewSignalingHandler),
|
|
fx.Provide(handlers.NewIndexHandler),
|
|
|
|
// ICE mux servers
|
|
fx.Provide(controllers.NewTCPICEServer),
|
|
fx.Provide(controllers.NewUDPICEServer),
|
|
|
|
// Controllers
|
|
fx.Provide(controllers.NewSRTController),
|
|
fx.Provide(controllers.NewStreamingController),
|
|
|
|
fx.Provide(controllers.NewWebRTCController),
|
|
fx.Provide(controllers.NewWebRTCSettingsEngine),
|
|
fx.Provide(controllers.NewWebRTCMediaEngine),
|
|
fx.Provide(controllers.NewWebRTCAPI),
|
|
|
|
// Logging, Config constructors
|
|
fx.Provide(func() *zap.SugaredLogger {
|
|
logger, _ := zap.NewProduction()
|
|
return logger.Sugar()
|
|
}),
|
|
fx.Provide(func() *entities.Config {
|
|
return &c
|
|
}),
|
|
|
|
// Forcing the lifecycle initiation with NewHTTPServer
|
|
fx.Invoke(func(*http.Server) {}),
|
|
).Run()
|
|
}
|