mirror of
https://github.com/Sagit-chu/flvx.git
synced 2026-09-30 00:06:38 +08:00
65 lines
1.3 KiB
Go
65 lines
1.3 KiB
Go
package api
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/go-gost/x/config"
|
|
"github.com/go-gost/x/config/loader"
|
|
"github.com/go-gost/x/config/parsing/parser"
|
|
"github.com/go-gost/x/registry"
|
|
xservice "github.com/go-gost/x/service"
|
|
)
|
|
|
|
// swagger:parameters reloadConfigRequest
|
|
type reloadConfigRequest struct{}
|
|
|
|
// successful operation.
|
|
// swagger:response reloadConfigResponse
|
|
type reloadConfigResponse struct {
|
|
Data Response
|
|
}
|
|
|
|
func reloadConfig(ctx *gin.Context) {
|
|
// swagger:route POST /config/reload Reload reloadConfigRequest
|
|
//
|
|
// Hot reload config.
|
|
//
|
|
// Security:
|
|
// basicAuth: []
|
|
//
|
|
// Responses:
|
|
// 200: reloadConfigResponse
|
|
|
|
cfg, err := parser.Parse()
|
|
if err != nil {
|
|
writeError(ctx, NewError(http.StatusBadRequest, ErrCodeInvalid, err.Error()))
|
|
return
|
|
}
|
|
|
|
config.Set(cfg)
|
|
|
|
if err := loader.Load(cfg); err != nil {
|
|
writeError(ctx, NewError(http.StatusBadRequest, ErrCodeInvalid, err.Error()))
|
|
return
|
|
}
|
|
activeServices := make(map[string]struct{}, len(cfg.Services))
|
|
for _, svc := range cfg.Services {
|
|
if svc != nil {
|
|
activeServices[svc.Name] = struct{}{}
|
|
}
|
|
}
|
|
xservice.GetGlobalTrafficManager().RetainServices(activeServices)
|
|
|
|
for _, svc := range registry.ServiceRegistry().GetAll() {
|
|
svc := svc
|
|
go func() {
|
|
svc.Serve()
|
|
}()
|
|
}
|
|
|
|
ctx.JSON(http.StatusOK, Response{
|
|
Msg: "OK",
|
|
})
|
|
}
|