# Port Manager 一个用于 NAS 的端口管理工具,可以很方便的检查系统当前已经占用的端口,和识别服务。可以用作服务的快速入口(导航)也可以作为选择困难症的随机端口生成器。 ## 主要功能 - 🔍 扫描本地已经占用的端口 - 🎯 识别端口所对应的服务 - 🚀 快速访问服务 (Web界面导航) - 🎲 随机生成一个非占用的端口 - 📱 现代化的Web界面 - 💻 命令行模式支持 ## 安装和使用 ### 从源码构建 ```bash git clone https://github.com/miaomint/port-manager.git cd port-manager go mod tidy go build -o bin/port-manager cmd/port-manager/main.go ``` ### 使用方法 #### 1. Web界面模式(推荐) ```bash # 默认在8080端口启动Web界面 ./bin/port-manager # 指定端口启动 ./bin/port-manager -port 9000 ``` 然后在浏览器中访问 `http://localhost:8080` #### 2. 命令行模式 ```bash # 扫描端口并在终端显示 ./bin/port-manager -scan # 生成随机可用端口 ./bin/port-manager -random # 在指定范围内生成随机端口 ./bin/port-manager -random -min 3000 -max 4000 # 查看帮助 ./bin/port-manager -help ``` ## 支持的服务识别 本工具内置了常见服务的端口识别,包括: ### Web服务 - HTTP (80, 8080, 3000, 4000, 5000, 8000) - HTTPS (443, 8443, 5001) - 开发服务器 (React, Node.js, Flask, Django等) ### 数据库 - MySQL (3306) - PostgreSQL (5432) - MongoDB (27017) - Redis (6379) - Memcached (11211) ### NAS相关 - Synology DSM (5000, 5001) - SMB/CIFS (445) - AFP (548) - NFS (2049) - 常见下载工具 (Sonarr, Radarr, Jackett等) ### 开发工具 - Grafana (3001) - Prometheus (9090) - Elasticsearch (9200) - Kibana (5601) - Jupyter (8888) ### 其他 - SSH (22) - FTP (21) - DNS (53) - 等等... ## 项目结构 本项目遵循标准的 Go 项目结构: ``` port-manager/ ├── cmd/ │ └── port-manager/ # 主程序入口 │ └── main.go ├── internal/ # 内部包,不对外暴露 │ ├── scanner/ # 端口扫描功能 │ ├── service/ # 服务识别功能 │ └── web/ # Web服务器 ├── pkg/ # 可被外部使用的包 │ └── types/ # 类型定义 ├── go.mod ├── go.sum └── README.md ``` ## Web界面特性 - 📊 实时端口扫描 - 🎨 现代化响应式设计 - 🔗 一键访问已识别的Web服务 - 🎲 随机端口生成器 - 📱 移动端友好 - ⚡ 快速加载 ## 开发 ### 依赖 - Go 1.21+ - 仅使用标准库,无外部依赖 ### 运行开发版本 ```bash go run cmd/port-manager/main.go ``` ### 运行测试 ```bash go test ./... ``` ## 贡献 欢迎提交 Issue 和 Pull Request! ## 许可证 MIT License