Files
ros-dpi/frontend/src/router.js
T
Su YijunandClaude Opus 5.5 f3e9fdb2af feat: ROS-DPI v0.1.0:RouterOS 终端流量与应用统计面板
- IPFIX / NetFlow v9 采集 + TZSP DNS 嗅探识别应用,可选 ROS 只读 REST 轮询
- 内置 100+ 应用规则库,支持自定义域名 / IP 段 / 端口规则
- 按分钟 / 小时 / 天汇总写入 MySQL
- 全网概览、主机监控、应用统计、流量流向(桑基图)、识别规则、系统设置
- 中英双语,深浅色主题,T568B 线色设计语言
- Docker 多架构镜像,GitHub Actions 测试与发布

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 23:51:02 +08:00

24 lines
1.2 KiB
JavaScript

import { createRouter, createWebHistory } from 'vue-router'
import { auth } from './api.js'
const routes = [
{ path: '/login', name: 'login', component: () => import('./views/Login.vue'), meta: { public: true } },
{ path: '/', name: 'overview', component: () => import('./views/Overview.vue') },
{ path: '/hosts', name: 'hosts', component: () => import('./views/Hosts.vue') },
{ path: '/hosts/:hostKey', name: 'host', component: () => import('./views/HostDetail.vue'), props: true },
{ path: '/apps', name: 'apps', component: () => import('./views/Apps.vue') },
{ path: '/apps/:id', name: 'app', component: () => import('./views/AppDetail.vue'), props: true },
{ path: '/flow', name: 'flow', component: () => import('./views/Flow.vue') },
{ path: '/rules', name: 'rules', component: () => import('./views/Rules.vue') },
{ path: '/settings', name: 'settings', component: () => import('./views/Settings.vue') },
{ path: '/:pathMatch(.*)*', redirect: '/' },
]
const router = createRouter({ history: createWebHistory(), routes })
router.beforeEach(to => {
if (!to.meta.public && !auth.token) return { name: 'login', query: { next: to.fullPath } }
})
export default router