部分中文转换为多语言代号

This commit is contained in:
GoEdgeLab
2023-06-28 16:18:52 +08:00
parent 97fe91c7b0
commit 0aae6a5beb
25 changed files with 195 additions and 125 deletions

View File

@@ -5,10 +5,12 @@ package nodes
import ( import (
"encoding/json" "encoding/json"
"github.com/TeaOSLab/EdgeAdmin/internal/rpc" "github.com/TeaOSLab/EdgeAdmin/internal/rpc"
"github.com/TeaOSLab/EdgeAdmin/internal/ttlcache"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/actions" "github.com/iwind/TeaGo/actions"
"github.com/iwind/TeaGo/logs" "github.com/iwind/TeaGo/logs"
"strings" "strings"
"time"
) )
// SessionManager SESSION管理 // SessionManager SESSION管理
@@ -32,6 +34,15 @@ func (this *SessionManager) Read(sid string) map[string]string {
var result = map[string]string{} var result = map[string]string{}
var cacheKey = "SESSION@" + sid
var item = ttlcache.DefaultCache.Read(cacheKey)
if item != nil && item.Value != nil {
itemMap, ok := item.Value.(map[string]string)
if ok {
return itemMap
}
}
rpcClient, err := rpc.SharedRPC() rpcClient, err := rpc.SharedRPC()
if err != nil { if err != nil {
return map[string]string{} return map[string]string{}
@@ -54,6 +65,9 @@ func (this *SessionManager) Read(sid string) map[string]string {
logs.Println("SESSION", "decode '"+sid+"' values failed: "+err.Error()) logs.Println("SESSION", "decode '"+sid+"' values failed: "+err.Error())
} }
// Write to cache
ttlcache.DefaultCache.Write(cacheKey, result, time.Now().Unix()+300 /** must not be too long **/)
return result return result
} }

View File

