Files
waf-platform/EdgeAdmin/internal/web/helpers/menu_plus.go

436 lines
12 KiB
Go

// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
//go:build plus
package helpers
import (
"github.com/TeaOSLab/EdgeAdmin/internal/configloaders"
teaconst "github.com/TeaOSLab/EdgeAdmin/internal/const"
"github.com/TeaOSLab/EdgeAdmin/internal/plus"
"github.com/TeaOSLab/EdgeCommon/pkg/langs"
"github.com/TeaOSLab/EdgeCommon/pkg/langs/codes"
"github.com/iwind/TeaGo/maps"
)
func FindAllMenuMaps(langCode string, nodeLogsType string, countUnreadNodeLogs int64, countUnreadIPItems int64) []maps.Map {
// 是否显示套餐菜单
priceConfig, _ := configloaders.LoadUserPriceConfig()
var plansMenuVisible = false
if priceConfig != nil && priceConfig.IsOn && priceConfig.EnablePlans {
plansMenuVisible = true
}
return []maps.Map{
{
"code": "dashboard",
"module": configloaders.AdminModuleCodeDashboard,
"name": langs.Message(langCode, codes.AdminMenu_Dashboard),
"icon": "dashboard",
},
{
"code": "servers",
"module": configloaders.AdminModuleCodeServer,
"name": langs.Message(langCode, codes.AdminMenu_Servers),
"subtitle": "",
"icon": "clone outsize",
"subItems": []maps.Map{
{
"name": langs.Message(langCode, codes.AdminMenu_ServerAccessLogs),
"url": "/servers/logs",
"code": "log",
},
{
"name": langs.Message(langCode, codes.AdminMenu_ServerGroups),
"url": "/servers/groups",
"code": "group",
},
{
"name": langs.Message(langCode, codes.AdminMenu_ServerCerts),
"url": "/servers/certs",
"code": "cert",
},
{
"name": langs.Message(langCode, codes.AdminMenu_ServerTrafficStats),
"url": "/servers/traffic-stats",
"code": "trafficStat",
"isOn": teaconst.IsPlus,
},
{
"name": "-",
"url": "",
"code": "",
},
{
"name": langs.Message(langCode, codes.AdminMenu_ServerCachePolicies),
"url": "/servers/components/cache",
"code": "cache",
},
{
"name": langs.Message(langCode, codes.AdminMenu_ServerPurgeFetchCaches),
"url": "/servers/components/cache/batch",
"code": "cacheBatch",
},
{
"name": "-",
"url": "",
"code": "",
},
{
"name": langs.Message(langCode, codes.AdminMenu_ServerWAFPolicies),
"url": "/servers/components/waf",
"code": "waf",
},
{
"name": langs.Message(langCode, codes.AdminMenu_ServerIPLists),
"url": "/servers/iplists",
"code": "iplist",
"badge": countUnreadIPItems,
},
{
"name": "-",
"url": "",
"code": "",
},
{
"name": langs.Message(langCode, codes.AdminMenu_ServerAccessLogPolicies),
"url": "/servers/accesslogs",
"code": "accesslog",
"isOn": plus.AllowComponent(plus.ComponentCodeLog),
},
{
"name": langs.Message(langCode, codes.AdminMenu_ServerMetrics),
"url": "/servers/metrics",
"code": "metric",
},
{
"name": "-",
"url": "",
"code": "",
},
{
"name": langs.Message(langCode, codes.AdminMenu_ServerScripts),
"url": "/servers/scripts",
"code": "script",
"isOn": plus.AllowComponent(plus.ComponentCodeComputing),
},
{
"name": langs.Message(langCode, codes.AdminMenu_UserScripts),
"url": "/servers/user-scripts",
"code": "userScript",
"isOn": plus.AllowComponent(plus.ComponentCodeComputing),
},
{
"name": "-",
"url": "",
"code": "",
},
},
},
{
"code": "clusters",
"module": configloaders.AdminModuleCodeNode,
"name": langs.Message(langCode, codes.AdminMenu_Nodes),
"subtitle": "",
"icon": "cloud",
"subItems": []maps.Map{
{
"name": langs.Message(langCode, codes.AdminMenu_NodeClusters),
"url": "/clusters",
"code": "cluster",
},
{
"name": langs.Message(langCode, codes.AdminMenu_NodeLogs),
"url": "/clusters/logs?type=" + nodeLogsType,
"code": "log",
"badge": countUnreadNodeLogs,
},
{
"name": langs.Message(langCode, codes.AdminMenu_NodeIPList),
"url": "/clusters/ip-addrs",
"code": "ipAddr",
"isOn": plus.AllowComponent(plus.ComponentCodeScheduling),
},
{
"name": langs.Message(langCode, codes.AdminMenu_NodeRegions),
"url": "/clusters/regions",
"code": "region",
},
{
"name": langs.Message(langCode, codes.AdminMenu_NodeSSHGrants),
"url": "/clusters/grants",
"code": "grant",
},
{
"name": "-",
"isOn": plus.AllowComponent(plus.ComponentCodeAntiDDoS),
},
{
"name": langs.Message(langCode, codes.AdminMenu_NodeDistributedMonitors),
"url": "/clusters/monitors",
"code": "monitor",
"isOn": plus.AllowComponent(plus.ComponentCodeReporter),
},
{
"name": langs.Message(langCode, codes.AdminMenu_NodeAntiDDoSProducts),
"url": "/clusters/anti-ddos",
"code": "antiDDoS",
"isOn": plus.AllowComponent(plus.ComponentCodeAntiDDoS),
},
},
},
{
"code": "dns",
"module": configloaders.AdminModuleCodeDNS,
"name": langs.Message(langCode, codes.AdminMenu_DNS),
"subtitle": "",
"icon": "globe",
"subItems": []maps.Map{
{
"name": langs.Message(langCode, codes.AdminMenu_DNSClusters),
"url": "/dns",
"code": "cluster",
},
{
"name": langs.Message(langCode, codes.AdminMenu_DNSProviders),
"url": "/dns/providers",
"code": "provider",
},
{
"name": langs.Message(langCode, codes.AdminMenu_DNSIssues),
"url": "/dns/issues",
"code": "issue",
},
},
},
{
"code": "ns",
"module": configloaders.AdminModuleCodeNS,
"name": langs.Message(langCode, codes.AdminMenu_NS),
"icon": "cubes",
"isOn": plus.AllowComponent(plus.ComponentCodeNS),
"subItems": []maps.Map{
{
"name": langs.Message(langCode, codes.AdminMenu_NSDomains),
"url": "/ns/domains",
"code": "domain",
},
{
"name": langs.Message(langCode, codes.AdminMenu_NSDomainGroups),
"url": "/ns/domains/groups",
"code": "domainGroup",
},
{
"name": langs.Message(langCode, codes.AdminMenu_NSDomainBatchOperations),
"url": "/ns/domains/batch",
"code": "domainBatch",
},
{
"name": "-",
},
{
"name": langs.Message(langCode, codes.AdminMenu_NSClusters),
"url": "/ns/clusters",
"code": "cluster",
},
{
"name": langs.Message(langCode, codes.AdminMenu_NSRoutes),
"url": "/ns/routes",
"code": "route",
},
{
"name": langs.Message(langCode, codes.AdminMenu_NSSettings),
"url": "/ns/settings",
"code": "setting",
},
{
"name": "-",
},
{
"name": langs.Message(langCode, codes.AdminMenu_NSUserPlans),
"url": "/ns/userPlans",
"code": "userPlan",
},
{
"name": langs.Message(langCode, codes.AdminMenu_NSPlans),
"url": "/ns/plans",
"code": "plan",
},
{
"name": "-",
},
{
"name": langs.Message(langCode, codes.AdminMenu_NSAccessLogs),
"url": "/ns/clusters/accessLogs",
"code": "accessLog",
},
{
"name": langs.Message(langCode, codes.AdminMenu_NSNodeLogs),
"url": "/ns/clusters/logs",
"code": "log",
},
{
"name": langs.Message(langCode, codes.AdminMenu_NSResolveTest),
"url": "/ns/test",
"code": "test",
},
},
},
{
"code": "users",
"module": configloaders.AdminModuleCodeUser,
"name": langs.Message(langCode, codes.AdminMenu_Users),
"icon": "users",
"subItems": []maps.Map{
{
"name": langs.Message(langCode, codes.AdminMenu_UserList),
"url": "/users",
"code": "users",
"isOn": teaconst.IsPlus,
},
{
"name": langs.Message(langCode, codes.AdminMenu_UserSettings),
"url": "/users/setting",
"code": "setting",
"isOn": teaconst.IsPlus,
},
},
},
{
"code": "finance",
"module": configloaders.AdminModuleCodeFinance,
"name": langs.Message(langCode, codes.AdminMenu_Finance),
"icon": "yen sign",
"isOn": plus.AllowComponent(plus.ComponentCodeFinance),
"subItems": []maps.Map{
{
"name": langs.Message(langCode, codes.AdminMenu_FinanceBills),
"url": "/finance/bills",
"code": "bills",
"isOn": teaconst.IsPlus,
},
{
"name": langs.Message(langCode, codes.AdminMenu_FinanceAccounts),
"url": "/finance/accounts",
"code": "accounts",
"isOn": teaconst.IsPlus,
},
{
"name": langs.Message(langCode, codes.AdminMenu_FinanceLogs),
"url": "/finance/logs",
"code": "logs",
"isOn": teaconst.IsPlus,
},
{
"name": langs.Message(langCode, codes.AdminMenu_FinanceOrders),
"url": "/finance/orders",
"code": "orders",
"isOn": teaconst.IsPlus,
},
{
"name": langs.Message(langCode, codes.AdminMenu_FinanceIncome),
"url": "/finance/income",
"code": "income",
"isOn": teaconst.IsPlus,
},
{
"name": "-",
"isOn": teaconst.IsPlus,
},
{
"name": langs.Message(langCode, codes.AdminMenu_FinanceFee),
"url": "/finance/fee",
"code": "fee",
"isOn": teaconst.IsPlus,
},
{
"name": langs.Message(langCode, codes.AdminMenu_FinancePackages),
"url": "/finance/packages",
"code": "package",
"isOn": teaconst.IsPlus,
},
},
},
{
"code": "plans",
"module": configloaders.AdminModuleCodePlan,
"name": langs.Message(langCode, codes.AdminMenu_Plans),
"icon": "puzzle piece",
"isOn": plus.AllowComponent(plus.ComponentCodePlan) && plansMenuVisible,
"subItems": []maps.Map{
{
"name": langs.Message(langCode, codes.AdminMenu_PlanList),
"url": "/plans",
"code": "plans",
"isOn": teaconst.IsPlus,
},
{
"name": langs.Message(langCode, codes.AdminMenu_PlanUserPlans),
"url": "/plans/userPlans",
"code": "userPlans",
"isOn": teaconst.IsPlus,
},
},
},
{
"code": "tickets",
"module": configloaders.AdminModuleCodeTicket,
"name": langs.Message(langCode, codes.AdminMenu_Tickets),
"icon": "ticket",
"isOn": plus.AllowComponent(plus.ComponentCodeTicket),
"subItems": []maps.Map{
{
"name": langs.Message(langCode, codes.AdminMenu_TicketCategory),
"url": "/tickets/categories",
"code": "categories",
"isOn": teaconst.IsPlus,
},
},
},
{
"code": "admins",
"module": configloaders.AdminModuleCodeAdmin,
"name": langs.Message(langCode, codes.AdminMenu_Admins),
"subtitle": "",
"icon": "user secret",
"subItems": []maps.Map{
{
"name": langs.Message(langCode, codes.AdminMenu_AdminRecipients),
"url": "/admins/recipients",
"code": "recipients",
"isOn": plus.AllowComponent(plus.ComponentCodeMonitor),
},
},
},
{
"code": "log",
"module": configloaders.AdminModuleCodeLog,
"name": langs.Message(langCode, codes.AdminMenu_Logs),
"icon": "history",
},
{
"code": "settings",
"module": configloaders.AdminModuleCodeSetting,
"name": langs.Message(langCode, codes.AdminMenu_Settings),
"subtitle": "",
"icon": "setting",
"subItems": []maps.Map{
{
"name": langs.Message(langCode, codes.AdminMenu_SettingBasicSettings),
"url": "/settings",
"code": "basic",
},
{
"name": langs.Message(langCode, codes.AdminMenu_SettingAdvancedSettings),
"url": "/settings/advanced",
"code": "advanced",
},
{
"name": langs.Message(langCode, codes.AdminMenu_SettingAuthority),
"url": "/settings/authority",
"code": "authority",
},
},
},
}
}