Files
FTP-Server/README.md
T
2026-04-28 20:53:41 +08:00

138 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# FTP Server for Windows
基于 Go 语言开发的轻量级 FTP 服务器,带 Web 管理面板,专为 Windows 环境设计。
## 功能特性
### FTP 服务
- 完整的 FTP 协议支持(RFC 959
- 主动模式(PORT)和被动模式(PASV)
- 文件上传 / 下载(STOR / RETR
- 目录浏览、创建、删除(LIST / MKD / RMD
- 文件删除、重命名(DELE / RNFR / RNTO
- 每用户独立的 HomeDir 和权限控制(只读 / 可写)
### Web 管理面板
- 管理员登录认证(Token 机制,24h 自动过期)
- 仪表盘 — 服务器状态实时概览
- 用户管理 — 添加 / 编辑 / 删除 FTP 用户
- 系统设置 — 修改 FTP 端口、Web 端口、管理员密码
## 快速开始
### 编译
确保已安装 Go 1.21+,然后执行:
```bash
go build -o ftp-server.exe ./cmd/
```
### 运行
```bash
# 使用默认配置启动
.\ftp-server.exe
# 指定配置文件
.\ftp-server.exe -config myconfig.json
```
首次运行会自动生成 `config.json` 配置文件和 `ftp_root` 根目录。
### 访问
| 服务 | 地址 |
|------|------|
| Web 管理面板 | http://localhost:8080 |
| FTP 服务 | localhost:2121 |
### 默认账号
| 服务 | 用户名 | 密码 |
|------|--------|------|
| Web 管理面板 | `admin` | `admin123` |
| FTP 默认用户 | `ftpuser` | `ftp123` |
> 请在首次登录后立即修改默认密码。
## 配置说明
配置文件为 `config.json`,结构如下:
```json
{
"ftp": {
"host": "0.0.0.0",
"port": 2121,
"passivePortMin": 50000,
"passivePortMax": 50100,
"rootDir": "./ftp_root"
},
"web": {
"host": "0.0.0.0",
"port": 8080
},
"admin": {
"username": "admin",
"password": "admin123"
},
"ftpUsers": [
{
"username": "ftpuser",
"password": "ftp123",
"homeDir": "./ftp_root",
"write": true
}
]
}
```
| 字段 | 说明 |
|------|------|
| `ftp.host` | FTP 监听地址 |
| `ftp.port` | FTP 端口(默认 2121,避免需要管理员权限) |
| `ftp.passivePortMin/Max` | 被动模式端口范围 |
| `ftp.rootDir` | FTP 根目录 |
| `web.host` | Web 面板监听地址 |
| `web.port` | Web 面板端口 |
| `admin.username/password` | 管理员凭据 |
| `ftpUsers` | FTP 用户列表 |
| `ftpUsers[].homeDir` | 用户主目录 |
| `ftpUsers[].write` | 是否允许写入 |
## FTP 客户端连接
推荐使用 [FileZilla](https://filezilla-project.org/) 或 Windows 资源管理器连接:
```
主机: localhost
端口: 2121
用户名: ftpuser
密码: ftp123
```
## 项目结构
```
FTP-server/
├── cmd/main.go # 主程序入口
├── config/config.go # 配置管理模块
├── ftp/server.go # FTP 服务核心
├── web/server.go # Web 管理面板后端 API
├── static/embed.go # 前端 HTML 页面(内嵌)
├── go.mod # Go 模块定义
└── config.json # 运行时配置(自动生成)
```
## 技术栈
- **Go** — 无需运行时依赖,单文件部署
- **标准库 net/http** — Web 管理面板
- **标准库 net** — FTP 协议实现
- **内嵌 HTML/CSS/JS** — 无需额外前端文件
## 许可证
MIT License