带登录认证的安全文件服务器
Project description
File Server
带登录认证的安全文件服务器
功能特性
- 用户认证系统 - 基于用户名/密码的登录认证,使用 bcrypt 加密存储密码
- 会话管理 - 基于 Cookie 的安全会话机制,1小时超时
- 文件浏览 - 目录列表功能,分开展示 HTML 文件和其他文件
- 文件下载 - 支持任意文件下载,显示文件大小
- 文件上传 - 支持多文件上传,拖拽上传,自动处理文件名冲突
- 用户管理 - 创建、删除、修改用户密码
安全特性
- bcrypt 密码加密(rounds=12)
- 安全会话 ID(secrets.token_hex)
- HttpOnly + SameSite Cookie
- 会话超时机制
- 访问控制(未认证用户重定向到登录页)
- 路径遍历防护(防止
../攻击) - 文件上传安全(文件名清理、大小限制 100MB)
安装
pip install pyfileserv
或使用 pipx 安装(推荐):
pipx install pyfileserv
使用方法
1. 创建用户
pyfileserv user create
# 或指定用户名
pyfileserv user create -u admin
2. 启动服务器
pyfileserv
# 或指定端口
pyfileserv -p 9000
命令行参数
| 参数 | 说明 | 默认值 |
|---|---|---|
-p, --port |
服务器端口 | 8000 |
-d, --directory |
文件服务目录 | 当前目录 |
-c, --config-dir |
配置文件目录 | 脚本目录 |
-s, --static-dir |
静态文件目录 | 脚本目录 |
用户管理命令
# 创建用户
pyfileserv user create [-u 用户名]
# 列出用户
pyfileserv user list
# 删除用户
pyfileserv user delete [-u 用户名]
# 修改密码
pyfileserv user passwd [-u 用户名]
示例
# 在端口 9000 启动服务器
pyfileserv -p 9000
# 指定文件服务目录
pyfileserv -d /path/to/files
# 自定义配置和静态文件目录
pyfileserv -c /etc/pyfileserv -s /var/www/files
访问
启动后访问 http://localhost:8000 或局域网 IP 地址。
项目结构
pyfileserv/
├── src/file_server/
│ ├── __init__.py # 包入口
│ ├── __main__.py # CLI 入口
│ ├── config.py # 配置模块
│ ├── auth.py # 认证模块
│ ├── templates.py # HTML 模板
│ ├── handlers.py # HTTP 处理器
│ ├── server.py # 服务器启动
│ ├── cli.py # 命令行工具
│ └── static/
│ ├── logo.svg # Logo 图标
│ └── favicon.svg # Favicon 图标
├── tests/
│ ├── test_auth.py # 认证模块测试
│ └── test_config.py # 配置模块测试
├── users.json # 用户数据存储
├── pyproject.toml # 项目配置
└── README.md # 文档
开发与发布
安装开发依赖
pip install -e ".[test]"
运行测试
pytest tests/ -v
构建
pip install build
python -m build
发布到 TestPyPI
pip install twine
python -m twine upload --repository testpypi dist/*
发布到 PyPI
python -m twine upload dist/*
要求
- Python >= 3.13
- bcrypt >= 5.0.0
许可证
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pyfileserv-0.4.0.tar.gz
(32.7 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyfileserv-0.4.0.tar.gz.
File metadata
- Download URL: pyfileserv-0.4.0.tar.gz
- Upload date:
- Size: 32.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e7b36009370ad9635461fe35b15c0f739d50fbd227f7fd7a029af0b06667918
|
|
| MD5 |
fd0fa2d9f49598edf18c7640d83675ab
|
|
| BLAKE2b-256 |
7cebe835a5477671395f67eea5df672b57d0b71abe33a141311368e96b5b5ee2
|
File details
Details for the file pyfileserv-0.4.0-py3-none-any.whl.
File metadata
- Download URL: pyfileserv-0.4.0-py3-none-any.whl
- Upload date:
- Size: 23.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fac735c81e8a74548fe6b990ec29d25634543241ec0677df40972208b1467afc
|
|
| MD5 |
dd18ec9e9aa3bf105d41ae03a6d99bf6
|
|
| BLAKE2b-256 |
3544d51e78006c2c49702e306f3f2d8a15bbec48162844ec84eeed3fa9c5be13
|