```
feat(admin): 支持TCP代理配置的API设置功能 新增对TCP代理配置的API支持,在setConfig函数中添加类型断言来处理 TcpProxyConfig类型的配置数据,并实现相应的保存逻辑。同时修复了原 有代码中可能的数据类型转换问题。 ```
This commit is contained in:
parent
43c1d63449
commit
f4a2967f59
|
|
@ -28,19 +28,32 @@ func setConfig(c *gin.Context) {
|
||||||
c.Writer.WriteHeader(http.StatusBadRequest)
|
c.Writer.WriteHeader(http.StatusBadRequest)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
t := data.(model.HttpServerConfig)
|
t, ok := data.(model.HttpServerConfig)
|
||||||
if t.Name == "admin" {
|
if ok {
|
||||||
c.Writer.WriteHeader(http.StatusForbidden)
|
if t.Name == "admin" {
|
||||||
resp := server.NewErrorResult(errors.New("不能通过api设置管理服务器"))
|
c.Writer.WriteHeader(http.StatusForbidden)
|
||||||
c.Writer.Write(resp)
|
resp := server.NewErrorResult(errors.New("不能通过api设置管理服务器"))
|
||||||
return
|
c.Writer.Write(resp)
|
||||||
}
|
return
|
||||||
er := model.SetServerConfig(&t)
|
}
|
||||||
if er != nil {
|
er := model.SetServerConfig(&t)
|
||||||
c.Writer.WriteHeader(http.StatusBadRequest)
|
if er != nil {
|
||||||
c.Writer.Write(server.NewErrorResult(er))
|
c.Writer.WriteHeader(http.StatusBadRequest)
|
||||||
return
|
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.WriteHeader(http.StatusOK)
|
||||||
c.Writer.Write(server.NewSuccessResult(t))
|
c.Writer.Write(server.NewSuccessResult(t))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -62,19 +62,19 @@ type JwtConfig struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type GoHttpdConfig struct {
|
type GoHttpdConfig struct {
|
||||||
Logging gologger.LoggersConfig `json:"logging"`
|
Logging gologger.LoggersConfig `json:"logging"`
|
||||||
Admin *HttpServerConfig `json:"admin"`
|
Admin *HttpServerConfig `json:"admin"`
|
||||||
IncludDir string `json:"includs"`
|
IncludDir string `json:"includs"`
|
||||||
Servers []*HttpServerConfig `json:"servers"`
|
Servers []*HttpServerConfig `json:"servers"`
|
||||||
TcpProxys []*TcpProxyConfig `json:"tcp_proxys"`
|
TcpProxys []*TcpProxyConfig `json:"tcp_proxys"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// TcpProxyConfig TCP代理服务器配置
|
// TcpProxyConfig TCP代理服务器配置
|
||||||
type TcpProxyConfig struct {
|
type TcpProxyConfig struct {
|
||||||
Name string `json:"name"` // 代理名称
|
Name string `json:"name"` // 代理名称
|
||||||
Listen string `json:"listen"` // 监听地址,格式如 "0.0.0.0:8080"
|
Listen string `json:"listen"` // 监听地址,格式如 "0.0.0.0:8080"
|
||||||
Target string `json:"target"` // 目标服务器地址,格式如 "192.168.1.1:3306"
|
Target string `json:"target"` // 目标服务器地址,格式如 "192.168.1.1:3306"
|
||||||
Enabled bool `json:"enabled"` // 是否启用
|
Enabled bool `json:"enabled"` // 是否启用
|
||||||
}
|
}
|
||||||
|
|
||||||
var DefaultAdminConfig HttpServerConfig = HttpServerConfig{
|
var DefaultAdminConfig HttpServerConfig = HttpServerConfig{
|
||||||
|
|
@ -114,6 +114,32 @@ func SetServerConfig(c *HttpServerConfig) error {
|
||||||
}
|
}
|
||||||
return nil
|
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 {
|
func GetServerConfig(name string) *HttpServerConfig {
|
||||||
for _, s := range Config.Servers {
|
for _, s := range Config.Servers {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue