// 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": "httpdns", "module": configloaders.AdminModuleCodeHttpDNS, "name": "HTTPDNS", "subtitle": "", "icon": "shield alternate", "subItems": []maps.Map{ { "name": "集群管理", "url": "/httpdns/clusters", "code": "cluster", }, { "name": "应用管理", "url": "/httpdns/apps", "code": "app", }, { "name": "访问日志", "url": "/httpdns/resolveLogs", "code": "resolveLogs", }, { "name": "运行日志", "url": "/httpdns/runtimeLogs", "code": "runtimeLogs", }, { "name": "解析测试", "url": "/httpdns/sandbox", "code": "sandbox", }, }, }, { "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", }, }, }, } }