mirror of
https://github.com/VaalaCat/frp-panel.git
synced 2025-09-26 19:31:18 +08:00
79 lines
2.3 KiB
Go
79 lines
2.3 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/VaalaCat/frp-panel/biz/master/auth"
|
|
"github.com/VaalaCat/frp-panel/biz/master/proxy"
|
|
"github.com/VaalaCat/frp-panel/conf"
|
|
"github.com/VaalaCat/frp-panel/services/app"
|
|
"github.com/VaalaCat/frp-panel/services/cache"
|
|
"github.com/VaalaCat/frp-panel/services/master"
|
|
"github.com/VaalaCat/frp-panel/services/mux"
|
|
"github.com/VaalaCat/frp-panel/services/watcher"
|
|
"github.com/VaalaCat/frp-panel/utils/logger"
|
|
"github.com/VaalaCat/frp-panel/utils/wsgrpc"
|
|
"github.com/fatedier/golib/crypto"
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/sourcegraph/conc"
|
|
"go.uber.org/fx"
|
|
)
|
|
|
|
type runMasterParam struct {
|
|
fx.In
|
|
|
|
Lc fx.Lifecycle
|
|
|
|
Ctx *app.Context
|
|
AppInstance app.Application
|
|
DBManagerMgr app.DBManager
|
|
HTTPMuxServer mux.MuxServer `name:"httpMux"`
|
|
TLSMuxServer mux.MuxServer `name:"tlsMux"`
|
|
MasterRouter *gin.Engine `name:"masterRouter"`
|
|
ClientLogManager app.ClientLogManager
|
|
WsGrpcHandler gin.HandlerFunc `name:"wsGrpcHandler"`
|
|
MasterService master.MasterService `name:"wsMasterService"`
|
|
TaskManager watcher.Client `name:"masterTaskManager"`
|
|
WsListener *wsgrpc.WSListener
|
|
DefaultServerConfig conf.Config `name:"defaultServerConfig"`
|
|
}
|
|
|
|
func runMaster(param runMasterParam) {
|
|
cfg := param.AppInstance.GetConfig()
|
|
crypto.DefaultSalt = conf.MasterDefaultSalt(cfg)
|
|
|
|
param.AppInstance.SetClientLogManager(param.ClientLogManager)
|
|
param.MasterRouter.GET("/wsgrpc", param.WsGrpcHandler)
|
|
|
|
cache.InitCache(param.AppInstance.GetConfig())
|
|
auth.InitAuth(param.AppInstance)
|
|
|
|
param.TaskManager.AddCronTask("0 0 3 * * *", proxy.CollectDailyStats, param.AppInstance)
|
|
defer param.TaskManager.Stop()
|
|
|
|
logger.Logger(param.Ctx).Infof("start to run master")
|
|
var wg conc.WaitGroup
|
|
|
|
param.Lc.Append(fx.Hook{
|
|
OnStart: func(ctx context.Context) error {
|
|
wg.Go(func() {
|
|
if err := param.MasterService.GetServer().Serve(param.WsListener); err != nil {
|
|
logger.Logger(param.Ctx).Fatalf("gRPC server error: %v", err)
|
|
}
|
|
})
|
|
wg.Go(param.TLSMuxServer.Run)
|
|
wg.Go(param.HTTPMuxServer.Run)
|
|
wg.Go(param.TaskManager.Run)
|
|
return nil
|
|
},
|
|
OnStop: func(ctx context.Context) error {
|
|
param.MasterService.GetServer().Stop()
|
|
param.TLSMuxServer.Stop()
|
|
param.HTTPMuxServer.Stop()
|
|
param.TaskManager.Stop()
|
|
wg.Wait()
|
|
return nil
|
|
},
|
|
})
|
|
}
|