|
1 | | -# toalist |
| 1 | +# Toalist |
| 2 | + |
| 3 | +Toalist 是一个基于 Go 语言开发的 Web 应用程序,用于管理和操作 Alist 文件系统。该项目使用 Gin 框架构建,提供了简单易用的 Web 界面来管理文件。 |
| 4 | + |
| 5 | +## 功能特性 |
| 6 | + |
| 7 | +- 支持文件上传(支持流式上传和表单上传两种模式) |
| 8 | +- 集成 Alist 文件系统 |
| 9 | +- 安全的密码加密机制(支持 MD5 和 AES 加密) |
| 10 | +- 基于 JWT 的身份认证 |
| 11 | +- 响应式 Web 界面 |
| 12 | +- 配置文件支持(使用 INI 格式) |
| 13 | + |
| 14 | +## 系统要求 |
| 15 | + |
| 16 | +- Go 1.24.0 或更高版本 |
| 17 | +- 支持的操作系统:Windows、Linux、macOS |
| 18 | + |
| 19 | +## 安装说明 |
| 20 | + |
| 21 | +1. 克隆项目 |
| 22 | +```bash |
| 23 | +git clone https://github.com/lovebai/toalist.git |
| 24 | +cd toalist |
| 25 | +``` |
| 26 | + |
| 27 | +2. 安装依赖 |
| 28 | +```bash |
| 29 | +go mod download |
| 30 | +``` |
| 31 | + |
| 32 | +3. 配置 |
| 33 | +- 复制 `conf.ini` 文件并根据需要修改配置 |
| 34 | +- 使用以下命令生成管理员密码: |
| 35 | +```bash |
| 36 | +go run main.go -md5 "你的密码" |
| 37 | +``` |
| 38 | +- 使用以下命令加密 Alist 用户密码: |
| 39 | +```bash |
| 40 | +go run main.go -aes "需要加密的密码" |
| 41 | +``` |
| 42 | + |
| 43 | +4. 编译运行 |
| 44 | +```bash |
| 45 | +go build |
| 46 | +./toalist |
| 47 | +``` |
| 48 | + |
| 49 | +## 项目结构 |
| 50 | + |
| 51 | +``` |
| 52 | +toalist/ |
| 53 | +├── conf/ # 配置相关代码 |
| 54 | +├── controller/ # 控制器 |
| 55 | +├── router/ # 路由定义 |
| 56 | +├── utils/ # 工具函数 |
| 57 | +├── views/ # 前端模板 |
| 58 | +├── i/ # 静态资源 |
| 59 | +├── conf.ini # 配置文件 |
| 60 | +├── main.go # 主程序入口 |
| 61 | +├── go.mod # Go 模块定义 |
| 62 | +└── go.sum # 依赖版本锁定 |
| 63 | +``` |
| 64 | + |
| 65 | +## 配置说明 |
| 66 | + |
| 67 | +配置文件 `conf.ini` 采用 INI 格式,包含以下主要配置项: |
| 68 | + |
| 69 | +### 基础配置 [base] |
| 70 | +```ini |
| 71 | +[base] |
| 72 | +mode = release # 运行模式:release(生产)或 debug(调试) |
| 73 | +host = 0.0.0.0 # 服务器监听地址,0.0.0.0 表示监听所有网络接口 |
| 74 | +port = 5245 # 服务器监听端口 |
| 75 | +url = http://127.0.0.1:5245 # 服务器访问地址 |
| 76 | +``` |
| 77 | + |
| 78 | +### Alist 配置 [alist] |
| 79 | +```ini |
| 80 | +[alist] |
| 81 | +alist_url = http://10.10.11.143:5244 # Alist 服务器地址 |
| 82 | +alist_api_url = http://10.10.11.143:5244 # Alist API 地址 |
| 83 | +alist_username = admin # Alist 用户名 |
| 84 | +alist_password = [加密后的密码] # Alist 密码(使用 AES 加密) |
| 85 | +alist_path = /test # Alist 存储路径 |
| 86 | +``` |
| 87 | + |
| 88 | +### 上传配置 [upload] |
| 89 | +```ini |
| 90 | +[upload] |
| 91 | +upload_method = form # 上传方式:form(表单上传)或 stream(流式上传) |
| 92 | +allow_types = jpg,jpeg,png,... # 允许上传的文件类型,用逗号分隔 |
| 93 | +max_file_size = 50 # 最大文件大小(单位:MB) |
| 94 | +keep_original_name = false # 是否保持原始文件名 |
| 95 | +local_upload_path = /i # 本地文件上传路径 |
| 96 | +``` |
| 97 | + |
| 98 | +### 登录配置 [login] |
| 99 | +```ini |
| 100 | +[login] |
| 101 | +username = admin # 管理员用户名 |
| 102 | +password = [MD5加密后的密码] # 管理员密码(使用 MD5 加密) |
| 103 | +admin_page = /manager # 管理页面路径 |
| 104 | +``` |
| 105 | + |
| 106 | +### 配置说明 |
| 107 | + |
| 108 | +1. **密码加密** |
| 109 | + - 管理员密码使用 MD5 加密,可通过命令行生成: |
| 110 | + ```bash |
| 111 | + go run main.go -md5 "你的密码" |
| 112 | + ``` |
| 113 | + - Alist 密码使用 AES 加密,可通过命令行生成: |
| 114 | + ```bash |
| 115 | + go run main.go -aes "需要加密的密码" |
| 116 | + ``` |
| 117 | + |
| 118 | +2. **上传方式** |
| 119 | + - `form`:使用传统的表单上传,适合小文件 |
| 120 | + - `stream`:使用流式上传,适合大文件 |
| 121 | + |
| 122 | +3. **文件类型限制** |
| 123 | + - 默认支持的文件类型包括:jpg、jpeg、png、gif、pdf、doc、docx、xls、xlsx、ppt、pptx、txt、zip、rar、7z |
| 124 | + - 可以根据需要在 `allow_types` 中修改 |
| 125 | + |
| 126 | +4. **安全建议** |
| 127 | + - 生产环境中建议修改默认端口 |
| 128 | + - 使用强密码并定期更换 |
| 129 | + - 限制 `allow_types` 只包含必要的文件类型 |
| 130 | + - 根据实际需求设置合适的 `max_file_size` |
| 131 | + |
| 132 | +## 使用说明 |
| 133 | + |
| 134 | +1. 启动服务后,访问 `http://localhost:端口号` 进入 Web 界面 |
| 135 | +2. 使用配置的管理员账号登录 |
| 136 | +3. 通过 Web 界面上传和管理文件 |
| 137 | + |
| 138 | +## 开发说明 |
| 139 | + |
| 140 | +- 使用 `go mod` 管理依赖 |
| 141 | +- 遵循 Go 标准项目布局 |
| 142 | +- 使用 Gin 框架处理 HTTP 请求 |
| 143 | +- 使用 JWT 进行身份认证 |
| 144 | + |
| 145 | +## 许可证 |
| 146 | + |
| 147 | +[MIT License](LICENSE) |
| 148 | + |
| 149 | +## 贡献指南 |
| 150 | + |
| 151 | +欢迎提交 Issue 和 Pull Request 来帮助改进项目。 |
| 152 | + |
| 153 | +## 联系方式 |
| 154 | + |
| 155 | +如有问题或建议,请通过 GitHub Issues 提交。 |
0 commit comments