jcq 6 dias atrás
pai
commit
2217549887
3 arquivos alterados com 1178 adições e 88 exclusões
  1. 2 1
      src/layouts/ChildLayout.vue
  2. 128 87
      src/views/dashboard/index.vue
  3. 1048 0
      src/views/index/initData.js

+ 2 - 1
src/layouts/ChildLayout.vue

@@ -64,7 +64,8 @@ onUnmounted(() => {
 <style scoped lang="postcss">
 .left-box {
 	position: fixed;
-	top: 5em;
+	top: 30px;
+	/* max-height: 627px; */
 	bottom: 1em;
 	overflow-y: auto;
 }

+ 128 - 87
src/views/dashboard/index.vue

@@ -1,9 +1,9 @@
 <script setup>
 // Copyright 2024 FlexCDN [email protected]. All rights reserved. Official site: https://flexcdn.cn .
 
-import ctxRef from "@/utils/ctx_ref.js"
-import Context from "./index.js"
-import "./index.css"
+import ctxRef from "@/utils/ctx_ref.js";
+import Context from "./index.js";
+import "./index.css";
 import WarningMessage from "@/components/common/WarningMessage.vue";
 import ColumnsGrid from "@/components/common/ColumnsGrid.vue";
 import LoadingMessage from "@/components/common/LoadingMessage.vue";
@@ -11,93 +11,134 @@ import CardView from "@/components/common/CardView.vue";
 import Cards from "@/components/common/Cards.vue";
 import CardRow from "@/components/common/CardRow.vue";
 
-const ctx = ctxRef(new Context())
-
+const ctx = ctxRef(new Context());
 </script>
 
 <template>
-	<WarningMessage v-if="ctx.emailVerificationMessage.length > 0">
-		<a href="/settings/email-verify">{{ ctx.emailVerificationMessage }}</a></WarningMessage>
-	<WarningMessage v-if="ctx.mobileVerificationMessage.length > 0">
-		<a href="/settings/mobile-verify">{{ ctx.mobileVerificationMessage }}</a></WarningMessage>
-	<WarningMessage v-if="!ctx.isVerified">您的账号正在审核中,请耐心等待完成,暂时不能使用相关功能。</WarningMessage>
-	<WarningMessage v-if="!ctx.isIdentified"><a href="/settings/identity">实名认证</a>后才能使用相关功能。
-	</WarningMessage>
-
-	<LoadingMessage v-if="ctx.isLoading">数据加载中...</LoadingMessage>
-
-	<ColumnsGrid class="ui columns grid counter-chart" :class="{'three columns': !ctx.uiConfig.showTrafficCharts || !ctx.uiConfig.showBandwidthCharts, 'four columns': ctx.uiConfig.showTrafficCharts && ctx.uiConfig.showBandwidthCharts }" v-if="!ctx.isLoading">
-		<div class="ui column">
-			<h5>加速网站数量</h5>
-			<div class="value"><span>{{ ctx.dashboard.countServers }}</span>个</div>
-		</div>
-
-		<div class="ui column" v-if="ctx.uiConfig.showTrafficCharts">
-			<h5>本月总流量</h5>
-			<div class="value">
-				<span>{{ ctx.dashboard.monthlyTrafficBytes }}</span>{{ ctx.dashboard.monthlyTrafficBytesUnit }}
-			</div>
-		</div>
-
-		<div class="ui column" v-if="ctx.uiConfig.showBandwidthCharts">
-			<h5>本月带宽峰值</h5>
-			<div class="value">
-				<span>{{ ctx.dashboard.monthlyPeekBandwidthBytes }}</span>{{ ctx.dashboard.monthlyPeekBandwidthBytesUnit }}
-			</div>
-		</div>
-
-		<div class="ui column" v-if="ctx.uiConfig.showTrafficCharts">
-			<h5>今日流量</h5>
-			<div class="value">
-				<span>{{ ctx.dashboard.dailyTrafficBytes }}</span>{{ ctx.dashboard.dailyTrafficBytesUnit }}
-			</div>
-		</div>
-
-		<div class="ui column" v-if="ctx.uiConfig.showBandwidthCharts">
-			<h5>今日带宽峰值</h5>
-			<div class="value">
-				<span>{{ ctx.dashboard.dailyPeekBandwidthBytes }}</span>{{ ctx.dashboard.dailyPeekBandwidthBytesUnit }}
-			</div>
-		</div>
-	</ColumnsGrid>
-
-	<Cards>
-		<CardView v-if="ctx.posts && ctx.posts.length > 0">
-			<template #header>最新活动</template>
-
-			<CardRow class="!pb-1 !pt-0" v-for="post in ctx.posts">
-				<template #value>
-					<a :href="'/posts/post?postId=' + post.id" :target="(post.type == 'url') ? '_blank' : '_self'">
-						<span class="gray" v-if="post.category && post.category.name && post.category.name.length > 0">[{{post.category.name}}]</span>
-						{{post.subject}} <i class="pi pi-external-link tiny" v-if="post.type == 'url'"></i> <span class="gray small ml-1">{{post.createdTime}}</span>
-					</a>
-				</template>
-			</CardRow>
-		</CardView>
-
-
-		<div v-if="ctx.uiConfig.showTrafficCharts && !ctx.isLoading">
-			<CardView cols="1">
-				<template #header>近 30 日流量趋势 <span class="text-base gray">(单位:字节)</span></template>
-				<CardRow>
-					<template #value>
-						<div class="chart-box" id="daily-traffic-chart"></div>
-					</template>
-				</CardRow>
-			</CardView>
-		</div>
-
-		<div v-if="ctx.uiConfig.showBandwidthCharts && !ctx.isLoading">
-			<CardView cols="1">
-				<template #header>近 30 日带宽趋势</template>
-				<CardRow>
-					<template #value>
-						<div class="chart-box" id="daily-peek-bandwidth-chart"></div>
-					</template>
-				</CardRow>
-			</CardView>
-		</div>
-	</Cards>
+  <WarningMessage v-if="ctx.emailVerificationMessage.length > 0">
+    <a href="/settings/email-verify">{{
+      ctx.emailVerificationMessage
+    }}</a></WarningMessage
+  >
+  <WarningMessage v-if="ctx.mobileVerificationMessage.length > 0">
+    <a href="/settings/mobile-verify">{{
+      ctx.mobileVerificationMessage
+    }}</a></WarningMessage
+  >
+  <WarningMessage v-if="!ctx.isVerified"
+    >您的账号正在审核中,请耐心等待完成,暂时不能使用相关功能。</WarningMessage
+  >
+  <WarningMessage v-if="!ctx.isIdentified"
+    ><a href="/settings/identity">实名认证</a>后才能使用相关功能。
+  </WarningMessage>
+
+  <LoadingMessage v-if="ctx.isLoading">数据加载中...</LoadingMessage>
+
+  <ColumnsGrid
+    class="ui columns grid counter-chart"
+    v-if="!ctx.isLoading"
+    :class="[
+      'ui columns grid counter-chart',
+      `${
+        ctx.uiConfig.showTrafficCharts && ctx.uiConfig.showBandwidthCharts
+          ? 'four'
+          : 'three'
+      } columns`,
+    ]"
+  >
+    <div class="ui column">
+      <h5>加速网站数量</h5>
+      <div class="value">
+        <span>{{ ctx.dashboard.countServers }}</span
+        >个
+      </div>
+    </div>
+
+    <div class="ui column" v-if="ctx.uiConfig.showTrafficCharts">
+      <h5>本月总流量</h5>
+      <div class="value">
+        <span>{{ ctx.dashboard.monthlyTrafficBytes }}</span
+        >{{ ctx.dashboard.monthlyTrafficBytesUnit }}
+      </div>
+    </div>
+
+    <div class="ui column" v-if="ctx.uiConfig.showBandwidthCharts">
+      <h5>本月带宽峰值</h5>
+      <div class="value">
+        <span>{{ ctx.dashboard.monthlyPeekBandwidthBytes }}</span
+        >{{ ctx.dashboard.monthlyPeekBandwidthBytesUnit }}
+      </div>
+    </div>
+
+    <div class="ui column" v-if="ctx.uiConfig.showTrafficCharts">
+      <h5>今日流量</h5>
+      <div class="value">
+        <span>{{ ctx.dashboard.dailyTrafficBytes }}</span
+        >{{ ctx.dashboard.dailyTrafficBytesUnit }}
+      </div>
+    </div>
+
+    <div class="ui column" v-if="ctx.uiConfig.showBandwidthCharts">
+      <h5>今日带宽峰值</h5>
+      <div class="value">
+        <span>{{ ctx.dashboard.dailyPeekBandwidthBytes }}</span
+        >{{ ctx.dashboard.dailyPeekBandwidthBytesUnit }}
+      </div>
+    </div>
+  </ColumnsGrid>
+
+  <Cards>
+    <CardView v-if="ctx.posts && ctx.posts.length > 0">
+      <template #header>最新活动</template>
+
+      <CardRow class="!pb-1 !pt-0" v-for="post in ctx.posts">
+        <template #value>
+          <a
+            :href="'/posts/post?postId=' + post.id"
+            :target="post.type == 'url' ? '_blank' : '_self'"
+          >
+            <span
+              class="gray"
+              v-if="
+                post.category &&
+                post.category.name &&
+                post.category.name.length > 0
+              "
+              >[{{ post.category.name }}]</span
+            >
+            {{ post.subject }}
+            <i class="pi pi-external-link tiny" v-if="post.type == 'url'"></i>
+            <span class="gray small ml-1">{{ post.createdTime }}</span>
+          </a>
+        </template>
+      </CardRow>
+    </CardView>
+
+    <div v-if="ctx.uiConfig.showTrafficCharts && !ctx.isLoading">
+      <CardView cols="1">
+        <template #header
+          >近 30 日流量趋势
+          <span class="text-base gray">(单位:字节)</span></template
+        >
+        <CardRow>
+          <template #value>
+            <div class="chart-box" id="daily-traffic-chart"></div>
+          </template>
+        </CardRow>
+      </CardView>
+    </div>
+
+    <div v-if="ctx.uiConfig.showBandwidthCharts && !ctx.isLoading">
+      <CardView cols="1">
+        <template #header>近 30 日带宽趋势</template>
+        <CardRow>
+          <template #value>
+            <div class="chart-box" id="daily-peek-bandwidth-chart"></div>
+          </template>
+        </CardRow>
+      </CardView>
+    </div>
+  </Cards>
 </template>
 
 <style lang="postcss" scoped>

+ 1048 - 0
src/views/index/initData.js

@@ -1,4 +1,1052 @@
 const dataMaps = {
+    "/servers/server/settings/serverNames":{
+        "auditingResult": {
+            "createdTime": "1970-01-01 08:00:00",
+            "isOk": true,
+            "reason": ""
+        },
+        "firstMenuItem": "index",
+        "isAuditing": false,
+        "leftMenuActiveItem": {
+            "isActive": true,
+            "isOn": true,
+            "name": "域名",
+            "url": "/servers/server/settings/serverNames?serverId=1"
+        },
+        "leftMenuItemIsDisabled": false,
+        "leftMenuItems": [
+            {
+                "isActive": true,
+                "isOn": true,
+                "name": "域名",
+                "url": "/servers/server/settings/serverNames?serverId=1",
+                "label": "域名"
+            },
+            {
+                "isActive": false,
+                "name": "DNS",
+                "url": "/servers/server/settings/dns?serverId=1",
+                "label": "DNS"
+            },
+            {
+                "isActive": false,
+                "isOn": false,
+                "name": "套餐",
+                "subName": "",
+                "url": "/servers/server/settings/plan?serverId=1",
+                "label": "套餐"
+            },
+            {
+                "isActive": false,
+                "isOff": false,
+                "isOn": true,
+                "name": "HTTP",
+                "url": "/servers/server/settings/http?serverId=1",
+                "label": "HTTP"
+            },
+            {
+                "isActive": false,
+                "isOff": false,
+                "isOn": true,
+                "name": "HTTPS",
+                "url": "/servers/server/settings/https?serverId=1",
+                "label": "HTTPS"
+            },
+            {
+                "configCode": "reverseProxy",
+                "isActive": false,
+                "isOn": true,
+                "name": "源站",
+                "url": "/servers/server/settings/reverseProxy?serverId=1",
+                "label": "源站"
+            },
+            {
+                "isActive": false,
+                "name": "-",
+                "url": "",
+                "label": "-"
+            },
+            {
+                "configCode": "uam",
+                "isActive": false,
+                "isImportant": false,
+                "isOn": false,
+                "name": "5秒盾",
+                "url": "/servers/server/settings/uam?serverId=1",
+                "label": "5秒盾"
+            },
+            {
+                "configCode": "cc",
+                "isActive": false,
+                "isImportant": false,
+                "isOn": false,
+                "name": "CC防护",
+                "url": "/servers/server/settings/cc?serverId=1",
+                "label": "CC防护"
+            },
+            {
+                "isActive": false,
+                "name": "-",
+                "url": "",
+                "label": "-"
+            },
+            {
+                "configCode": "hostRedirects",
+                "isActive": false,
+                "isOn": false,
+                "name": "URL跳转",
+                "url": "/servers/server/settings/redirects?serverId=1",
+                "label": "URL跳转"
+            },
+            {
+                "isActive": false,
+                "isOn": false,
+                "name": "重写规则",
+                "url": "/servers/server/settings/rewrite?serverId=1",
+                "label": "重写规则"
+            },
+            {
+                "configCode": "waf",
+                "isActive": false,
+                "isOn": false,
+                "name": "WAF",
+                "url": "/servers/server/settings/waf?serverId=1",
+                "label": "WAF"
+            },
+            {
+                "configCode": "cache",
+                "isActive": false,
+                "isOn": false,
+                "name": "缓存",
+                "url": "/servers/server/settings/cache?serverId=1",
+                "label": "缓存"
+            },
+            {
+                "configCode": "auth",
+                "isActive": false,
+                "isOn": false,
+                "name": "访问鉴权",
+                "url": "/servers/server/settings/access?serverId=1",
+                "label": "访问鉴权"
+            },
+            {
+                "configCode": "referers",
+                "isActive": false,
+                "isOn": false,
+                "name": "防盗链",
+                "url": "/servers/server/settings/referers?serverId=1",
+                "label": "防盗链"
+            },
+            {
+                "configCode": "userAgent",
+                "isActive": false,
+                "isOn": false,
+                "name": "UA名单",
+                "url": "/servers/server/settings/userAgent?serverId=1",
+                "label": "UA名单"
+            },
+            {
+                "configCode": "accessLog",
+                "isActive": false,
+                "isOn": true,
+                "name": "访问日志",
+                "url": "/servers/server/settings/accessLog?serverId=1",
+                "label": "访问日志"
+            },
+            {
+                "configCode": "compression",
+                "isActive": false,
+                "isOn": false,
+                "name": "内容压缩",
+                "url": "/servers/server/settings/compression?serverId=1",
+                "label": "内容压缩"
+            },
+            {
+                "configCode": "pages",
+                "isActive": false,
+                "isOn": false,
+                "name": "自定义页面",
+                "url": "/servers/server/settings/pages?serverId=1",
+                "label": "自定义页面"
+            },
+            {
+                "isActive": false,
+                "isOn": true,
+                "name": "HTTP报头",
+                "url": "/servers/server/settings/headers?serverId=1",
+                "label": "HTTP报头"
+            },
+            {
+                "configCode": "websocket",
+                "isActive": false,
+                "isOn": true,
+                "name": "Websocket",
+                "url": "/servers/server/settings/websocket?serverId=1",
+                "label": "Websocket"
+            },
+            {
+                "configCode": "grpc",
+                "isActive": false,
+                "isOn": false,
+                "name": "gRPC",
+                "url": "/servers/server/settings/grpc?serverId=1",
+                "label": "gRPC"
+            },
+            {
+                "configCode": "webp",
+                "isActive": false,
+                "isOn": false,
+                "name": "WebP",
+                "url": "/servers/server/settings/webp?serverId=1",
+                "label": "WebP"
+            },
+            {
+                "configCode": "optimization",
+                "isActive": false,
+                "isOn": false,
+                "name": "页面优化",
+                "url": "/servers/server/settings/optimization?serverId=1",
+                "label": "页面优化"
+            },
+            {
+                "configCode": "multimedia",
+                "isActive": false,
+                "isOn": false,
+                "name": "音视频设置",
+                "url": "/servers/server/settings/multimedia?serverId=1",
+                "label": "音视频设置"
+            },
+            {
+                "configCode": "stat",
+                "isActive": false,
+                "isOn": true,
+                "name": "统计",
+                "url": "/servers/server/settings/stat?serverId=1",
+                "label": "统计"
+            },
+            {
+                "configCode": "charset",
+                "isActive": false,
+                "isOn": false,
+                "name": "字符编码",
+                "url": "/servers/server/settings/charset?serverId=1",
+                "label": "字符编码"
+            },
+            {
+                "isActive": false,
+                "name": "-",
+                "url": "",
+                "label": "-"
+            },
+            {
+                "isActive": false,
+                "isOn": false,
+                "name": "分组",
+                "url": "/servers/server/settings/groups?serverId=1",
+                "label": "分组"
+            },
+            {
+                "configCode": "remoteAddr",
+                "isActive": false,
+                "isOn": true,
+                "name": "访客IP地址",
+                "url": "/servers/server/settings/remoteAddr?serverId=1",
+                "label": "访客IP地址"
+            },
+            {
+                "isActive": false,
+                "isOn": false,
+                "name": "请求限制",
+                "url": "/servers/server/settings/requestLimit?serverId=1",
+                "label": "请求限制"
+            },
+            {
+                "isActive": false,
+                "isOn": false,
+                "name": "边缘脚本",
+                "url": "/servers/server/settings/requestScripts?serverId=1",
+                "label": "边缘脚本"
+            }
+        ],
+        "mainTab": "setting",
+        "secondMenuItem": "serverName",
+        "server": {
+            "clusterId": 1,
+            "id": 1,
+            "name": "example.com"
+        },
+        "serverFamily": "http",
+        "serverId": 1,
+        "serverNames": [
+            {
+                "name": "example.com",
+                "type": "full",
+                "subNames": null
+            },
+            {
+                "name": "www.example.com",
+                "type": "full",
+                "subNames": null
+            }
+        ],
+        "teaBadge": 0,
+        "teaCommon": {
+            "teaIsPlus": true,
+            "teaLogoFileId": 0,
+            "teaShowVersion": true,
+            "teaUsername": "默认用户"
+        },
+        "teaDemoEnabled": false,
+        "teaDocURL": "",
+        "teaFaviconFileId": 0,
+        "teaFrontMode": "",
+        "teaIsSuper": false,
+        "teaLang": "zh-cn",
+        "teaMenu": "servers",
+        "teaModules": [
+            {
+                "code": "dashboard",
+                "icon": "dashboard",
+                "isOn": true,
+                "name": "概览",
+                "subItems": []
+            },
+            {
+                "code": "servers",
+                "icon": "pi-sitemap",
+                "isOn": true,
+                "name": "CDN加速",
+                "subItems": [
+                    {
+                        "code": "servers",
+                        "name": "我的网站",
+                        "url": "/servers"
+                    },
+                    {
+                        "code": "cache",
+                        "name": "刷新预热",
+                        "url": "/servers/cache"
+                    },
+                    {
+                        "code": "certs",
+                        "name": "证书管理",
+                        "url": "/servers/certs"
+                    },
+                    {
+                        "code": "acme",
+                        "isOn": true,
+                        "name": "证书申请",
+                        "url": "/servers/certs/acme"
+                    },
+                    {
+                        "code": "trafficStat",
+                        "isOn": true,
+                        "name": "用量统计",
+                        "url": "/servers/traffic-stats"
+                    },
+                    {
+                        "code": "fee",
+                        "isOn": false,
+                        "name": "计费方式",
+                        "url": "/servers/fee"
+                    },
+                    {
+                        "code": "trafficPackage",
+                        "isOn": false,
+                        "name": "流量包",
+                        "url": "/servers/packages"
+                    }
+                ]
+            },
+            {
+                "code": "lb",
+                "icon": "paper plane",
+                "isOn": true,
+                "name": "负载均衡"
+            },
+            {
+                "code": "waf",
+                "icon": "magnet",
+                "isOn": true,
+                "name": "WAF安全",
+                "subItems": [
+                    {
+                        "code": "overview",
+                        "name": "概览",
+                        "url": "/waf"
+                    },
+                    {
+                        "code": "wafLogs",
+                        "name": "拦截日志",
+                        "url": "/waf/logs"
+                    },
+                    {
+                        "code": "iplist",
+                        "name": "拦截IP",
+                        "url": "/waf/iplists"
+                    }
+                ]
+            },
+            {
+                "code": "plans",
+                "icon": "puzzle piece",
+                "isOn": true,
+                "name": "套餐管理"
+            },
+            {
+                "code": "anti-ddos",
+                "icon": "shield",
+                "isOn": true,
+                "name": "DDoS高防",
+                "subItems": [
+                    {
+                        "code": "instance",
+                        "name": "实例列表",
+                        "url": "/anti-ddos/instances"
+                    },
+                    {
+                        "code": "package",
+                        "name": "购买实例",
+                        "url": "/anti-ddos/packages"
+                    }
+                ]
+            },
+            {
+                "code": "ns",
+                "icon": "globe",
+                "isOn": true,
+                "name": "域名解析",
+                "subItems": [
+                    {
+                        "code": "domain",
+                        "name": "我的域名",
+                        "url": "/ns/domains"
+                    },
+                    {
+                        "code": "domainGroup",
+                        "name": "域名分组",
+                        "url": "/ns/domains/groups"
+                    },
+                    {
+                        "code": "domainBatch",
+                        "name": "批量操作",
+                        "url": "/ns/domains/batch"
+                    },
+                    {
+                        "code": "route",
+                        "name": "线路管理",
+                        "url": "/ns/routes"
+                    },
+                    {
+                        "code": "plan",
+                        "name": "套餐",
+                        "url": "/ns/plans"
+                    }
+                ]
+            },
+            {
+                "code": "finance",
+                "icon": "dollar sign",
+                "isOn": true,
+                "name": "财务管理",
+                "subItems": [
+                    {
+                        "code": "overview",
+                        "name": "概览",
+                        "url": "/finance"
+                    },
+                    {
+                        "code": "bills",
+                        "name": "费用账单",
+                        "url": "/finance/bills"
+                    },
+                    {
+                        "code": "logs",
+                        "name": "收支明细",
+                        "url": "/finance/logs"
+                    },
+                    {
+                        "code": "charge",
+                        "name": "充值",
+                        "url": "/finance/charge"
+                    }
+                ]
+            },
+            {
+                "code": "tickets",
+                "icon": "ticket",
+                "isOn": true,
+                "name": "工单系统"
+            },
+            {
+                "code": "acl",
+                "icon": "address book",
+                "isOn": true,
+                "name": "访问控制"
+            }
+        ],
+        "teaName": "FlexCDN演示",
+        "teaPageFooterHTML": "",
+        "teaRole": "user",
+        "teaShowIndexPage": false,
+        "teaShowPageFooter": false,
+        "teaSubMenu": "",
+        "teaSubMenus": [],
+        "teaTabbar": [
+            {
+                "icon": "",
+                "isActive": false,
+                "name": "网站列表",
+                "right": false,
+                "subName": "",
+                "url": "/servers"
+            },
+            {
+                "icon": "setting",
+                "isActive": true,
+                "name": "设置",
+                "right": false,
+                "subName": "",
+                "url": "/servers/server?serverId=1"
+            },
+            {
+                "icon": "chart area",
+                "isActive": false,
+                "name": "统计",
+                "right": false,
+                "subName": "",
+                "url": "/servers/server/stat?serverId=1"
+            },
+            {
+                "icon": "history",
+                "isActive": false,
+                "name": "访问日志",
+                "right": false,
+                "subName": "",
+                "url": "/servers/server/log?serverId=1"
+            }
+        ],
+        "teaTheme": "violet",
+        "teaTitle": "FlexCDN用户系统演示",
+        "teaUserAvatar": "",
+        "teaVersion": "1.1.1"
+    },
+    "/servers/server/settings/dns":{
+        "dnsDomain": "",
+        "dnsName": "58d058e7",
+        "firstMenuItem": "index",
+        "leftMenuActiveItem": {
+            "isActive": true,
+            "name": "DNS",
+            "url": "/servers/server/settings/dns?serverId=1"
+        },
+        "leftMenuItemIsDisabled": false,
+        "leftMenuItems": [
+            {
+                "isActive": false,
+                "isOn": true,
+                "name": "域名",
+                "url": "/servers/server/settings/serverNames?serverId=1",
+                "label": "域名"
+            },
+            {
+                "isActive": true,
+                "name": "DNS",
+                "url": "/servers/server/settings/dns?serverId=1",
+                "label": "DNS"
+            },
+            {
+                "isActive": false,
+                "isOn": false,
+                "name": "套餐",
+                "subName": "",
+                "url": "/servers/server/settings/plan?serverId=1",
+                "label": "套餐"
+            },
+            {
+                "isActive": false,
+                "isOff": false,
+                "isOn": true,
+                "name": "HTTP",
+                "url": "/servers/server/settings/http?serverId=1",
+                "label": "HTTP"
+            },
+            {
+                "isActive": false,
+                "isOff": false,
+                "isOn": true,
+                "name": "HTTPS",
+                "url": "/servers/server/settings/https?serverId=1",
+                "label": "HTTPS"
+            },
+            {
+                "configCode": "reverseProxy",
+                "isActive": false,
+                "isOn": true,
+                "name": "源站",
+                "url": "/servers/server/settings/reverseProxy?serverId=1",
+                "label": "源站"
+            },
+            {
+                "isActive": false,
+                "name": "-",
+                "url": "",
+                "label": "-"
+            },
+            {
+                "configCode": "uam",
+                "isActive": false,
+                "isImportant": false,
+                "isOn": false,
+                "name": "5秒盾",
+                "url": "/servers/server/settings/uam?serverId=1",
+                "label": "5秒盾"
+            },
+            {
+                "configCode": "cc",
+                "isActive": false,
+                "isImportant": false,
+                "isOn": false,
+                "name": "CC防护",
+                "url": "/servers/server/settings/cc?serverId=1",
+                "label": "CC防护"
+            },
+            {
+                "isActive": false,
+                "name": "-",
+                "url": "",
+                "label": "-"
+            },
+            {
+                "configCode": "hostRedirects",
+                "isActive": false,
+                "isOn": false,
+                "name": "URL跳转",
+                "url": "/servers/server/settings/redirects?serverId=1",
+                "label": "URL跳转"
+            },
+            {
+                "isActive": false,
+                "isOn": false,
+                "name": "重写规则",
+                "url": "/servers/server/settings/rewrite?serverId=1",
+                "label": "重写规则"
+            },
+            {
+                "configCode": "waf",
+                "isActive": false,
+                "isOn": false,
+                "name": "WAF",
+                "url": "/servers/server/settings/waf?serverId=1",
+                "label": "WAF"
+            },
+            {
+                "configCode": "cache",
+                "isActive": false,
+                "isOn": false,
+                "name": "缓存",
+                "url": "/servers/server/settings/cache?serverId=1",
+                "label": "缓存"
+            },
+            {
+                "configCode": "auth",
+                "isActive": false,
+                "isOn": false,
+                "name": "访问鉴权",
+                "url": "/servers/server/settings/access?serverId=1",
+                "label": "访问鉴权"
+            },
+            {
+                "configCode": "referers",
+                "isActive": false,
+                "isOn": false,
+                "name": "防盗链",
+                "url": "/servers/server/settings/referers?serverId=1",
+                "label": "防盗链"
+            },
+            {
+                "configCode": "userAgent",
+                "isActive": false,
+                "isOn": false,
+                "name": "UA名单",
+                "url": "/servers/server/settings/userAgent?serverId=1",
+                "label": "UA名单"
+            },
+            {
+                "configCode": "accessLog",
+                "isActive": false,
+                "isOn": true,
+                "name": "访问日志",
+                "url": "/servers/server/settings/accessLog?serverId=1",
+                "label": "访问日志"
+            },
+            {
+                "configCode": "compression",
+                "isActive": false,
+                "isOn": false,
+                "name": "内容压缩",
+                "url": "/servers/server/settings/compression?serverId=1",
+                "label": "内容压缩"
+            },
+            {
+                "configCode": "pages",
+                "isActive": false,
+                "isOn": false,
+                "name": "自定义页面",
+                "url": "/servers/server/settings/pages?serverId=1",
+                "label": "自定义页面"
+            },
+            {
+                "isActive": false,
+                "isOn": true,
+                "name": "HTTP报头",
+                "url": "/servers/server/settings/headers?serverId=1",
+                "label": "HTTP报头"
+            },
+            {
+                "configCode": "websocket",
+                "isActive": false,
+                "isOn": true,
+                "name": "Websocket",
+                "url": "/servers/server/settings/websocket?serverId=1",
+                "label": "Websocket"
+            },
+            {
+                "configCode": "grpc",
+                "isActive": false,
+                "isOn": false,
+                "name": "gRPC",
+                "url": "/servers/server/settings/grpc?serverId=1",
+                "label": "gRPC"
+            },
+            {
+                "configCode": "webp",
+                "isActive": false,
+                "isOn": false,
+                "name": "WebP",
+                "url": "/servers/server/settings/webp?serverId=1",
+                "label": "WebP"
+            },
+            {
+                "configCode": "optimization",
+                "isActive": false,
+                "isOn": false,
+                "name": "页面优化",
+                "url": "/servers/server/settings/optimization?serverId=1",
+                "label": "页面优化"
+            },
+            {
+                "configCode": "multimedia",
+                "isActive": false,
+                "isOn": false,
+                "name": "音视频设置",
+                "url": "/servers/server/settings/multimedia?serverId=1",
+                "label": "音视频设置"
+            },
+            {
+                "configCode": "stat",
+                "isActive": false,
+                "isOn": true,
+                "name": "统计",
+                "url": "/servers/server/settings/stat?serverId=1",
+                "label": "统计"
+            },
+            {
+                "configCode": "charset",
+                "isActive": false,
+                "isOn": false,
+                "name": "字符编码",
+                "url": "/servers/server/settings/charset?serverId=1",
+                "label": "字符编码"
+            },
+            {
+                "isActive": false,
+                "name": "-",
+                "url": "",
+                "label": "-"
+            },
+            {
+                "isActive": false,
+                "isOn": false,
+                "name": "分组",
+                "url": "/servers/server/settings/groups?serverId=1",
+                "label": "分组"
+            },
+            {
+                "configCode": "remoteAddr",
+                "isActive": false,
+                "isOn": true,
+                "name": "访客IP地址",
+                "url": "/servers/server/settings/remoteAddr?serverId=1",
+                "label": "访客IP地址"
+            },
+            {
+                "isActive": false,
+                "isOn": false,
+                "name": "请求限制",
+                "url": "/servers/server/settings/requestLimit?serverId=1",
+                "label": "请求限制"
+            },
+            {
+                "isActive": false,
+                "isOn": false,
+                "name": "边缘脚本",
+                "url": "/servers/server/settings/requestScripts?serverId=1",
+                "label": "边缘脚本"
+            }
+        ],
+        "mainMenu": "",
+        "mainTab": "setting",
+        "secondMenuItem": "dns",
+        "server": {
+            "clusterId": 1,
+            "id": 1,
+            "name": "example.com"
+        },
+        "serverFamily": "http",
+        "serverId": 1,
+        "teaBadge": 0,
+        "teaCommon": {
+            "teaIsPlus": true,
+            "teaLogoFileId": 0,
+            "teaShowVersion": true,
+            "teaUsername": "默认用户"
+        },
+        "teaDemoEnabled": false,
+        "teaDocURL": "",
+        "teaFaviconFileId": 0,
+        "teaFrontMode": "",
+        "teaIsSuper": false,
+        "teaLang": "zh-cn",
+        "teaMenu": "servers",
+        "teaModules": [
+            {
+                "code": "dashboard",
+                "icon": "dashboard",
+                "isOn": true,
+                "name": "概览",
+                "subItems": []
+            },
+            {
+                "code": "servers",
+                "icon": "pi-sitemap",
+                "isOn": true,
+                "name": "CDN加速",
+                "subItems": [
+                    {
+                        "code": "servers",
+                        "name": "我的网站",
+                        "url": "/servers"
+                    },
+                    {
+                        "code": "cache",
+                        "name": "刷新预热",
+                        "url": "/servers/cache"
+                    },
+                    {
+                        "code": "certs",
+                        "name": "证书管理",
+                        "url": "/servers/certs"
+                    },
+                    {
+                        "code": "acme",
+                        "isOn": true,
+                        "name": "证书申请",
+                        "url": "/servers/certs/acme"
+                    },
+                    {
+                        "code": "trafficStat",
+                        "isOn": true,
+                        "name": "用量统计",
+                        "url": "/servers/traffic-stats"
+                    },
+                    {
+                        "code": "fee",
+                        "isOn": false,
+                        "name": "计费方式",
+                        "url": "/servers/fee"
+                    },
+                    {
+                        "code": "trafficPackage",
+                        "isOn": false,
+                        "name": "流量包",
+                        "url": "/servers/packages"
+                    }
+                ]
+            },
+            {
+                "code": "lb",
+                "icon": "paper plane",
+                "isOn": true,
+                "name": "负载均衡"
+            },
+            {
+                "code": "waf",
+                "icon": "magnet",
+                "isOn": true,
+                "name": "WAF安全",
+                "subItems": [
+                    {
+                        "code": "overview",
+                        "name": "概览",
+                        "url": "/waf"
+                    },
+                    {
+                        "code": "wafLogs",
+                        "name": "拦截日志",
+                        "url": "/waf/logs"
+                    },
+                    {
+                        "code": "iplist",
+                        "name": "拦截IP",
+                        "url": "/waf/iplists"
+                    }
+                ]
+            },
+            {
+                "code": "plans",
+                "icon": "puzzle piece",
+                "isOn": true,
+                "name": "套餐管理"
+            },
+            {
+                "code": "anti-ddos",
+                "icon": "shield",
+                "isOn": true,
+                "name": "DDoS高防",
+                "subItems": [
+                    {
+                        "code": "instance",
+                        "name": "实例列表",
+                        "url": "/anti-ddos/instances"
+                    },
+                    {
+                        "code": "package",
+                        "name": "购买实例",
+                        "url": "/anti-ddos/packages"
+                    }
+                ]
+            },
+            {
+                "code": "ns",
+                "icon": "globe",
+                "isOn": true,
+                "name": "域名解析",
+                "subItems": [
+                    {
+                        "code": "domain",
+                        "name": "我的域名",
+                        "url": "/ns/domains"
+                    },
+                    {
+                        "code": "domainGroup",
+                        "name": "域名分组",
+                        "url": "/ns/domains/groups"
+                    },
+                    {
+                        "code": "domainBatch",
+                        "name": "批量操作",
+                        "url": "/ns/domains/batch"
+                    },
+                    {
+                        "code": "route",
+                        "name": "线路管理",
+                        "url": "/ns/routes"
+                    },
+                    {
+                        "code": "plan",
+                        "name": "套餐",
+                        "url": "/ns/plans"
+                    }
+                ]
+            },
+            {
+                "code": "finance",
+                "icon": "dollar sign",
+                "isOn": true,
+                "name": "财务管理",
+                "subItems": [
+                    {
+                        "code": "overview",
+                        "name": "概览",
+                        "url": "/finance"
+                    },
+                    {
+                        "code": "bills",
+                        "name": "费用账单",
+                        "url": "/finance/bills"
+                    },
+                    {
+                        "code": "logs",
+                        "name": "收支明细",
+                        "url": "/finance/logs"
+                    },
+                    {
+                        "code": "charge",
+                        "name": "充值",
+                        "url": "/finance/charge"
+                    }
+                ]
+            },
+            {
+                "code": "tickets",
+                "icon": "ticket",
+                "isOn": true,
+                "name": "工单系统"
+            },
+            {
+                "code": "acl",
+                "icon": "address book",
+                "isOn": true,
+                "name": "访问控制"
+            }
+        ],
+        "teaName": "FlexCDN演示",
+        "teaPageFooterHTML": "",
+        "teaRole": "user",
+        "teaShowIndexPage": false,
+        "teaShowPageFooter": false,
+        "teaSubMenu": "",
+        "teaSubMenus": [],
+        "teaTabbar": [
+            {
+                "icon": "",
+                "isActive": false,
+                "name": "网站列表",
+                "right": false,
+                "subName": "",
+                "url": "/servers"
+            },
+            {
+                "icon": "setting",
+                "isActive": true,
+                "name": "设置",
+                "right": false,
+                "subName": "",
+                "url": "/servers/server?serverId=1"
+            },
+            {
+                "icon": "chart area",
+                "isActive": false,
+                "name": "统计",
+                "right": false,
+                "subName": "",
+                "url": "/servers/server/stat?serverId=1"
+            },
+            {
+                "icon": "history",
+                "isActive": false,
+                "name": "访问日志",
+                "right": false,
+                "subName": "",
+                "url": "/servers/server/log?serverId=1"
+            }
+        ],
+        "teaTheme": "violet",
+        "teaTitle": "FlexCDN用户系统演示",
+        "teaUserAvatar": "",
+        "teaVersion": "1.1.1"
+    },
     "/": {
         "canRegister": true,
         "canResetPassword": true,