436 lines
12 KiB
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",
|
|
},
|
|
},
|
|
},
|
|
}
|
|
}
|