Files
EdgeAdmin/internal/web/actions/default/servers/serverutils/server_helper.go

490 lines
18 KiB
Go
Raw Normal View History

2020-08-21 12:32:16 +08:00
package serverutils
import (
"encoding/json"
"errors"
2021-07-07 19:55:32 +08:00
teaconst "github.com/TeaOSLab/EdgeAdmin/internal/const"
2020-08-21 12:32:16 +08:00
"github.com/TeaOSLab/EdgeAdmin/internal/rpc"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
2020-09-13 20:37:07 +08:00
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
2020-08-21 12:32:16 +08:00
"github.com/iwind/TeaGo/actions"
"github.com/iwind/TeaGo/logs"
"github.com/iwind/TeaGo/maps"
"github.com/iwind/TeaGo/types"
"net/http"
"strconv"
)
type ServerHelper struct {
}
func NewServerHelper() *ServerHelper {
return &ServerHelper{}
}
func (this *ServerHelper) BeforeAction(action *actions.ActionObject) {
if action.Request.Method != http.MethodGet {
return
}
action.Data["teaMenu"] = "servers"
// 左侧菜单
this.createLeftMenu(action)
}
func (this *ServerHelper) createLeftMenu(action *actions.ActionObject) {
// 初始化
2020-09-21 19:51:50 +08:00
if !action.Data.Has("leftMenuItemIsDisabled") {
action.Data["leftMenuItemIsDisabled"] = false
}
2020-08-21 12:32:16 +08:00
action.Data["leftMenuItems"] = []maps.Map{}
mainTab, _ := action.Data["mainTab"]
secondMenuItem, _ := action.Data["secondMenuItem"]
serverId := action.ParamInt64("serverId")
2020-09-20 08:58:48 +08:00
if serverId == 0 {
return
}
2020-08-21 12:32:16 +08:00
serverIdString := strconv.FormatInt(serverId, 10)
2020-09-13 20:37:07 +08:00
action.Data["serverId"] = serverId
2020-08-21 12:32:16 +08:00
// 读取server信息
rpcClient, err := rpc.SharedRPC()
if err != nil {
logs.Error(err)
return
}
serverResp, err := rpcClient.ServerRPC().FindEnabledServer(rpcClient.Context(action.Context.GetInt64("adminId")), &pb.FindEnabledServerRequest{ServerId: serverId})
if err != nil {
logs.Error(err)
return
}
server := serverResp.Server
if server == nil {
logs.Error(errors.New("can not find the server"))
return
}
2021-12-02 17:41:51 +08:00
// 初始化数据
if !action.Data.Has("server") {
action.Data["server"] = maps.Map{"id": server.Id, "name": server.Name}
}
2020-09-13 20:37:07 +08:00
// 服务管理
2020-08-21 12:32:16 +08:00
serverConfig := &serverconfigs.ServerConfig{}
err = json.Unmarshal(server.Config, serverConfig)
if err != nil {
logs.Error(err)
return
}
2021-01-14 16:35:25 +08:00
// 协议簇
family := ""
2021-01-25 16:40:49 +08:00
if serverConfig.IsHTTPFamily() {
2021-01-14 16:35:25 +08:00
family = "http"
2021-01-25 16:40:49 +08:00
} else if serverConfig.IsTCPFamily() {
2021-01-14 16:35:25 +08:00
family = "tcp"
2021-01-25 16:40:49 +08:00
} else if serverConfig.IsUnixFamily() {
2021-01-14 16:35:25 +08:00
family = "unix"
2021-01-25 16:40:49 +08:00
} else if serverConfig.IsUDPFamily() {
2021-01-14 16:35:25 +08:00
family = "udp"
}
action.Data["serverFamily"] = family
2020-08-21 12:32:16 +08:00
// TABBAR
selectedTabbar, _ := action.Data["mainTab"]
tabbar := actionutils.NewTabbar()
2020-10-04 14:27:05 +08:00
tabbar.Add("服务列表", "", "/servers", "", false)
2021-07-07 19:55:32 +08:00
if teaconst.IsPlus {
tabbar.Add("看板", "", "/servers/server/boards?serverId="+serverIdString, "dashboard", selectedTabbar == "board")
2021-06-07 15:43:43 +08:00
}
2021-01-25 16:40:49 +08:00
if family == "http" {
tabbar.Add("统计", "", "/servers/server/stat?serverId="+serverIdString, "chart area", selectedTabbar == "stat")
}
2021-07-07 19:55:32 +08:00
if family == "http" {
tabbar.Add("日志", "", "/servers/server/log?serverId="+serverIdString, "history", selectedTabbar == "log")
}
2020-08-21 12:32:16 +08:00
tabbar.Add("设置", "", "/servers/server/settings?serverId="+serverIdString, "setting", selectedTabbar == "setting")
tabbar.Add("删除", "", "/servers/server/delete?serverId="+serverIdString, "trash", selectedTabbar == "delete")
actionutils.SetTabbar(action, tabbar)
// 左侧操作子菜单
switch types.String(mainTab) {
case "board":
2020-08-21 21:09:42 +08:00
action.Data["leftMenuItems"] = this.createBoardMenu(types.String(secondMenuItem), serverIdString, serverConfig)
2020-08-21 12:32:16 +08:00
case "log":
2020-08-21 21:09:42 +08:00
action.Data["leftMenuItems"] = this.createLogMenu(types.String(secondMenuItem), serverIdString, serverConfig)
2020-08-21 12:32:16 +08:00
case "stat":
2020-08-21 21:09:42 +08:00
action.Data["leftMenuItems"] = this.createStatMenu(types.String(secondMenuItem), serverIdString, serverConfig)
2020-08-21 12:32:16 +08:00
case "setting":
var menuItems = this.createSettingsMenu(types.String(secondMenuItem), serverIdString, serverConfig)
action.Data["leftMenuItems"] = menuItems
// 当前菜单
action.Data["leftMenuActiveItem"] = nil
for _, item := range menuItems {
if item.GetBool("isActive") {
action.Data["leftMenuActiveItem"] = item
break
}
}
2020-08-21 12:32:16 +08:00
case "delete":
2020-08-21 21:09:42 +08:00
action.Data["leftMenuItems"] = this.createDeleteMenu(types.String(secondMenuItem), serverIdString, serverConfig)
2020-08-21 12:32:16 +08:00
}
}
2020-08-21 21:09:42 +08:00
// 看板菜单
func (this *ServerHelper) createBoardMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig) []maps.Map {
menuItems := []maps.Map{}
menuItems = append(menuItems, maps.Map{
"name": "看板",
"url": "/servers/server/board?serverId=" + serverIdString,
"isActive": secondMenuItem == "index",
})
return menuItems
}
// 日志菜单
func (this *ServerHelper) createLogMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig) []maps.Map {
menuItems := []maps.Map{}
menuItems = append(menuItems, maps.Map{
"name": "实时",
"url": "/servers/server/log?serverId=" + serverIdString,
"isActive": secondMenuItem == "index",
})
menuItems = append(menuItems, maps.Map{
"name": "今天",
"url": "/servers/server/log/today?serverId=" + serverIdString,
"isActive": secondMenuItem == "today",
})
menuItems = append(menuItems, maps.Map{
"name": "历史",
"url": "/servers/server/log/history?serverId=" + serverIdString,
"isActive": secondMenuItem == "history",
})
2020-08-21 21:09:42 +08:00
return menuItems
}
// 统计菜单
func (this *ServerHelper) createStatMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig) []maps.Map {
menuItems := []maps.Map{}
menuItems = append(menuItems, maps.Map{
2021-06-08 11:22:44 +08:00
"name": "流量统计",
2020-08-21 21:09:42 +08:00
"url": "/servers/server/stat?serverId=" + serverIdString,
"isActive": secondMenuItem == "index",
})
2021-06-08 11:22:44 +08:00
menuItems = append(menuItems, maps.Map{
"name": "地域分布",
"url": "/servers/server/stat/regions?serverId=" + serverIdString,
"isActive": secondMenuItem == "region",
})
2021-01-25 16:40:49 +08:00
menuItems = append(menuItems, maps.Map{
"name": "运营商",
"url": "/servers/server/stat/providers?serverId=" + serverIdString,
"isActive": secondMenuItem == "provider",
})
menuItems = append(menuItems, maps.Map{
"name": "终端",
"url": "/servers/server/stat/clients?serverId=" + serverIdString,
"isActive": secondMenuItem == "client",
})
2021-01-26 18:41:23 +08:00
menuItems = append(menuItems, maps.Map{
"name": "WAF",
"url": "/servers/server/stat/waf?serverId=" + serverIdString,
"isActive": secondMenuItem == "waf",
})
2020-08-21 21:09:42 +08:00
return menuItems
}
// 设置菜单
2020-08-21 12:32:16 +08:00
func (this *ServerHelper) createSettingsMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig) (items []maps.Map) {
menuItems := []maps.Map{
{
"name": "基本信息",
"url": "/servers/server/settings?serverId=" + serverIdString,
"isActive": secondMenuItem == "basic",
2020-09-27 18:40:55 +08:00
"isOff": !serverConfig.IsOn,
2020-08-21 12:32:16 +08:00
},
{
"name": "DNS",
"url": "/servers/server/settings/dns?serverId=" + serverIdString,
"isActive": secondMenuItem == "dns",
},
2020-08-21 12:32:16 +08:00
}
// HTTP
2021-01-25 16:40:49 +08:00
if serverConfig.IsHTTPFamily() {
2020-09-16 09:09:10 +08:00
menuItems = append(menuItems, maps.Map{
"name": "域名",
"url": "/servers/server/settings/serverNames?serverId=" + serverIdString,
"isActive": secondMenuItem == "serverName",
2020-09-27 18:40:55 +08:00
"isOn": len(serverConfig.ServerNames) > 0,
2020-09-16 09:09:10 +08:00
})
2020-08-21 12:32:16 +08:00
menuItems = append(menuItems, maps.Map{
"name": "HTTP",
2020-08-21 21:09:42 +08:00
"url": "/servers/server/settings/http?serverId=" + serverIdString,
2020-08-21 12:32:16 +08:00
"isActive": secondMenuItem == "http",
2020-09-27 18:40:55 +08:00
"isOn": (serverConfig.HTTP != nil && serverConfig.HTTP.IsOn && len(serverConfig.HTTP.Listen) > 0) || (serverConfig.Web != nil && serverConfig.Web.RedirectToHttps != nil && serverConfig.Web.RedirectToHttps.IsOn),
2020-09-28 16:25:26 +08:00
"isOff": serverConfig.HTTP != nil && !serverConfig.HTTP.IsOn,
2020-08-21 12:32:16 +08:00
})
menuItems = append(menuItems, maps.Map{
"name": "HTTPS",
2020-08-21 21:09:42 +08:00
"url": "/servers/server/settings/https?serverId=" + serverIdString,
2020-08-21 12:32:16 +08:00
"isActive": secondMenuItem == "https",
2020-09-27 18:40:55 +08:00
"isOn": serverConfig.HTTPS != nil && serverConfig.HTTPS.IsOn && len(serverConfig.HTTPS.Listen) > 0,
2020-09-28 16:25:26 +08:00
"isOff": serverConfig.HTTPS != nil && !serverConfig.HTTPS.IsOn,
2020-08-21 12:32:16 +08:00
})
menuItems = append(menuItems, maps.Map{
"name": "Web设置",
2020-08-21 21:09:42 +08:00
"url": "/servers/server/settings/web?serverId=" + serverIdString,
2020-08-21 12:32:16 +08:00
"isActive": secondMenuItem == "web",
2020-09-27 18:40:55 +08:00
"isOn": serverConfig.Web != nil && serverConfig.Web.Root != nil && serverConfig.Web.Root.IsOn,
2020-08-21 12:32:16 +08:00
})
menuItems = append(menuItems, maps.Map{
2020-08-21 21:09:42 +08:00
"name": "反向代理",
"url": "/servers/server/settings/reverseProxy?serverId=" + serverIdString,
"isActive": secondMenuItem == "reverseProxy",
2020-09-27 18:40:55 +08:00
"isOn": serverConfig.ReverseProxyRef != nil && serverConfig.ReverseProxyRef.IsOn,
2020-08-21 12:32:16 +08:00
})
2022-03-29 21:25:30 +08:00
if teaconst.IsPlus {
menuItems = append(menuItems, maps.Map{
"name": "-",
"url": "",
"isActive": false,
})
menuItems = append(menuItems, maps.Map{
"name": "5秒盾",
2022-03-29 21:25:30 +08:00
"url": "/servers/server/settings/uam?serverId=" + serverIdString,
"isActive": secondMenuItem == "uam",
"isOn": serverConfig.UAM != nil && serverConfig.UAM.IsOn,
"isImportant": serverConfig.UAM != nil && serverConfig.UAM.IsOn,
})
}
2020-09-28 16:25:26 +08:00
menuItems = append(menuItems, maps.Map{
"name": "-",
"url": "",
"isActive": false,
})
2021-01-10 17:34:30 +08:00
menuItems = append(menuItems, maps.Map{
"name": "URL跳转",
"url": "/servers/server/settings/redirects?serverId=" + serverIdString,
"isActive": secondMenuItem == "redirects",
"isOn": serverConfig.Web != nil && len(serverConfig.Web.HostRedirects) > 0,
})
2020-08-21 12:32:16 +08:00
menuItems = append(menuItems, maps.Map{
2021-07-13 14:28:06 +08:00
"name": "路由规则",
2020-08-21 21:09:42 +08:00
"url": "/servers/server/settings/locations?serverId=" + serverIdString,
"isActive": secondMenuItem == "locations",
2020-09-27 18:40:55 +08:00
"isOn": serverConfig.Web != nil && len(serverConfig.Web.Locations) > 0,
2020-08-21 12:32:16 +08:00
})
2020-09-26 19:54:09 +08:00
menuItems = append(menuItems, maps.Map{
"name": "重写规则",
"url": "/servers/server/settings/rewrite?serverId=" + serverIdString,
"isActive": secondMenuItem == "rewrite",
2020-09-28 16:25:26 +08:00
"isOn": serverConfig.Web != nil && len(serverConfig.Web.RewriteRefs) > 0,
2020-08-21 12:32:16 +08:00
})
menuItems = append(menuItems, maps.Map{
2020-08-21 21:09:42 +08:00
"name": "WAF",
"url": "/servers/server/settings/waf?serverId=" + serverIdString,
"isActive": secondMenuItem == "waf",
2020-09-27 18:40:55 +08:00
"isOn": serverConfig.Web != nil && serverConfig.Web.FirewallRef != nil && serverConfig.Web.FirewallRef.IsOn,
2020-08-21 12:32:16 +08:00
})
menuItems = append(menuItems, maps.Map{
2020-08-21 21:09:42 +08:00
"name": "缓存",
"url": "/servers/server/settings/cache?serverId=" + serverIdString,
"isActive": secondMenuItem == "cache",
2021-11-09 15:36:18 +08:00
"isOn": serverConfig.Web != nil && serverConfig.Web.Cache != nil && serverConfig.Web.Cache.IsOn,
2020-08-21 12:32:16 +08:00
})
menuItems = append(menuItems, maps.Map{
2020-09-28 16:25:26 +08:00
"name": "访问控制",
"url": "/servers/server/settings/access?serverId=" + serverIdString,
"isActive": secondMenuItem == "access",
2021-06-19 22:20:15 +08:00
"isOn": serverConfig.Web != nil && serverConfig.Web.Auth != nil && serverConfig.Web.Auth.IsOn,
2020-08-21 12:32:16 +08:00
})
menuItems = append(menuItems, maps.Map{
2020-09-16 20:29:13 +08:00
"name": "字符编码",
2020-08-21 21:09:42 +08:00
"url": "/servers/server/settings/charset?serverId=" + serverIdString,
"isActive": secondMenuItem == "charset",
2020-09-27 18:40:55 +08:00
"isOn": serverConfig.Web != nil && serverConfig.Web.Charset != nil && serverConfig.Web.Charset.IsOn,
2020-08-21 12:32:16 +08:00
})
menuItems = append(menuItems, maps.Map{
2020-08-21 21:09:42 +08:00
"name": "访问日志",
"url": "/servers/server/settings/accessLog?serverId=" + serverIdString,
"isActive": secondMenuItem == "accessLog",
2020-09-27 18:40:55 +08:00
"isOn": serverConfig.Web != nil && serverConfig.Web.AccessLogRef != nil && serverConfig.Web.AccessLogRef.IsOn,
2020-08-21 12:32:16 +08:00
})
menuItems = append(menuItems, maps.Map{
2020-08-21 21:09:42 +08:00
"name": "统计",
"url": "/servers/server/settings/stat?serverId=" + serverIdString,
"isActive": secondMenuItem == "stat",
2020-09-27 18:40:55 +08:00
"isOn": serverConfig.Web != nil && serverConfig.Web.StatRef != nil && serverConfig.Web.StatRef.IsOn,
2020-08-21 12:32:16 +08:00
})
menuItems = append(menuItems, maps.Map{
2021-09-29 20:12:27 +08:00
"name": "内容压缩",
"url": "/servers/server/settings/compression?serverId=" + serverIdString,
"isActive": secondMenuItem == "compression",
"isOn": serverConfig.Web != nil && serverConfig.Web.Compression != nil && serverConfig.Web.Compression.IsOn,
2020-08-21 12:32:16 +08:00
})
menuItems = append(menuItems, maps.Map{
2022-03-31 14:53:07 +08:00
"name": "自定义页面",
2020-08-21 21:09:42 +08:00
"url": "/servers/server/settings/pages?serverId=" + serverIdString,
"isActive": secondMenuItem == "pages",
2020-09-27 18:40:55 +08:00
"isOn": serverConfig.Web != nil && (len(serverConfig.Web.Pages) > 0 || (serverConfig.Web.Shutdown != nil && serverConfig.Web.Shutdown.IsOn)),
2020-08-21 21:09:42 +08:00
})
menuItems = append(menuItems, maps.Map{
"name": "HTTP Header",
"url": "/servers/server/settings/headers?serverId=" + serverIdString,
"isActive": secondMenuItem == "header",
2021-06-15 10:32:40 +08:00
"isOn": this.hasHTTPHeaders(serverConfig.Web),
2020-08-21 12:32:16 +08:00
})
2020-09-26 19:54:09 +08:00
menuItems = append(menuItems, maps.Map{
"name": "Websocket",
"url": "/servers/server/settings/websocket?serverId=" + serverIdString,
"isActive": secondMenuItem == "websocket",
2020-09-27 18:40:55 +08:00
"isOn": serverConfig.Web != nil && serverConfig.Web.WebsocketRef != nil && serverConfig.Web.WebsocketRef.IsOn,
2020-09-26 19:54:09 +08:00
})
menuItems = append(menuItems, maps.Map{
2021-10-01 16:24:42 +08:00
"name": "WebP",
"url": "/servers/server/settings/webp?serverId=" + serverIdString,
"isActive": secondMenuItem == "webp",
"isOn": serverConfig.Web != nil && serverConfig.Web.WebP != nil && serverConfig.Web.WebP.IsOn,
})
2021-10-01 16:24:42 +08:00
menuItems = append(menuItems, maps.Map{
"name": "Fastcgi",
"url": "/servers/server/settings/fastcgi?serverId=" + serverIdString,
"isActive": secondMenuItem == "fastcgi",
"isOn": serverConfig.Web != nil && serverConfig.Web.FastcgiRef != nil && serverConfig.Web.FastcgiRef.IsOn,
})
menuItems = append(menuItems, maps.Map{
"name": "-",
"url": "",
"isActive": false,
})
menuItems = append(menuItems, maps.Map{
"name": "访客IP地址",
"url": "/servers/server/settings/remoteAddr?serverId=" + serverIdString,
"isActive": secondMenuItem == "remoteAddr",
"isOn": serverConfig.Web != nil && serverConfig.Web.RemoteAddr != nil && serverConfig.Web.RemoteAddr.IsOn,
})
menuItems = append(menuItems, maps.Map{
"name": "请求限制",
"url": "/servers/server/settings/requestLimit?serverId=" + serverIdString,
"isActive": secondMenuItem == "requestLimit",
"isOn": serverConfig.Web != nil && serverConfig.Web.RequestLimit != nil && serverConfig.Web.RequestLimit.IsOn,
})
if teaconst.IsPlus {
menuItems = append(menuItems, maps.Map{
2021-11-09 17:36:38 +08:00
"name": "流量限制",
"url": "/servers/server/settings/traffic?serverId=" + serverIdString,
"isActive": secondMenuItem == "traffic",
"isOn": serverConfig.TrafficLimit != nil && serverConfig.TrafficLimit.IsOn,
})
2022-01-05 10:45:28 +08:00
if serverConfig.Web != nil && serverConfig.Web.RequestScripts != nil {
_ = serverConfig.Web.RequestScripts.Init()
}
2021-12-31 15:20:59 +08:00
menuItems = append(menuItems, maps.Map{
"name": "边缘脚本",
"url": "/servers/server/settings/requestScripts?serverId=" + serverIdString,
"isActive": secondMenuItem == "requestScripts",
"isOn": serverConfig.Web != nil && serverConfig.Web.RequestScripts != nil && !serverConfig.Web.RequestScripts.IsEmpty(),
})
}
menuItems = append(menuItems, maps.Map{
"name": "-",
"url": "",
"isActive": false,
})
menuItems = append(menuItems, maps.Map{
"name": "其他设置",
"url": "/servers/server/settings/common?serverId=" + serverIdString,
"isActive": secondMenuItem == "common",
"isOn": serverConfig.Web != nil && serverConfig.Web.MergeSlashes,
})
2021-01-25 16:40:49 +08:00
} else if serverConfig.IsTCPFamily() {
2020-08-21 12:32:16 +08:00
menuItems = append(menuItems, maps.Map{
"name": "TCP",
2020-08-21 21:09:42 +08:00
"url": "/servers/server/settings/tcp?serverId=" + serverIdString,
2020-08-21 12:32:16 +08:00
"isActive": secondMenuItem == "tcp",
2020-09-27 18:40:55 +08:00
"isOn": serverConfig.TCP != nil && serverConfig.TCP.IsOn && len(serverConfig.TCP.Listen) > 0,
2020-08-21 12:32:16 +08:00
})
2020-09-13 20:37:07 +08:00
menuItems = append(menuItems, maps.Map{
2020-09-16 09:09:10 +08:00
"name": "TLS",
"url": "/servers/server/settings/tls?serverId=" + serverIdString,
"isActive": secondMenuItem == "tls",
2020-09-27 18:40:55 +08:00
"isOn": serverConfig.TLS != nil && serverConfig.TLS.IsOn && len(serverConfig.TLS.Listen) > 0,
2020-09-16 09:09:10 +08:00
})
menuItems = append(menuItems, maps.Map{
2020-09-13 20:37:07 +08:00
"name": "反向代理",
"url": "/servers/server/settings/reverseProxy?serverId=" + serverIdString,
"isActive": secondMenuItem == "reverseProxy",
2020-09-27 18:40:55 +08:00
"isOn": serverConfig.ReverseProxyRef != nil && serverConfig.ReverseProxyRef.IsOn,
2020-09-13 20:37:07 +08:00
})
2021-01-25 16:40:49 +08:00
} else if serverConfig.IsUnixFamily() {
2020-08-21 12:32:16 +08:00
menuItems = append(menuItems, maps.Map{
"name": "Unix",
2020-08-21 21:09:42 +08:00
"url": "/servers/server/settings/unix?serverId=" + serverIdString,
2020-08-21 12:32:16 +08:00
"isActive": secondMenuItem == "unix",
2020-09-27 18:40:55 +08:00
"isOn": serverConfig.Unix != nil && serverConfig.Unix.IsOn && len(serverConfig.Unix.Listen) > 0,
2020-08-21 12:32:16 +08:00
})
2021-01-25 16:40:49 +08:00
} else if serverConfig.IsUDPFamily() {
2020-08-21 12:32:16 +08:00
menuItems = append(menuItems, maps.Map{
"name": "UDP",
2020-08-21 21:09:42 +08:00
"url": "/servers/server/settings/udp?serverId=" + serverIdString,
2020-08-21 12:32:16 +08:00
"isActive": secondMenuItem == "udp",
2020-09-27 18:40:55 +08:00
"isOn": serverConfig.UDP != nil && serverConfig.UDP.IsOn && len(serverConfig.UDP.Listen) > 0,
2020-08-21 12:32:16 +08:00
})
2021-06-07 15:43:43 +08:00
menuItems = append(menuItems, maps.Map{
"name": "反向代理",
"url": "/servers/server/settings/reverseProxy?serverId=" + serverIdString,
"isActive": secondMenuItem == "reverseProxy",
"isOn": serverConfig.ReverseProxyRef != nil && serverConfig.ReverseProxyRef.IsOn,
})
2020-08-21 12:32:16 +08:00
}
return menuItems
}
2020-08-21 21:09:42 +08:00
// 删除菜单
func (this *ServerHelper) createDeleteMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig) []maps.Map {
menuItems := []maps.Map{}
menuItems = append(menuItems, maps.Map{
"name": "删除",
"url": "/servers/server/delete?serverId=" + serverIdString,
"isActive": secondMenuItem == "index",
})
return menuItems
}
2021-06-15 10:32:40 +08:00
// 检查是否已设置Header
func (this *ServerHelper) hasHTTPHeaders(web *serverconfigs.HTTPWebConfig) bool {
if web == nil {
return false
}
if web.RequestHeaderPolicyRef != nil {
if web.RequestHeaderPolicyRef.IsOn && web.RequestHeaderPolicy != nil && !web.RequestHeaderPolicy.IsEmpty() {
return true
}
}
if web.ResponseHeaderPolicyRef != nil {
if web.ResponseHeaderPolicyRef.IsOn && web.ResponseHeaderPolicy != nil && !web.ResponseHeaderPolicy.IsEmpty() {
return true
}
}
return false
}