分步说明如何开发多用户网络地图与监控 Web 应用,通过 Mikrotik Netwatch API 监测设备在线状态并管理订阅余额。
扮演一名专业全栈开发人员。你的任务是开发一款面向 **网络映射与监控** 的 Web 应用,该应用需对接 Mikrotik Netwatch API。
你的目标包括:
- 构建基于角色的多用户系统,用于管理设备并监控其状态(UP/DOWN)。
- 在交互式地图上对设备进行拓扑映射,并管理用户的设备订阅余额。
分步说明:
1. **项目结构搭建**
- 定义数据表:users、roles、devices、device_types、ports、connections、logs、routers 和 user_balances。
- 提供符合范式设计原则的数据库模式,明确各表之间的外键关系。
2. **认证与授权**
- 实现支持登录与会话管理的多用户系统。
- 角色类型:Admin(管理员)和 User(普通用户)。
- 管理员可管理用户、角色及路由器。
- 普通用户仅可根据其账户余额管理设备。
3. **用户与余额管理**
- 用户的增删改查(CRUD)操作仅限管理员执行。
- 每位用户拥有独立余额。
- 订阅计费模型:每台设备每月 Rp.250。
- 根据设备添加日期,每月自动从余额中扣除对应费用。
- 若余额不足,则禁止添加新设备。
4. **设备类型管理(CRUD)**
- 设备可分为“可管理”(manageable)或“不可管理”(unmanageable)两类。
- 若为可管理设备,则需为每个端口分配 IP 地址。
5. **设备管理(CRUD)**
- 添加设备时需指定端口数量与设备名称。
- 若设备为可管理类型,则需为每个端口分配 IP 地址。
- 支持通过点击地图(获取坐标)添加设备 → 弹出表单窗口。
6. **连接管理**
- 通过选择源端口与目的端口建立设备间连接。
- 为连接分配 IP 地址。
- 可将已有连接迁移至其他可用端口。
- 支持删除连接。
7. **Mikrotik Netwatch API 集成**
- 基于已分配的 IP 地址监控设备。
- 获取设备 UP/DOWN 状态。
- 记录设备状态变更日志。
8. **监控仪表盘**
- 在地图上展示所有设备,并支持多种视图样式。
- 使用不同颜色图标区分 UP/DOWN 状态。
- 展示设备状态变更历史日志。
9. **远程设备访问**
- 为每台设备添加一个“Remote”(远程)按钮。
- 点击该按钮后,自动在 Mikrotik 上创建一条端口转发规则(源端口由用户指定,目的端口随机生成)。
- 支持添加与删除端口转发规则。
10. **多路由器支持**
- 每位用户可配置多个 Mikrotik 路由器作为 Netwatch 服务器。
- 按用户粒度保存所分配的路由器信息。
11. **交互式地图**
- 可视化呈现全部设备与连接关系。
- 支持多种地图显示样式。
12. **日志与审计追踪**
- 为每台设备保存 UP/DOWN 状态历史记录。
- 保存用户操作历史(如添加/删除设备、连接、端口转发规则等)。
13. **安全与最佳实践**
- 对所有 API 请求执行校验。
- 防御 SQL 注入、XSS、CSRF 等常见攻击。
- 使用安全认证方式接入 Mikrotik API。Act as a professional full-stack developer. You are tasked with developing a web application for **Mapping & Monitoring Networks** connected to the Mikrotik Netwatch API. Your objectives include: - Building a role-based multi-user system to manage devices and monitor their status (UP/DOWN). - Mapping devices on an interactive map and managing user balances for device subscriptions. Step-by-step instructions: 1. **Project Structure Setup** - Define tables: users, roles, devices, device_types, ports, connections, logs, routers, and user_balances. - Provide a normalized schema design with foreign key relationships. 2. **Authentication & Authorization** - Implement a multi-user system with login & session management. - Roles: Admin and User. - Admin can manage users, roles, and routers. - Users can only manage devices according to their balance. 3. **User & Balance Management** - CRUD operations for users (Admin only). - Each user has a balance. - Subscription model: Rp.250 per device/month. - Automatically deduct balance monthly based on device addition date. - Prevent device addition if balance is insufficient. 4. **Device Type Management (CRUD)** - Devices can be "manageable" or "unmanageable". - If manageable, assign IP addresses per port. 5. **Device Management (CRUD)** - Add devices with port count and name. - Assign IP addresses to each port if the device is manageable. - Add devices by clicking on a map (coordinates) → pop-up form appears. 6. **Connection Management** - Connect devices by selecting source & destination ports. - Assign IP addresses to connections. - Move connections to other available ports. - Remove connections. 7. **Integration with Mikrotik Netwatch API** - Monitor devices based on assigned IPs. - Retrieve UP/DOWN status. - Log device status changes. 8. **Monitoring Dashboard** - Display devices on a map with various view styles. - Use different icon colors for UP/DOWN status. - Show device status change history logs. 9. **Remote Device Access** - Add a "Remote" button for each device. - Clicking the button automatically creates a port forwarding rule in Mikrotik (src-port specified, dst-port random). - Add/remove port forwarding rules. 10. **Multi Router Implementation** - Each user can have more than one Mikrotik router as a Netwatch server. - Save router assignments per user. 11. **Interactive Map** - Visualize all devices and connections. - Support various map display styles. 12. **Logging & Audit Trail** - Save UP/DOWN history for each device. - Save user action history (add/remove device, connection, port forwarding). 13. **Security & Best Practices** - Validate all API requests. - Protect the application from SQL Injection, XSS, CSRF. - Use secure authentication for Mikrotik API.