57 lines
1.1 KiB
Go
57 lines
1.1 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"
|
|
)
|
|
|
|
// 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
|
|
}
|
|
|
|
for _, svc := range registry.ServiceRegistry().GetAll() {
|
|
svc := svc
|
|
go func() {
|
|
svc.Serve()
|
|
}()
|
|
}
|
|
|
|
ctx.JSON(http.StatusOK, Response{
|
|
Msg: "OK",
|
|
})
|
|
}
|