@@ -150,7 +150,7 @@ func (this *ParentAction) ViewData() maps.Map {
return this.Data return this.Data
} }
func (this *ParentAction) Lang() string { func (this *ParentAction) LangCode() string {
var lang = configloaders.FindAdminLang(this.AdminId()) var lang = configloaders.FindAdminLang(this.AdminId())
if len(lang) > 0 { if len(lang) > 0 {
// TODO check language still exists // TODO check language still exists
@@ -158,3 +158,15 @@ func (this *ParentAction) Lang() string {
} }
return langs.ParseLangFromAction(this) return langs.ParseLangFromAction(this)
} }
func (this *ParentAction) Lang(messageCode langs.MessageCode, args ...any) string {
return langs.Message(this.LangCode(), messageCode, args...)
}
func (this *ParentAction) FailLang(messageCode langs.MessageCode, args ...any) {
this.Fail(langs.Message(this.LangCode(), messageCode, args...))
}
func (this *ParentAction) FailFieldLang(field string, messageCode langs.MessageCode, args ...any) {
this.FailField(field, langs.Message(this.LangCode(), messageCode, args...))
}

View File

@@ -51,7 +51,7 @@ func (this *AdminAction) RunGet(params struct {
// 权限 // 权限
moduleMaps := []maps.Map{} moduleMaps := []maps.Map{}
for _, m := range configloaders.AllModuleMaps(this.Lang()) { for _, m := range configloaders.AllModuleMaps(this.LangCode()) {
code := m.GetString("code") code := m.GetString("code")
isChecked := false isChecked := false
for _, module := range admin.Modules { for _, module := range admin.Modules {

View File

@@ -20,7 +20,7 @@ func (this *CreatePopupAction) Init() {
} }
func (this *CreatePopupAction) RunGet(params struct{}) { func (this *CreatePopupAction) RunGet(params struct{}) {
this.Data["modules"] = configloaders.AllModuleMaps(this.Lang()) this.Data["modules"] = configloaders.AllModuleMaps(this.LangCode())
this.Show() this.Show()
} }

View File

@@ -59,7 +59,7 @@ func (this *UpdateAction) RunGet(params struct {
} }
// 权限 // 权限
var moduleMaps = configloaders.AllModuleMaps(this.Lang()) var moduleMaps = configloaders.AllModuleMaps(this.LangCode())
for _, m := range moduleMaps { for _, m := range moduleMaps {
code := m.GetString("code") code := m.GetString("code")
isChecked := false isChecked := false

View File

@@ -3,6 +3,7 @@ package cluster
import ( import (
"github.com/TeaOSLab/EdgeAdmin/internal/oplogs" "github.com/TeaOSLab/EdgeAdmin/internal/oplogs"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/actions" "github.com/iwind/TeaGo/actions"
@@ -27,12 +28,12 @@ func (this *CreateBatchAction) RunGet(params struct {
}) { }) {
leftMenuItems := []maps.Map{ leftMenuItems := []maps.Map{
{ {
"name": "单个创建", "name": this.Lang(codes.AdminNodeMenuCreateSingleNode),
"url": "/clusters/cluster/createNode?clusterId=" + strconv.FormatInt(params.ClusterId, 10), "url": "/clusters/cluster/createNode?clusterId=" + strconv.FormatInt(params.ClusterId, 10),
"isActive": false, "isActive": false,
}, },
{ {
"name": "批量创建", "name": this.Lang(codes.AdminNodeMenuCreateMultipleNodes),
"url": "/clusters/cluster/createBatch?clusterId=" + strconv.FormatInt(params.ClusterId, 10), "url": "/clusters/cluster/createBatch?clusterId=" + strconv.FormatInt(params.ClusterId, 10),
"isActive": true, "isActive": true,
}, },

View File

@@ -7,6 +7,7 @@ import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/clusterutils" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/clusterutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/grants/grantutils" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/clusters/grants/grantutils"
"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/actions" "github.com/iwind/TeaGo/actions"
@@ -37,12 +38,12 @@ func (this *CreateNodeAction) RunGet(params struct {
var leftMenuItems = []maps.Map{ var leftMenuItems = []maps.Map{
{ {
"name": "单个创建", "name": this.Lang(codes.AdminNodeMenuCreateSingleNode),
"url": "/clusters/cluster/createNode?clusterId=" + strconv.FormatInt(params.ClusterId, 10), "url": "/clusters/cluster/createNode?clusterId=" + strconv.FormatInt(params.ClusterId, 10),
"isActive": true, "isActive": true,
}, },
{ {
"name": "批量创建", "name": this.Lang(codes.AdminNodeMenuCreateMultipleNodes),
"url": "/clusters/cluster/createBatch?clusterId=" + strconv.FormatInt(params.ClusterId, 10), "url": "/clusters/cluster/createBatch?clusterId=" + strconv.FormatInt(params.ClusterId, 10),
"isActive": false, "isActive": false,
}, },

View File

@@ -19,7 +19,7 @@ func (this *InstallManualAction) Init() {
func (this *InstallManualAction) RunGet(params struct { func (this *InstallManualAction) RunGet(params struct {
ClusterId int64 ClusterId int64
}) { }) {
this.Data["leftMenuItems"] = LeftMenuItemsForInstall(this.AdminContext(), params.ClusterId, "manual") this.Data["leftMenuItems"] = LeftMenuItemsForInstall(this.AdminContext(), params.ClusterId, "manual", this.LangCode())
nodesResp, err := this.RPC().NodeRPC().FindAllNotInstalledNodesWithNodeClusterId(this.AdminContext(), &pb.FindAllNotInstalledNodesWithNodeClusterIdRequest{NodeClusterId: params.ClusterId}) nodesResp, err := this.RPC().NodeRPC().FindAllNotInstalledNodesWithNodeClusterId(this.AdminContext(), &pb.FindAllNotInstalledNodesWithNodeClusterIdRequest{NodeClusterId: params.ClusterId})
if err != nil { if err != nil {

View File

@@ -19,7 +19,7 @@ func (this *InstallNodesAction) Init() {
func (this *InstallNodesAction) RunGet(params struct { func (this *InstallNodesAction) RunGet(params struct {
ClusterId int64 ClusterId int64
}) { }) {
this.Data["leftMenuItems"] = LeftMenuItemsForInstall(this.AdminContext(), params.ClusterId, "register") this.Data["leftMenuItems"] = LeftMenuItemsForInstall(this.AdminContext(), params.ClusterId, "register", this.LangCode())
clusterResp, err := this.RPC().NodeClusterRPC().FindEnabledNodeCluster(this.AdminContext(), &pb.FindEnabledNodeClusterRequest{NodeClusterId: params.ClusterId}) clusterResp, err := this.RPC().NodeClusterRPC().FindEnabledNodeCluster(this.AdminContext(), &pb.FindEnabledNodeClusterRequest{NodeClusterId: params.ClusterId})
if err != nil { if err != nil {

View File

@@ -21,7 +21,7 @@ func (this *InstallRemoteAction) Init() {
func (this *InstallRemoteAction) RunGet(params struct { func (this *InstallRemoteAction) RunGet(params struct {
ClusterId int64 ClusterId int64
}) { }) {
this.Data["leftMenuItems"] = LeftMenuItemsForInstall(this.AdminContext(), params.ClusterId, "install") this.Data["leftMenuItems"] = LeftMenuItemsForInstall(this.AdminContext(), params.ClusterId, "install", this.LangCode())
nodesResp, err := this.RPC().NodeRPC().FindAllNotInstalledNodesWithNodeClusterId(this.AdminContext(), &pb.FindAllNotInstalledNodesWithNodeClusterIdRequest{NodeClusterId: params.ClusterId}) nodesResp, err := this.RPC().NodeRPC().FindAllNotInstalledNodesWithNodeClusterId(this.AdminContext(), &pb.FindAllNotInstalledNodesWithNodeClusterIdRequest{NodeClusterId: params.ClusterId})
if err != nil { if err != nil {

View File

@@ -5,6 +5,7 @@ package nodeutils
import ( import (
"errors" "errors"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/maps" "github.com/iwind/TeaGo/maps"
"github.com/iwind/TeaGo/types" "github.com/iwind/TeaGo/types"
@@ -57,24 +58,24 @@ func InitNodeInfo(parentAction *actionutils.ParentAction, nodeId int64) (*pb.Nod
var menuItems = []maps.Map{ var menuItems = []maps.Map{
{ {
"name": "基础设置", "name": parentAction.Lang(codes.AdminNodeMenuSettingBasic),
"url": prefix + "/update?" + query, "url": prefix + "/update?" + query,
"isActive": menuItem == "basic", "isActive": menuItem == "basic",
}, },
{ {
"name": "DNS设置", "name": parentAction.Lang(codes.AdminNodeMenuSettingDNS),
"url": prefix + "/settings/dns?" + query, "url": prefix + "/settings/dns?" + query,
"isActive": menuItem == "dns", "isActive": menuItem == "dns",
"isOn": info.HasDNSInfo, "isOn": info.HasDNSInfo,
}, },
{ {
"name": "缓存设置", "name": parentAction.Lang(codes.AdminNodeMenuSettingCache),
"url": prefix + "/settings/cache?" + query, "url": prefix + "/settings/cache?" + query,
"isActive": menuItem == "cache", "isActive": menuItem == "cache",
"isOn": info.HasCacheInfo, "isOn": info.HasCacheInfo,
}, },
{ {
"name": "DDoS防护", "name": parentAction.Lang(codes.AdminNodeMenuSettingDDoSProtection),
"url": prefix + "/settings/ddos-protection?" + query, "url": prefix + "/settings/ddos-protection?" + query,
"isActive": menuItem == "ddosProtection", "isActive": menuItem == "ddosProtection",
"isOn": info.HasDDoSProtection, "isOn": info.HasDDoSProtection,
@@ -84,16 +85,16 @@ func InitNodeInfo(parentAction *actionutils.ParentAction, nodeId int64) (*pb.Nod
"url": "", "url": "",
}, },
} }
menuItems = filterMenuItems(menuItems, menuItem, prefix, query, info) menuItems = filterMenuItems(menuItems, menuItem, prefix, query, info, parentAction.LangCode())
menuItems = append(menuItems, []maps.Map{ menuItems = append(menuItems, []maps.Map{
{ {
"name": "SSH设置", "name": parentAction.Lang(codes.AdminNodeMenuSettingSSH),
"url": prefix + "/settings/ssh?" + query, "url": prefix + "/settings/ssh?" + query,
"isActive": menuItem == "ssh", "isActive": menuItem == "ssh",
"isOn": info.HasSSH, "isOn": info.HasSSH,
}, },
{ {
"name": "系统设置", "name": parentAction.Lang(codes.AdminNodeMenuSettingSystem),
"url": prefix + "/settings/system?" + query, "url": prefix + "/settings/system?" + query,
"isActive": menuItem == "system", "isActive": menuItem == "system",
"isOn": info.HasSystemSettings, "isOn": info.HasSystemSettings,

View File

@@ -8,6 +8,6 @@ import (
"github.com/iwind/TeaGo/maps" "github.com/iwind/TeaGo/maps"
) )
func filterMenuItems(menuItems []maps.Map, menuItem string, prefix string, query string, info *pb.FindEnabledNodeConfigInfoResponse) []maps.Map { func filterMenuItems(menuItems []maps.Map, menuItem string, prefix string, query string, info *pb.FindEnabledNodeConfigInfoResponse, langCode string) []maps.Map {
return menuItems return menuItems
} }

View File

@@ -6,6 +6,7 @@ import (
teaconst "github.com/TeaOSLab/EdgeAdmin/internal/const" teaconst "github.com/TeaOSLab/EdgeAdmin/internal/const"
"github.com/TeaOSLab/EdgeAdmin/internal/utils/numberutils" "github.com/TeaOSLab/EdgeAdmin/internal/utils/numberutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/logs" "github.com/iwind/TeaGo/logs"
@@ -290,7 +291,7 @@ func (this *NodesAction) RunGet(params struct {
groupMaps = append([]maps.Map{ groupMaps = append([]maps.Map{
{ {
"id": -1, "id": -1,
"name": "[未分组](" + types.String(countUngroupNodes) + ")", "name": "[" + this.Lang(codes.AdminNodeUngroupedLabel)+ "](" + types.String(countUngroupNodes) + ")",
"countNodes": countUngroupNodes, "countNodes": countUngroupNodes,
}, },
}, groupMaps...) }, groupMaps...)

View File

@@ -21,7 +21,7 @@ func (this *UpgradeRemoteAction) Init() {
func (this *UpgradeRemoteAction) RunGet(params struct { func (this *UpgradeRemoteAction) RunGet(params struct {
ClusterId int64 ClusterId int64
}) { }) {
this.Data["leftMenuItems"] = LeftMenuItemsForInstall(this.AdminContext(), params.ClusterId, "upgrade") this.Data["leftMenuItems"] = LeftMenuItemsForInstall(this.AdminContext(), params.ClusterId, "upgrade", this.LangCode())
nodes := []maps.Map{} nodes := []maps.Map{}
resp, err := this.RPC().NodeRPC().FindAllUpgradeNodesWithNodeClusterId(this.AdminContext(), &pb.FindAllUpgradeNodesWithNodeClusterIdRequest{NodeClusterId: params.ClusterId}) resp, err := this.RPC().NodeRPC().FindAllUpgradeNodesWithNodeClusterId(this.AdminContext(), &pb.FindAllUpgradeNodesWithNodeClusterIdRequest{NodeClusterId: params.ClusterId})

View File

@@ -4,13 +4,14 @@ import (
"context" "context"
"github.com/TeaOSLab/EdgeAdmin/internal/rpc" "github.com/TeaOSLab/EdgeAdmin/internal/rpc"
"github.com/TeaOSLab/EdgeAdmin/internal/utils/numberutils" "github.com/TeaOSLab/EdgeAdmin/internal/utils/numberutils"
"github.com/TeaOSLab/EdgeCommon/pkg/langs"
"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/maps" "github.com/iwind/TeaGo/maps"
"strconv"
) )
// LeftMenuItemsForInstall 安装升级相关的左侧菜单 // LeftMenuItemsForInstall 安装升级相关的左侧菜单
func LeftMenuItemsForInstall(ctx context.Context, clusterId int64, selectedItem string) []maps.Map { func LeftMenuItemsForInstall(ctx context.Context, clusterId int64, selectedItem string, langCode string) []maps.Map {
rpcClient, _ := rpc.SharedRPC() rpcClient, _ := rpc.SharedRPC()
countNotInstalled := int64(0) countNotInstalled := int64(0)
countUpgrade := int64(0) countUpgrade := int64(0)
@@ -31,22 +32,22 @@ func LeftMenuItemsForInstall(ctx context.Context, clusterId int64, selectedItem
return []maps.Map{ return []maps.Map{
{ {
"name": "手动安装", "name": langs.Message(langCode, codes.AdminNodeMenuInstallManually),
"url": "/clusters/cluster/installManual?clusterId=" + numberutils.FormatInt64(clusterId), "url": "/clusters/cluster/installManual?clusterId=" + numberutils.FormatInt64(clusterId),
"isActive": selectedItem == "manual", "isActive": selectedItem == "manual",
}, },
{ {
"name": "自动注册", "name": langs.Message(langCode, codes.AdminNodeMenuInstallAutoRegister),
"url": "/clusters/cluster/installNodes?clusterId=" + numberutils.FormatInt64(clusterId), "url": "/clusters/cluster/installNodes?clusterId=" + numberutils.FormatInt64(clusterId),
"isActive": selectedItem == "register", "isActive": selectedItem == "register",
}, },
{ {
"name": "远程安装(" + strconv.FormatInt(countNotInstalled, 10) + ")", "name": langs.Message(langCode, codes.AdminNodeMenuInstallRemote, countNotInstalled),
"url": "/clusters/cluster/installRemote?clusterId=" + numberutils.FormatInt64(clusterId), "url": "/clusters/cluster/installRemote?clusterId=" + numberutils.FormatInt64(clusterId),
"isActive": selectedItem == "install", "isActive": selectedItem == "install",
}, },
{ {
"name": "远程升级(" + strconv.FormatInt(countUpgrade, 10) + ")", "name": langs.Message(langCode, codes.AdminNodeMenuInstallRemoteUpgrade, countUpgrade),
"url": "/clusters/cluster/upgradeRemote?clusterId=" + numberutils.FormatInt64(clusterId), "url": "/clusters/cluster/upgradeRemote?clusterId=" + numberutils.FormatInt64(clusterId),
"isActive": selectedItem == "upgrade", "isActive": selectedItem == "upgrade",
}, },

View File

@@ -4,6 +4,8 @@ import (
teaconst "github.com/TeaOSLab/EdgeAdmin/internal/const" teaconst "github.com/TeaOSLab/EdgeAdmin/internal/const"
"github.com/TeaOSLab/EdgeAdmin/internal/utils/numberutils" "github.com/TeaOSLab/EdgeAdmin/internal/utils/numberutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/dao" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/dao"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/actions" "github.com/iwind/TeaGo/actions"
@@ -15,6 +17,7 @@ import (
// ClusterHelper 单个集群的帮助 // ClusterHelper 单个集群的帮助
type ClusterHelper struct { type ClusterHelper struct {
helpers.LangHelper
} }
func NewClusterHelper() *ClusterHelper { func NewClusterHelper() *ClusterHelper {
@@ -79,21 +82,21 @@ func (this *ClusterHelper) BeforeAction(actionPtr actions.ActionWrapper) (goNext
} }
if teaconst.IsPlus { if teaconst.IsPlus {
{ {
var item = tabbar.Add("集群看板", "", "/clusters/cluster/boards?clusterId="+clusterIdString, "chart line area", selectedTabbar == "board") var item = tabbar.Add(this.Lang(actionPtr, codes.AdminClusterMenuTabClusterDashboard), "", "/clusters/cluster/boards?clusterId="+clusterIdString, "chart line area", selectedTabbar == "board")
item.IsDisabled = !isInCluster item.IsDisabled = !isInCluster
} }
} }
{ {
var item = tabbar.Add("节点列表", "", "/clusters/cluster/nodes?clusterId="+clusterIdString, "server", selectedTabbar == "node") var item = tabbar.Add(this.Lang(actionPtr, codes.AdminClusterMenuTabClusterNodes), "", "/clusters/cluster/nodes?clusterId="+clusterIdString, "server", selectedTabbar == "node")
item.IsDisabled = !isInCluster item.IsDisabled = !isInCluster
} }
{ {
var item = tabbar.Add("集群设置", "", "/clusters/cluster/settings?clusterId="+clusterIdString, "setting", selectedTabbar == "setting") var item = tabbar.Add(this.Lang(actionPtr, codes.AdminClusterMenuTabClusterSettings), "", "/clusters/cluster/settings?clusterId="+clusterIdString, "setting", selectedTabbar == "setting")
item.IsDisabled = !isInCluster item.IsDisabled = !isInCluster
} }
{ {
var item = tabbar.Add("删除集群", "", "/clusters/cluster/delete?clusterId="+clusterIdString, "trash", selectedTabbar == "delete") var item = tabbar.Add(this.Lang(actionPtr, codes.AdminClusterMenuTabClusterDelete), "", "/clusters/cluster/delete?clusterId="+clusterIdString, "trash", selectedTabbar == "delete")
item.IsDisabled = !isInCluster item.IsDisabled = !isInCluster
} }
actionutils.SetTabbar(action, tabbar) actionutils.SetTabbar(action, tabbar)
@@ -102,7 +105,7 @@ func (this *ClusterHelper) BeforeAction(actionPtr actions.ActionWrapper) (goNext
var secondMenuItem = action.Data.GetString("secondMenuItem") var secondMenuItem = action.Data.GetString("secondMenuItem")
switch selectedTabbar { switch selectedTabbar {
case "setting": case "setting":
var menuItems = this.createSettingMenu(cluster, clusterInfo, secondMenuItem) var menuItems = this.createSettingMenu(cluster, clusterInfo, secondMenuItem, actionPtr)
action.Data["leftMenuItems"] = menuItems action.Data["leftMenuItems"] = menuItems
// 当前菜单 // 当前菜单
@@ -120,23 +123,23 @@ func (this *ClusterHelper) BeforeAction(actionPtr actions.ActionWrapper) (goNext
} }
// 设置菜单 // 设置菜单
func (this *ClusterHelper) createSettingMenu(cluster *pb.NodeCluster, info *pb.FindEnabledNodeClusterConfigInfoResponse, selectedItem string) (items []maps.Map) { func (this *ClusterHelper) createSettingMenu(cluster *pb.NodeCluster, info *pb.FindEnabledNodeClusterConfigInfoResponse, selectedItem string, actionPtr actions.ActionWrapper) (items []maps.Map) {
clusterId := numberutils.FormatInt64(cluster.Id) clusterId := numberutils.FormatInt64(cluster.Id)
items = append(items, maps.Map{ items = append(items, maps.Map{
"name": "基础设置", "name": this.Lang(actionPtr, codes.AdminClusterMenuSettingBasic),
"url": "/clusters/cluster/settings?clusterId=" + clusterId, "url": "/clusters/cluster/settings?clusterId=" + clusterId,
"isActive": selectedItem == "basic", "isActive": selectedItem == "basic",
"isOn": true, "isOn": true,
}) })
items = append(items, maps.Map{ items = append(items, maps.Map{
"name": "DNS设置", "name": this.Lang(actionPtr, codes.AdminClusterMenuSettingDNS),
"url": "/clusters/cluster/settings/dns?clusterId=" + clusterId, "url": "/clusters/cluster/settings/dns?clusterId=" + clusterId,
"isActive": selectedItem == "dns", "isActive": selectedItem == "dns",
"isOn": cluster.DnsDomainId > 0 || len(cluster.DnsName) > 0, "isOn": cluster.DnsDomainId > 0 || len(cluster.DnsName) > 0,
}) })
items = append(items, maps.Map{ items = append(items, maps.Map{
"name": "健康检查", "name": this.Lang(actionPtr, codes.AdminClusterMenuSettingHealthCheck),
"url": "/clusters/cluster/settings/health?clusterId=" + clusterId, "url": "/clusters/cluster/settings/health?clusterId=" + clusterId,
"isActive": selectedItem == "health", "isActive": selectedItem == "health",
"isOn": info != nil && info.HealthCheckIsOn, "isOn": info != nil && info.HealthCheckIsOn,
@@ -147,43 +150,43 @@ func (this *ClusterHelper) createSettingMenu(cluster *pb.NodeCluster, info *pb.F
}) })
items = append(items, maps.Map{ items = append(items, maps.Map{
"name": "网站设置", "name": this.Lang(actionPtr, codes.AdminClusterMenuSettingServiceGlobal),
"url": "/clusters/cluster/settings/global-server-config?clusterId=" + clusterId, "url": "/clusters/cluster/settings/global-server-config?clusterId=" + clusterId,
"isActive": selectedItem == "globalServerConfig", "isActive": selectedItem == "globalServerConfig",
"isOn": true, "isOn": true,
}) })
items = append(items, maps.Map{ items = append(items, maps.Map{
"name": "缓存策略", "name": this.Lang(actionPtr, codes.AdminClusterMenuSettingCachePolicy),
"url": "/clusters/cluster/settings/cache?clusterId=" + clusterId, "url": "/clusters/cluster/settings/cache?clusterId=" + clusterId,
"isActive": selectedItem == "cache", "isActive": selectedItem == "cache",
"isOn": cluster.HttpCachePolicyId > 0, "isOn": cluster.HttpCachePolicyId > 0,
}) })
items = append(items, maps.Map{ items = append(items, maps.Map{
"name": "WAF策略", "name": this.Lang(actionPtr, codes.AdminClusterMenuSettingWAFPolicy),
"url": "/clusters/cluster/settings/waf?clusterId=" + clusterId, "url": "/clusters/cluster/settings/waf?clusterId=" + clusterId,
"isActive": selectedItem == "waf", "isActive": selectedItem == "waf",
"isOn": cluster.HttpFirewallPolicyId > 0, "isOn": cluster.HttpFirewallPolicyId > 0,
}) })
items = append(items, maps.Map{ items = append(items, maps.Map{
"name": "WAF动作", "name": this.Lang(actionPtr, codes.AdminClusterMenuSettingWAFActions),
"url": "/clusters/cluster/settings/firewall-actions?clusterId=" + clusterId, "url": "/clusters/cluster/settings/firewall-actions?clusterId=" + clusterId,
"isActive": selectedItem == "firewallAction", "isActive": selectedItem == "firewallAction",
"isOn": info != nil && info.HasFirewallActions, "isOn": info != nil && info.HasFirewallActions,
}) })
items = append(items, maps.Map{ items = append(items, maps.Map{
"name": "WebP", "name": this.Lang(actionPtr, codes.AdminClusterMenuSettingWebP),
"url": "/clusters/cluster/settings/webp?clusterId=" + clusterId, "url": "/clusters/cluster/settings/webp?clusterId=" + clusterId,
"isActive": selectedItem == "webp", "isActive": selectedItem == "webp",
"isOn": info != nil && info.WebpIsOn, "isOn": info != nil && info.WebpIsOn,
}) })
items = filterMenuItems1(items, info, clusterId, selectedItem) items = this.filterMenuItems1(items, info, clusterId, selectedItem, actionPtr)
items = append(items, maps.Map{ items = append(items, maps.Map{
"name": "统计指标", "name": this.Lang(actionPtr, codes.AdminClusterMenuSettingMetrics),
"url": "/clusters/cluster/settings/metrics?clusterId=" + clusterId, "url": "/clusters/cluster/settings/metrics?clusterId=" + clusterId,
"isActive": selectedItem == "metric", "isActive": selectedItem == "metric",
"isOn": info != nil && info.HasMetricItems, "isOn": info != nil && info.HasMetricItems,
@@ -196,13 +199,13 @@ func (this *ClusterHelper) createSettingMenu(cluster *pb.NodeCluster, info *pb.F
}) })
items = append(items, maps.Map{ items = append(items, maps.Map{
"name": "DDoS防护", "name": this.Lang(actionPtr, codes.AdminClusterMenuSettingDDoSProtection),
"url": "/clusters/cluster/settings/ddos-protection?clusterId=" + clusterId, "url": "/clusters/cluster/settings/ddos-protection?clusterId=" + clusterId,
"isActive": selectedItem == "ddosProtection", "isActive": selectedItem == "ddosProtection",
"isOn": info != nil && info.HasDDoSProtection, "isOn": info != nil && info.HasDDoSProtection,
}) })
items = filterMenuItems2(items, info, clusterId, selectedItem) items = this.filterMenuItems2(items, info, clusterId, selectedItem, actionPtr)
return return
} }

View File

@@ -5,13 +5,14 @@ package clusterutils
import ( import (
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/actions"
"github.com/iwind/TeaGo/maps" "github.com/iwind/TeaGo/maps"
) )
func filterMenuItems1(items []maps.Map, info *pb.FindEnabledNodeClusterConfigInfoResponse, clusterIdString string, selectedItem string) []maps.Map { func (this *ClusterHelper) filterMenuItems1(items []maps.Map, info *pb.FindEnabledNodeClusterConfigInfoResponse, clusterIdString string, selectedItem string, actionPtr actions.ActionWrapper) []maps.Map {
return items return items
} }
func filterMenuItems2(items []maps.Map, info *pb.FindEnabledNodeClusterConfigInfoResponse, clusterIdString string, selectedItem string) []maps.Map { func (this *ClusterHelper) filterMenuItems2(items []maps.Map, info *pb.FindEnabledNodeClusterConfigInfoResponse, clusterIdString string, selectedItem string, actionPtr actions.ActionWrapper) []maps.Map {
return items return items
} }

View File

@@ -39,7 +39,7 @@ func (this *IndexAction) RunGet(params struct{}) {
module, ok := configloaders.FindFirstAdminModule(this.AdminId()) module, ok := configloaders.FindFirstAdminModule(this.AdminId())
if ok { if ok {
if module != "dashboard" { if module != "dashboard" {
for _, m := range configloaders.AllModuleMaps(this.Lang()) { for _, m := range configloaders.AllModuleMaps(this.LangCode()) {
if m.GetString("code") == module { if m.GetString("code") == module {
this.RedirectURL(m.GetString("url")) this.RedirectURL(m.GetString("url"))
return return

View File

@@ -2,11 +2,14 @@ package db
import ( import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
"github.com/iwind/TeaGo/actions" "github.com/iwind/TeaGo/actions"
"net/http" "net/http"
) )
type Helper struct { type Helper struct {
helpers.LangHelper
} }
func (this *Helper) BeforeAction(action *actions.ActionObject) { func (this *Helper) BeforeAction(action *actions.ActionObject) {
@@ -18,7 +21,7 @@ func (this *Helper) BeforeAction(action *actions.ActionObject) {
selectedTabbar, _ := action.Data["mainTab"] selectedTabbar, _ := action.Data["mainTab"]
tabbar := actionutils.NewTabbar() var tabbar = actionutils.NewTabbar()
tabbar.Add("数据库节点", "", "/db", "", selectedTabbar == "db") tabbar.Add(this.Lang(action, codes.AdminDBNodeTabNodes), "", "/db", "", selectedTabbar == "db")
actionutils.SetTabbar(action, tabbar) actionutils.SetTabbar(action, tabbar)
} }

View File

@@ -5,13 +5,14 @@ package serverutils
import ( import (
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
"github.com/iwind/TeaGo/actions"
"github.com/iwind/TeaGo/maps" "github.com/iwind/TeaGo/maps"
) )
func filterMenuItems(serverConfig *serverconfigs.ServerConfig, menuItems []maps.Map, serverIdString string, secondMenuItem string) []maps.Map { func (this *ServerHelper) filterMenuItems(serverConfig *serverconfigs.ServerConfig, menuItems []maps.Map, serverIdString string, secondMenuItem string, actionPtr actions.ActionWrapper) []maps.Map {
return menuItems return menuItems
} }
func filterMenuItems2(serverConfig *serverconfigs.ServerConfig, menuItems []maps.Map, serverIdString string, secondMenuItem string) []maps.Map { func (this *ServerHelper) filterMenuItems2(serverConfig *serverconfigs.ServerConfig, menuItems []maps.Map, serverIdString string, secondMenuItem string, actionPtr actions.ActionWrapper) []maps.Map {
return menuItems return menuItems
} }

View File

@@ -6,6 +6,8 @@ import (
teaconst "github.com/TeaOSLab/EdgeAdmin/internal/const" teaconst "github.com/TeaOSLab/EdgeAdmin/internal/const"
"github.com/TeaOSLab/EdgeAdmin/internal/rpc" "github.com/TeaOSLab/EdgeAdmin/internal/rpc"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
"github.com/iwind/TeaGo/actions" "github.com/iwind/TeaGo/actions"
@@ -17,6 +19,7 @@ import (
) )
type ServerHelper struct { type ServerHelper struct {
helpers.LangHelper
} }
func NewServerHelper() *ServerHelper { func NewServerHelper() *ServerHelper {
@@ -114,29 +117,29 @@ func (this *ServerHelper) createLeftMenu(action *actions.ActionObject) {
} }
if teaconst.IsPlus { if teaconst.IsPlus {
tabbar.Add("看板", "", "/servers/server/boards?serverId="+serverIdString, "dashboard", selectedTabbar == "board") tabbar.Add(this.Lang(action, codes.AdminServerTabDashboard), "", "/servers/server/boards?serverId="+serverIdString, "dashboard", selectedTabbar == "board")
} }
if family == "http" { if family == "http" {
tabbar.Add("统计", "", "/servers/server/stat?serverId="+serverIdString, "chart area", selectedTabbar == "stat") tabbar.Add(this.Lang(action, codes.AdminServerTabStat), "", "/servers/server/stat?serverId="+serverIdString, "chart area", selectedTabbar == "stat")
} }
if family == "http" { if family == "http" {
tabbar.Add("日志", "", "/servers/server/log?serverId="+serverIdString, "history", selectedTabbar == "log") tabbar.Add(this.Lang(action, codes.AdminServerTabAccessLogs), "", "/servers/server/log?serverId="+serverIdString, "history", selectedTabbar == "log")
} }
tabbar.Add("设置", "", "/servers/server/settings?serverId="+serverIdString, "setting", selectedTabbar == "setting") tabbar.Add(this.Lang(action, codes.AdminServerTabSettings), "", "/servers/server/settings?serverId="+serverIdString, "setting", selectedTabbar == "setting")
tabbar.Add("删除", "", "/servers/server/delete?serverId="+serverIdString, "trash", selectedTabbar == "delete") tabbar.Add(this.Lang(action, codes.AdminServerTabDelete), "", "/servers/server/delete?serverId="+serverIdString, "trash", selectedTabbar == "delete")
actionutils.SetTabbar(action, tabbar) actionutils.SetTabbar(action, tabbar)
// 左侧操作子菜单 // 左侧操作子菜单
switch types.String(mainTab) { switch types.String(mainTab) {
case "board": case "board":
action.Data["leftMenuItems"] = this.createBoardMenu(types.String(secondMenuItem), serverIdString, serverConfig) action.Data["leftMenuItems"] = this.createBoardMenu(types.String(secondMenuItem), serverIdString, serverConfig, action)
case "log": case "log":
action.Data["leftMenuItems"] = this.createLogMenu(types.String(secondMenuItem), serverIdString, serverConfig) action.Data["leftMenuItems"] = this.createLogMenu(types.String(secondMenuItem), serverIdString, serverConfig, action)
case "stat": case "stat":
action.Data["leftMenuItems"] = this.createStatMenu(types.String(secondMenuItem), serverIdString, serverConfig) action.Data["leftMenuItems"] = this.createStatMenu(types.String(secondMenuItem), serverIdString, serverConfig, action)
case "setting": case "setting":
var menuItems = this.createSettingsMenu(types.String(secondMenuItem), serverIdString, serverConfig) var menuItems = this.createSettingsMenu(types.String(secondMenuItem), serverIdString, serverConfig, action)
action.Data["leftMenuItems"] = menuItems action.Data["leftMenuItems"] = menuItems
// 当前菜单 // 当前菜单
@@ -148,15 +151,15 @@ func (this *ServerHelper) createLeftMenu(action *actions.ActionObject) {
} }
} }
case "delete": case "delete":
action.Data["leftMenuItems"] = this.createDeleteMenu(types.String(secondMenuItem), serverIdString, serverConfig) action.Data["leftMenuItems"] = this.createDeleteMenu(types.String(secondMenuItem), serverIdString, serverConfig, action)
} }
} }
// 看板菜单 // 看板菜单
func (this *ServerHelper) createBoardMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig) []maps.Map { func (this *ServerHelper) createBoardMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig, actionPtr actions.ActionWrapper) []maps.Map {
menuItems := []maps.Map{} menuItems := []maps.Map{}
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "看板", "name": this.Lang(actionPtr, codes.AdminServerMenuDashboard),
"url": "/servers/server/board?serverId=" + serverIdString, "url": "/servers/server/board?serverId=" + serverIdString,
"isActive": secondMenuItem == "index", "isActive": secondMenuItem == "index",
}) })
@@ -164,20 +167,20 @@ func (this *ServerHelper) createBoardMenu(secondMenuItem string, serverIdString
} }
// 日志菜单 // 日志菜单
func (this *ServerHelper) createLogMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig) []maps.Map { func (this *ServerHelper) createLogMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig, actionPtr actions.ActionWrapper) []maps.Map {
menuItems := []maps.Map{} menuItems := []maps.Map{}
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "实时", "name": this.Lang(actionPtr, codes.AdminServerMenuAccesslogRealtime),
"url": "/servers/server/log?serverId=" + serverIdString, "url": "/servers/server/log?serverId=" + serverIdString,
"isActive": secondMenuItem == "index", "isActive": secondMenuItem == "index",
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "今天", "name": this.Lang(actionPtr, codes.AdminServerMenuAccesslogToday),
"url": "/servers/server/log/today?serverId=" + serverIdString, "url": "/servers/server/log/today?serverId=" + serverIdString,
"isActive": secondMenuItem == "today", "isActive": secondMenuItem == "today",
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "历史", "name": this.Lang(actionPtr, codes.AdminServerMenuAccesslogHistory),
"url": "/servers/server/log/history?serverId=" + serverIdString, "url": "/servers/server/log/history?serverId=" + serverIdString,
"isActive": secondMenuItem == "history", "isActive": secondMenuItem == "history",
}) })
@@ -185,30 +188,30 @@ func (this *ServerHelper) createLogMenu(secondMenuItem string, serverIdString st
} }
// 统计菜单 // 统计菜单
func (this *ServerHelper) createStatMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig) []maps.Map { func (this *ServerHelper) createStatMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig, actionPtr actions.ActionWrapper) []maps.Map {
var menuItems = []maps.Map{} var menuItems = []maps.Map{}
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "流量统计", "name": this.Lang(actionPtr, codes.AdminServerMenuStatTraffic),
"url": "/servers/server/stat?serverId=" + serverIdString, "url": "/servers/server/stat?serverId=" + serverIdString,
"isActive": secondMenuItem == "index", "isActive": secondMenuItem == "index",
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "地域分布", "name": this.Lang(actionPtr, codes.AdminServerMenuStatRegions),
"url": "/servers/server/stat/regions?serverId=" + serverIdString, "url": "/servers/server/stat/regions?serverId=" + serverIdString,
"isActive": secondMenuItem == "region", "isActive": secondMenuItem == "region",
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "运营商", "name": this.Lang(actionPtr, codes.AdminServerMenuStatProviders),
"url": "/servers/server/stat/providers?serverId=" + serverIdString, "url": "/servers/server/stat/providers?serverId=" + serverIdString,
"isActive": secondMenuItem == "provider", "isActive": secondMenuItem == "provider",
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "终端", "name": this.Lang(actionPtr, codes.AdminServerMenuStatClients),
"url": "/servers/server/stat/clients?serverId=" + serverIdString, "url": "/servers/server/stat/clients?serverId=" + serverIdString,
"isActive": secondMenuItem == "client", "isActive": secondMenuItem == "client",
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "WAF", "name": this.Lang(actionPtr, codes.AdminServerMenuStatWAF),
"url": "/servers/server/stat/waf?serverId=" + serverIdString, "url": "/servers/server/stat/waf?serverId=" + serverIdString,
"isActive": secondMenuItem == "waf", "isActive": secondMenuItem == "waf",
}) })
@@ -216,16 +219,16 @@ func (this *ServerHelper) createStatMenu(secondMenuItem string, serverIdString s
} }
// 设置菜单 // 设置菜单
func (this *ServerHelper) createSettingsMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig) (items []maps.Map) { func (this *ServerHelper) createSettingsMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig, actionPtr actions.ActionWrapper) (items []maps.Map) {
var menuItems = []maps.Map{ var menuItems = []maps.Map{
{ {
"name": "基本信息", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingBasic),
"url": "/servers/server/settings?serverId=" + serverIdString, "url": "/servers/server/settings?serverId=" + serverIdString,
"isActive": secondMenuItem == "basic", "isActive": secondMenuItem == "basic",
"isOff": !serverConfig.IsOn, "isOff": !serverConfig.IsOn,
}, },
{ {
"name": "DNS", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingDNS),
"url": "/servers/server/settings/dns?serverId=" + serverIdString, "url": "/servers/server/settings/dns?serverId=" + serverIdString,
"isActive": secondMenuItem == "dns", "isActive": secondMenuItem == "dns",
}, },
@@ -234,34 +237,34 @@ func (this *ServerHelper) createSettingsMenu(secondMenuItem string, serverIdStri
// HTTP // HTTP
if serverConfig.IsHTTPFamily() { if serverConfig.IsHTTPFamily() {
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "域名", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingDomains),
"url": "/servers/server/settings/serverNames?serverId=" + serverIdString, "url": "/servers/server/settings/serverNames?serverId=" + serverIdString,
"isActive": secondMenuItem == "serverName", "isActive": secondMenuItem == "serverName",
"isOn": len(serverConfig.ServerNames) > 0, "isOn": len(serverConfig.ServerNames) > 0,
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "HTTP", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingHTTP),
"url": "/servers/server/settings/http?serverId=" + serverIdString, "url": "/servers/server/settings/http?serverId=" + serverIdString,
"isActive": secondMenuItem == "http", "isActive": secondMenuItem == "http",
"isOn": (serverConfig.HTTP != nil && serverConfig.HTTP.IsOn && len(serverConfig.HTTP.Listen) > 0) || (serverConfig.Web != nil && serverConfig.Web.RedirectToHttps != nil && serverConfig.Web.RedirectToHttps.IsOn), "isOn": (serverConfig.HTTP != nil && serverConfig.HTTP.IsOn && len(serverConfig.HTTP.Listen) > 0) || (serverConfig.Web != nil && serverConfig.Web.RedirectToHttps != nil && serverConfig.Web.RedirectToHttps.IsOn),
"isOff": serverConfig.HTTP != nil && !serverConfig.HTTP.IsOn, "isOff": serverConfig.HTTP != nil && !serverConfig.HTTP.IsOn,
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "HTTPS", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingHTTPS),
"url": "/servers/server/settings/https?serverId=" + serverIdString, "url": "/servers/server/settings/https?serverId=" + serverIdString,
"isActive": secondMenuItem == "https", "isActive": secondMenuItem == "https",
"isOn": serverConfig.HTTPS != nil && serverConfig.HTTPS.IsOn && len(serverConfig.HTTPS.Listen) > 0, "isOn": serverConfig.HTTPS != nil && serverConfig.HTTPS.IsOn && len(serverConfig.HTTPS.Listen) > 0,
"isOff": serverConfig.HTTPS != nil && !serverConfig.HTTPS.IsOn, "isOff": serverConfig.HTTPS != nil && !serverConfig.HTTPS.IsOn,
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "源站", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingOrigins),
"url": "/servers/server/settings/reverseProxy?serverId=" + serverIdString, "url": "/servers/server/settings/reverseProxy?serverId=" + serverIdString,
"isActive": secondMenuItem == "reverseProxy", "isActive": secondMenuItem == "reverseProxy",
"isOn": serverConfig.ReverseProxyRef != nil && serverConfig.ReverseProxyRef.IsOn, "isOn": serverConfig.ReverseProxyRef != nil && serverConfig.ReverseProxyRef.IsOn,
"configCode": serverconfigs.ConfigCodeReverseProxy, "configCode": serverconfigs.ConfigCodeReverseProxy,
}) })
menuItems = filterMenuItems(serverConfig, menuItems, serverIdString, secondMenuItem) menuItems = this.filterMenuItems(serverConfig, menuItems, serverIdString, secondMenuItem, actionPtr)
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "-", "name": "-",
@@ -269,108 +272,108 @@ func (this *ServerHelper) createSettingsMenu(secondMenuItem string, serverIdStri
"isActive": false, "isActive": false,
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "URL跳转", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingRedirects),
"url": "/servers/server/settings/redirects?serverId=" + serverIdString, "url": "/servers/server/settings/redirects?serverId=" + serverIdString,
"isActive": secondMenuItem == "redirects", "isActive": secondMenuItem == "redirects",
"isOn": serverConfig.Web != nil && len(serverConfig.Web.HostRedirects) > 0, "isOn": serverConfig.Web != nil && len(serverConfig.Web.HostRedirects) > 0,
"configCode": serverconfigs.ConfigCodeHostRedirects, "configCode": serverconfigs.ConfigCodeHostRedirects,
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "路由规则", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingLocations),
"url": "/servers/server/settings/locations?serverId=" + serverIdString, "url": "/servers/server/settings/locations?serverId=" + serverIdString,
"isActive": secondMenuItem == "locations", "isActive": secondMenuItem == "locations",
"isOn": serverConfig.Web != nil && len(serverConfig.Web.Locations) > 0, "isOn": serverConfig.Web != nil && len(serverConfig.Web.Locations) > 0,
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "重写规则", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingRewriteRules),
"url": "/servers/server/settings/rewrite?serverId=" + serverIdString, "url": "/servers/server/settings/rewrite?serverId=" + serverIdString,
"isActive": secondMenuItem == "rewrite", "isActive": secondMenuItem == "rewrite",
"isOn": serverConfig.Web != nil && len(serverConfig.Web.RewriteRefs) > 0, "isOn": serverConfig.Web != nil && len(serverConfig.Web.RewriteRefs) > 0,
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "WAF", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingWAF),
"url": "/servers/server/settings/waf?serverId=" + serverIdString, "url": "/servers/server/settings/waf?serverId=" + serverIdString,
"isActive": secondMenuItem == "waf", "isActive": secondMenuItem == "waf",
"isOn": serverConfig.Web != nil && serverConfig.Web.FirewallRef != nil && serverConfig.Web.FirewallRef.IsOn, "isOn": serverConfig.Web != nil && serverConfig.Web.FirewallRef != nil && serverConfig.Web.FirewallRef.IsOn,
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "缓存", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingCache),
"url": "/servers/server/settings/cache?serverId=" + serverIdString, "url": "/servers/server/settings/cache?serverId=" + serverIdString,
"isActive": secondMenuItem == "cache", "isActive": secondMenuItem == "cache",
"isOn": serverConfig.Web != nil && serverConfig.Web.Cache != nil && serverConfig.Web.Cache.IsOn, "isOn": serverConfig.Web != nil && serverConfig.Web.Cache != nil && serverConfig.Web.Cache.IsOn,
"configCode": serverconfigs.ConfigCodeCache, "configCode": serverconfigs.ConfigCodeCache,
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "访问鉴权", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingAuth),
"url": "/servers/server/settings/access?serverId=" + serverIdString, "url": "/servers/server/settings/access?serverId=" + serverIdString,
"isActive": secondMenuItem == "access", "isActive": secondMenuItem == "access",
"isOn": serverConfig.Web != nil && serverConfig.Web.Auth != nil && serverConfig.Web.Auth.IsOn, "isOn": serverConfig.Web != nil && serverConfig.Web.Auth != nil && serverConfig.Web.Auth.IsOn,
"configCode": serverconfigs.ConfigCodeAuth, "configCode": serverconfigs.ConfigCodeAuth,
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "防盗链", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingReferers),
"url": "/servers/server/settings/referers?serverId=" + serverIdString, "url": "/servers/server/settings/referers?serverId=" + serverIdString,
"isActive": secondMenuItem == "referer", "isActive": secondMenuItem == "referer",
"isOn": serverConfig.Web != nil && serverConfig.Web.Referers != nil && serverConfig.Web.Referers.IsOn, "isOn": serverConfig.Web != nil && serverConfig.Web.Referers != nil && serverConfig.Web.Referers.IsOn,
"configCode": serverconfigs.ConfigCodeReferers, "configCode": serverconfigs.ConfigCodeReferers,
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "UA名单", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingUserAgents),
"url": "/servers/server/settings/userAgent?serverId=" + serverIdString, "url": "/servers/server/settings/userAgent?serverId=" + serverIdString,
"isActive": secondMenuItem == "userAgent", "isActive": secondMenuItem == "userAgent",
"isOn": serverConfig.Web != nil && serverConfig.Web.UserAgent != nil && serverConfig.Web.UserAgent.IsOn, "isOn": serverConfig.Web != nil && serverConfig.Web.UserAgent != nil && serverConfig.Web.UserAgent.IsOn,
"configCode": serverconfigs.ConfigCodeUserAgent, "configCode": serverconfigs.ConfigCodeUserAgent,
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "字符编码", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingCharset),
"url": "/servers/server/settings/charset?serverId=" + serverIdString, "url": "/servers/server/settings/charset?serverId=" + serverIdString,
"isActive": secondMenuItem == "charset", "isActive": secondMenuItem == "charset",
"isOn": serverConfig.Web != nil && serverConfig.Web.Charset != nil && serverConfig.Web.Charset.IsOn, "isOn": serverConfig.Web != nil && serverConfig.Web.Charset != nil && serverConfig.Web.Charset.IsOn,
"configCode": serverconfigs.ConfigCodeCharset, "configCode": serverconfigs.ConfigCodeCharset,
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "访问日志", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingAccessLog),
"url": "/servers/server/settings/accessLog?serverId=" + serverIdString, "url": "/servers/server/settings/accessLog?serverId=" + serverIdString,
"isActive": secondMenuItem == "accessLog", "isActive": secondMenuItem == "accessLog",
"isOn": serverConfig.Web != nil && serverConfig.Web.AccessLogRef != nil && serverConfig.Web.AccessLogRef.IsOn, "isOn": serverConfig.Web != nil && serverConfig.Web.AccessLogRef != nil && serverConfig.Web.AccessLogRef.IsOn,
"configCode": serverconfigs.ConfigCodeAccessLog, "configCode": serverconfigs.ConfigCodeAccessLog,
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "统计", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingStat),
"url": "/servers/server/settings/stat?serverId=" + serverIdString, "url": "/servers/server/settings/stat?serverId=" + serverIdString,
"isActive": secondMenuItem == "stat", "isActive": secondMenuItem == "stat",
"isOn": serverConfig.Web != nil && serverConfig.Web.StatRef != nil && serverConfig.Web.StatRef.IsOn, "isOn": serverConfig.Web != nil && serverConfig.Web.StatRef != nil && serverConfig.Web.StatRef.IsOn,
"configCode": serverconfigs.ConfigCodeStat, "configCode": serverconfigs.ConfigCodeStat,
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "内容压缩", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingCompress),
"url": "/servers/server/settings/compression?serverId=" + serverIdString, "url": "/servers/server/settings/compression?serverId=" + serverIdString,
"isActive": secondMenuItem == "compression", "isActive": secondMenuItem == "compression",
"isOn": serverConfig.Web != nil && serverConfig.Web.Compression != nil && serverConfig.Web.Compression.IsOn, "isOn": serverConfig.Web != nil && serverConfig.Web.Compression != nil && serverConfig.Web.Compression.IsOn,
"configCode": serverconfigs.ConfigCodeCompression, "configCode": serverconfigs.ConfigCodeCompression,
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "自定义页面", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingPages),
"url": "/servers/server/settings/pages?serverId=" + serverIdString, "url": "/servers/server/settings/pages?serverId=" + serverIdString,
"isActive": secondMenuItem == "pages", "isActive": secondMenuItem == "pages",
"isOn": serverConfig.Web != nil && (len(serverConfig.Web.Pages) > 0 || (serverConfig.Web.Shutdown != nil && serverConfig.Web.Shutdown.IsOn)), "isOn": serverConfig.Web != nil && (len(serverConfig.Web.Pages) > 0 || (serverConfig.Web.Shutdown != nil && serverConfig.Web.Shutdown.IsOn)),
"configCode": serverconfigs.ConfigCodePages, "configCode": serverconfigs.ConfigCodePages,
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "HTTP Header", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingHTTPHeaders),
"url": "/servers/server/settings/headers?serverId=" + serverIdString, "url": "/servers/server/settings/headers?serverId=" + serverIdString,
"isActive": secondMenuItem == "header", "isActive": secondMenuItem == "header",
"isOn": this.hasHTTPHeaders(serverConfig.Web), "isOn": this.hasHTTPHeaders(serverConfig.Web),
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "Websocket", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingWebsocket),
"url": "/servers/server/settings/websocket?serverId=" + serverIdString, "url": "/servers/server/settings/websocket?serverId=" + serverIdString,
"isActive": secondMenuItem == "websocket", "isActive": secondMenuItem == "websocket",
"isOn": serverConfig.Web != nil && serverConfig.Web.WebsocketRef != nil && serverConfig.Web.WebsocketRef.IsOn, "isOn": serverConfig.Web != nil && serverConfig.Web.WebsocketRef != nil && serverConfig.Web.WebsocketRef.IsOn,
"configCode": serverconfigs.ConfigCodeWebsocket, "configCode": serverconfigs.ConfigCodeWebsocket,
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "WebP", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingWebP),
"url": "/servers/server/settings/webp?serverId=" + serverIdString, "url": "/servers/server/settings/webp?serverId=" + serverIdString,
"isActive": secondMenuItem == "webp", "isActive": secondMenuItem == "webp",
"isOn": serverConfig.Web != nil && serverConfig.Web.WebP != nil && serverConfig.Web.WebP.IsOn, "isOn": serverConfig.Web != nil && serverConfig.Web.WebP != nil && serverConfig.Web.WebP.IsOn,
@@ -378,14 +381,14 @@ func (this *ServerHelper) createSettingsMenu(secondMenuItem string, serverIdStri
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "静态分发", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingRoot),
"url": "/servers/server/settings/web?serverId=" + serverIdString, "url": "/servers/server/settings/web?serverId=" + serverIdString,
"isActive": secondMenuItem == "web", "isActive": secondMenuItem == "web",
"isOn": serverConfig.Web != nil && serverConfig.Web.Root != nil && serverConfig.Web.Root.IsOn, "isOn": serverConfig.Web != nil && serverConfig.Web.Root != nil && serverConfig.Web.Root.IsOn,
"configCode": serverconfigs.ConfigCodeRoot, "configCode": serverconfigs.ConfigCodeRoot,
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "Fastcgi", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingFastcgi),
"url": "/servers/server/settings/fastcgi?serverId=" + serverIdString, "url": "/servers/server/settings/fastcgi?serverId=" + serverIdString,
"isActive": secondMenuItem == "fastcgi", "isActive": secondMenuItem == "fastcgi",
"isOn": serverConfig.Web != nil && serverConfig.Web.FastcgiRef != nil && serverConfig.Web.FastcgiRef.IsOn, "isOn": serverConfig.Web != nil && serverConfig.Web.FastcgiRef != nil && serverConfig.Web.FastcgiRef.IsOn,
@@ -398,7 +401,7 @@ func (this *ServerHelper) createSettingsMenu(secondMenuItem string, serverIdStri
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "访客IP地址", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingClientIP),
"url": "/servers/server/settings/remoteAddr?serverId=" + serverIdString, "url": "/servers/server/settings/remoteAddr?serverId=" + serverIdString,
"isActive": secondMenuItem == "remoteAddr", "isActive": secondMenuItem == "remoteAddr",
"isOn": serverConfig.Web != nil && serverConfig.Web.RemoteAddr != nil && serverConfig.Web.RemoteAddr.IsOn, "isOn": serverConfig.Web != nil && serverConfig.Web.RemoteAddr != nil && serverConfig.Web.RemoteAddr.IsOn,
@@ -406,14 +409,14 @@ func (this *ServerHelper) createSettingsMenu(secondMenuItem string, serverIdStri
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "请求限制", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingRequestLimit),
"url": "/servers/server/settings/requestLimit?serverId=" + serverIdString, "url": "/servers/server/settings/requestLimit?serverId=" + serverIdString,
"isActive": secondMenuItem == "requestLimit", "isActive": secondMenuItem == "requestLimit",
"isOn": serverConfig.Web != nil && serverConfig.Web.RequestLimit != nil && serverConfig.Web.RequestLimit.IsOn, "isOn": serverConfig.Web != nil && serverConfig.Web.RequestLimit != nil && serverConfig.Web.RequestLimit.IsOn,
"configCode": serverconfigs.ConfigCodeRequestLimit, "configCode": serverconfigs.ConfigCodeRequestLimit,
}) })
menuItems = filterMenuItems2(serverConfig, menuItems, serverIdString, secondMenuItem) menuItems = this.filterMenuItems2(serverConfig, menuItems, serverIdString, secondMenuItem, actionPtr)
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "-", "name": "-",
@@ -422,46 +425,46 @@ func (this *ServerHelper) createSettingsMenu(secondMenuItem string, serverIdStri
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "其他设置", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingOthers),
"url": "/servers/server/settings/common?serverId=" + serverIdString, "url": "/servers/server/settings/common?serverId=" + serverIdString,
"isActive": secondMenuItem == "common", "isActive": secondMenuItem == "common",
"isOn": serverConfig.Web != nil && serverConfig.Web.MergeSlashes, "isOn": serverConfig.Web != nil && serverConfig.Web.MergeSlashes,
}) })
} else if serverConfig.IsTCPFamily() { } else if serverConfig.IsTCPFamily() {
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "TCP", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingTCP),
"url": "/servers/server/settings/tcp?serverId=" + serverIdString, "url": "/servers/server/settings/tcp?serverId=" + serverIdString,
"isActive": secondMenuItem == "tcp", "isActive": secondMenuItem == "tcp",
"isOn": serverConfig.TCP != nil && serverConfig.TCP.IsOn && len(serverConfig.TCP.Listen) > 0, "isOn": serverConfig.TCP != nil && serverConfig.TCP.IsOn && len(serverConfig.TCP.Listen) > 0,
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "TLS", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingTLS),
"url": "/servers/server/settings/tls?serverId=" + serverIdString, "url": "/servers/server/settings/tls?serverId=" + serverIdString,
"isActive": secondMenuItem == "tls", "isActive": secondMenuItem == "tls",
"isOn": serverConfig.TLS != nil && serverConfig.TLS.IsOn && len(serverConfig.TLS.Listen) > 0, "isOn": serverConfig.TLS != nil && serverConfig.TLS.IsOn && len(serverConfig.TLS.Listen) > 0,
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "源站", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingOrigins),
"url": "/servers/server/settings/reverseProxy?serverId=" + serverIdString, "url": "/servers/server/settings/reverseProxy?serverId=" + serverIdString,
"isActive": secondMenuItem == "reverseProxy", "isActive": secondMenuItem == "reverseProxy",
"isOn": serverConfig.ReverseProxyRef != nil && serverConfig.ReverseProxyRef.IsOn, "isOn": serverConfig.ReverseProxyRef != nil && serverConfig.ReverseProxyRef.IsOn,
}) })
} else if serverConfig.IsUnixFamily() { } else if serverConfig.IsUnixFamily() {
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "Unix", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingUnix),
"url": "/servers/server/settings/unix?serverId=" + serverIdString, "url": "/servers/server/settings/unix?serverId=" + serverIdString,
"isActive": secondMenuItem == "unix", "isActive": secondMenuItem == "unix",
"isOn": serverConfig.Unix != nil && serverConfig.Unix.IsOn && len(serverConfig.Unix.Listen) > 0, "isOn": serverConfig.Unix != nil && serverConfig.Unix.IsOn && len(serverConfig.Unix.Listen) > 0,
}) })
} else if serverConfig.IsUDPFamily() { } else if serverConfig.IsUDPFamily() {
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "UDP", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingUDP),
"url": "/servers/server/settings/udp?serverId=" + serverIdString, "url": "/servers/server/settings/udp?serverId=" + serverIdString,
"isActive": secondMenuItem == "udp", "isActive": secondMenuItem == "udp",
"isOn": serverConfig.UDP != nil && serverConfig.UDP.IsOn && len(serverConfig.UDP.Listen) > 0, "isOn": serverConfig.UDP != nil && serverConfig.UDP.IsOn && len(serverConfig.UDP.Listen) > 0,
}) })
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "源站", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingOrigins),
"url": "/servers/server/settings/reverseProxy?serverId=" + serverIdString, "url": "/servers/server/settings/reverseProxy?serverId=" + serverIdString,
"isActive": secondMenuItem == "reverseProxy", "isActive": secondMenuItem == "reverseProxy",
"isOn": serverConfig.ReverseProxyRef != nil && serverConfig.ReverseProxyRef.IsOn, "isOn": serverConfig.ReverseProxyRef != nil && serverConfig.ReverseProxyRef.IsOn,
@@ -472,10 +475,10 @@ func (this *ServerHelper) createSettingsMenu(secondMenuItem string, serverIdStri
} }
// 删除菜单 // 删除菜单
func (this *ServerHelper) createDeleteMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig) []maps.Map { func (this *ServerHelper) createDeleteMenu(secondMenuItem string, serverIdString string, serverConfig *serverconfigs.ServerConfig, actionPtr actions.ActionWrapper) []maps.Map {
menuItems := []maps.Map{} menuItems := []maps.Map{}
menuItems = append(menuItems, maps.Map{ menuItems = append(menuItems, maps.Map{
"name": "删除", "name": this.Lang(actionPtr, codes.AdminServerMenuSettingDelete),
"url": "/servers/server/delete?serverId=" + serverIdString, "url": "/servers/server/delete?serverId=" + serverIdString,
"isActive": secondMenuItem == "index", "isActive": secondMenuItem == "index",
}) })

View File

@@ -5,10 +5,14 @@ package settingutils
import ( import (
"github.com/TeaOSLab/EdgeAdmin/internal/configloaders" "github.com/TeaOSLab/EdgeAdmin/internal/configloaders"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
"github.com/iwind/TeaGo/actions" "github.com/iwind/TeaGo/actions"
) )
type AdvancedHelper struct { type AdvancedHelper struct {
helpers.LangHelper
tab string tab string
} }
@@ -32,12 +36,12 @@ func (this *AdvancedHelper) BeforeAction(actionPtr actions.ActionWrapper) (goNex
var session = action.Session() var session = action.Session()
var adminId = session.GetInt64("adminId") var adminId = session.GetInt64("adminId")
if configloaders.AllowModule(adminId, configloaders.AdminModuleCodeSetting) { if configloaders.AllowModule(adminId, configloaders.AdminModuleCodeSetting) {
tabbar.Add("数据库", "", "/settings/database", "", this.tab == "database") tabbar.Add(this.Lang(actionPtr, codes.AdminSettingsTabTransfer), "", "/settings/database", "", this.tab == "database")
tabbar.Add("API节点", "", "/settings/api", "", this.tab == "apiNodes") tabbar.Add(this.Lang(actionPtr, codes.AdminSettingsTabAPINodes), "", "/settings/api", "", this.tab == "apiNodes")
tabbar.Add("日志数据库", "", "/db", "", this.tab == "dbNodes") tabbar.Add(this.Lang(actionPtr, codes.AdminSettingsTabAccessLogDatabases), "", "/db", "", this.tab == "dbNodes")
tabbar.Add("迁移", "", "/settings/transfer", "", this.tab == "transfer") tabbar.Add(this.Lang(actionPtr, codes.AdminSettingsTabTransfer), "", "/settings/transfer", "", this.tab == "transfer")
//tabbar.Add("备份", "", "/settings/backup", "", this.tab == "backup") //tabbar.Add(codes.AdminSettingsTabBackup, "", "/settings/backup", "", this.tab == "backup")
} }
actionutils.SetTabbar(actionPtr, tabbar) actionutils.SetTabbar(actionPtr, tabbar)

View File

@@ -5,10 +5,14 @@ package settingutils
import ( import (
"github.com/TeaOSLab/EdgeAdmin/internal/configloaders" "github.com/TeaOSLab/EdgeAdmin/internal/configloaders"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeAdmin/internal/web/helpers"
"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
"github.com/iwind/TeaGo/actions" "github.com/iwind/TeaGo/actions"
) )
type Helper struct { type Helper struct {
helpers.LangHelper
tab string tab string
} }
@@ -32,13 +36,13 @@ func (this *Helper) BeforeAction(actionPtr actions.ActionWrapper) (goNext bool)
var session = action.Session() var session = action.Session()
var adminId = session.GetInt64("adminId") var adminId = session.GetInt64("adminId")
if configloaders.AllowModule(adminId, configloaders.AdminModuleCodeSetting) { if configloaders.AllowModule(adminId, configloaders.AdminModuleCodeSetting) {
tabbar.Add("Web服务", "", "/settings/server", "", this.tab == "server") tabbar.Add(this.Lang(actionPtr, codes.AdminSettingsTabAdminServer), "", "/settings/server", "", this.tab == "server")
tabbar.Add("管理界面设置", "", "/settings/ui", "", this.tab == "ui") tabbar.Add(this.Lang(actionPtr, codes.AdminSettingsTabAdminUI), "", "/settings/ui", "", this.tab == "ui")
tabbar.Add("安全设置", "", "/settings/security", "", this.tab == "security") tabbar.Add(this.Lang(actionPtr, codes.AdminSettingsTabAdminSecuritySettings), "", "/settings/security", "", this.tab == "security")
tabbar.Add("检查更新", "", "/settings/updates", "", this.tab == "updates") tabbar.Add(this.Lang(actionPtr, codes.AdminSettingsTabUpdates), "", "/settings/updates", "", this.tab == "updates")
} }
tabbar.Add("个人资料", "", "/settings/profile", "", this.tab == "profile") tabbar.Add(this.Lang(actionPtr, codes.AdminSettingsTabProfile), "", "/settings/profile", "", this.tab == "profile")
tabbar.Add("登录设置", "", "/settings/login", "", this.tab == "login") tabbar.Add(this.Lang(actionPtr, codes.AdminSettingsTabLogin), "", "/settings/login", "", this.tab == "login")
actionutils.SetTabbar(actionPtr, tabbar) actionutils.SetTabbar(actionPtr, tabbar)
return return

View File

@@ -0,0 +1,20 @@
// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
package helpers
import (
"github.com/TeaOSLab/EdgeAdmin/internal/configloaders"
"github.com/TeaOSLab/EdgeCommon/pkg/langs"
"github.com/iwind/TeaGo/actions"
)
type LangHelper struct {
}
func (this *LangHelper) Lang(actionPtr actions.ActionWrapper, messageCode langs.MessageCode, args ...any) string {
var langCode = configloaders.FindAdminLang(actionPtr.Object().Session().GetInt64("adminId"))
if len(langCode) == 0 {
langCode = langs.ParseLangFromAction(actionPtr)
}
return langs.Message(langCode, messageCode, args...)
}

File diff suppressed because one or more lines are too long