feat: upgrade to V1.2 - Tags, Click Stats, and Robust WebDAV

- add Tagging system (backend and frontend)
- add Click count statistics and redirection logic
- add config.example.py
- fix WebDAV MKCOL 405 error and response handling
- fix redirection loop during force password change
- audit SQL queries for security
This commit is contained in:
OpenClaw Agent
2026-02-13 07:58:11 +08:00
parent 521cd9ba42
commit c0cdd146b1
11 changed files with 1559 additions and 749 deletions

View File

@@ -1,69 +1,31 @@
# ToNav - 个人导航系统
# ToNav - 高级个人导航系统
ToNav 是一个轻量级、简洁美观的个人内网服务/常用链接导航系统。它采用 Flask + SQLite 架构,支持响应式布局、分类管理、服务健康状态检测以及完善的后台管理功能
ToNav 是一个功能丰富、架构健壮的个人内网服务导航站
## 🎨 界面风格
继承自 `contraband_manager` 的设计语言:
- **紫色渐变背景**: 现代感十足的视觉体验
- **卡片式布局**: 简洁直观的服务展示。
- **响应式设计**: 完美适配电脑、平板及移动端
- **状态感知**: 实时显示服务的在线/离线状态
## ✨ 新增功能 (V1.2)
- **🏷️ 多标签系统**: 支持为每个服务设置多个自定义标签,前台彩色直观显示。
- **🔥 点击统计**: 实时记录各服务的点击访问次数,并在卡片右下角展示热度
- **☁️ 增强云备份**:
- 支持自定义 WebDAV 配置
- 自动创建 `tonav/` 存储目录
- **一键恢复**: 直接在管理后台从云端历史备份点恢复全量数据。
- **🔍 实时搜索**: 前台支持对服务名称和描述进行毫秒级模糊匹配。
- **🛡️ 安全加固**:
- 强制首次登录修改默认密码。
- 全量参数化查询,杜绝 SQL 注入。
- 智能 API 拦截,防止改密死循环。
## 🚀 核心功能
- **服务管理**: 支持添加、修改、删除服务,支持自定义图标 (Emoji)、描述和排序权重。
- **分类管理**: 灵活的分类系统,支持分类重命名及同步更新所属服务
- **健康检测**: 自动检测服务 URL 的可用性,前台实时反馈(在线 🟢 / 离线 🔴)。
- **后台管理**: 完善的 Dashboard 统计,支持修改管理员密码。
- **防缓存机制**: API 请求自带时间戳,确保数据修改后即刻生效。
## 🛠️ 快速开始
1. **安装依赖**: `pip install -r requirements.txt`
2. **配置文件**: 复制 `config.example.py``config.py` 并根据需要修改
3. **初始化**: `python3 utils/database.py` (默认 admin/admin123)
4. **运行**: `./tonav-ctl.sh start`
## 🛠️ 技术栈
- **后端**: Python 3 + Flask
- **数据库**: SQLite 3
- **前端**: HTML5 + CSS3 (Grid/Flexbox) + Vanilla JavaScript
- **部署**: Systemd + Bash Control Script
## 📦 安装与部署
### 依赖安装
```bash
pip install -r requirements.txt
```
### 初始化数据库
```bash
python3 utils/database.py
```
*默认账号: `admin` / 密码: `admin123`*
### 启动服务
你可以直接使用控制脚本进行管理:
```bash
chmod +x tonav-ctl.sh
./tonav-ctl.sh start
```
## ⚙️ 服务管理命令 (tonav-ctl.sh)
- `start`: 启动服务
- `stop`: 停止服务
- `restart`: 重启服务
- `status`: 查看运行状态
- `log`: 查看最后50行日志
- `logtail`: 实时查看日志
- `enable`: 设置开机自启
## 📁 目录结构
```text
ToNav/
├── app.py # Flask 主应用
├── config.py # 系统配置文件
├── tonav.db # SQLite 数据库
├── tonav-ctl.sh # 服务管理脚本
├── templates/ # HTML 模板
│ ├── index.html # 前台展示页
│ └── admin/ # 后台管理页面
├── static/ # 静态资源 (CSS/JS)
└── utils/ # 数据库及认证工具类
```
## 📁 项目结构
- `app.py`: 核心后端逻辑。
- `tonav.db`: SQLite 数据存储。
- `templates/`: 响应式 HTML 模板。
- `config.example.py`: 配置模板。
---
Developed for personal use. Powered by OpenClaw.
Powered by OpenClaw. Improved by Continuous Audit.