feat(admin): 支持TCP代理配置的API设置功能

新增对TCP代理配置的API支持,在setConfig函数中添加类型断言来处理
TcpProxyConfig类型的配置数据,并实现相应的保存逻辑。同时修复了原
有代码中可能的数据类型转换问题。
```
This commit is contained in:
程广 2026-07-10 08:40:23 +08:00
parent 43c1d63449
commit f4a2967f59
2 changed files with 60 additions and 21 deletions

View File

@ -28,7 +28,8 @@ func setConfig(c *gin.Context) {
c.Writer.WriteHeader(http.StatusBadRequest)
return
}
t := data.(model.HttpServerConfig)
t, ok := data.(model.HttpServerConfig)
if ok {
if t.Name == "admin" {
c.Writer.WriteHeader(http.StatusForbidden)
resp := server.NewErrorResult(errors.New("不能通过api设置管理服务器"))
@ -41,6 +42,18 @@ func setConfig(c *gin.Context) {
c.Writer.Write(server.NewErrorResult(er))
return
}
} else {
tcpProxy, ok := data.(model.TcpProxyConfig)
if ok {
er := model.SetTcpProxyConfig(&tcpProxy)
if er != nil {
c.Writer.WriteHeader(http.StatusBadRequest)
c.Writer.Write(server.NewErrorResult(er))
return
}
}
}
c.Writer.WriteHeader(http.StatusOK)
c.Writer.Write(server.NewSuccessResult(t))
}

View File

@ -114,6 +114,32 @@ func SetServerConfig(c *HttpServerConfig) error {
}
return nil
}
func SetTcpProxyConfig(c *TcpProxyConfig) error {
l := gologger.GetLogger("model")
updated := false
for i, s := range Config.TcpProxys {
if s.Name == c.Name {
Config.TcpProxys[i] = c
updated = true
break
}
}
if !updated {
Config.TcpProxys = append(Config.TcpProxys, c)
}
configFile := utils.NormalizePath("./config.json")
configsStr, err := json.Marshal(Config)
if err != nil {
l.Error("Save config error:", err)
return err
}
werr := os.WriteFile(configFile, configsStr, 0644)
if werr != nil {
l.Error("Save config error:", werr)
return werr
}
return nil
}
func GetServerConfig(name string) *HttpServerConfig {
for _, s := range Config.Servers {