Skip to main content

带登录认证的安全文件服务器

Project description

File Server Logo

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/
├── .github/
│   └── workflows/
│       └── python-publish.yml  # PyPI 自动发布工作流
├── 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/
│   ├── __init__.py      # 测试包入口
│   ├── conftest.py      # pytest 配置
│   ├── test_auth.py     # 认证模块测试
│   ├── test_config.py   # 配置模块测试
│   └── test_handlers.py # 处理器测试
├── CHANGELOG.md         # 变更日志
├── pyproject.toml       # 项目配置
├── release.py           # 发布脚本
└── 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.6
  • bcrypt >= 4.0.0

许可证

MIT License

Project details


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.3.tar.gz (32.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyfileserv-0.4.3-py3-none-any.whl (23.3 kB view details)

Uploaded Python 3

File details

Details for the file pyfileserv-0.4.3.tar.gz.

File metadata

  • Download URL: pyfileserv-0.4.3.tar.gz
  • Upload date:
  • Size: 32.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for pyfileserv-0.4.3.tar.gz
Algorithm Hash digest
SHA256 35a19bba771b88bc32de4250e43724aabc4fb1673e83098d46dfd84cf16976c6
MD5 47db9af1761f95656157f8b9f75609b0
BLAKE2b-256 8d70c3cfcd4ead42dc5551f7a44324daf70b807fe0e52b93c29f9f86ffee0dbe

See more details on using hashes here.

File details

Details for the file pyfileserv-0.4.3-py3-none-any.whl.

File metadata

  • Download URL: pyfileserv-0.4.3-py3-none-any.whl
  • Upload date:
  • Size: 23.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for pyfileserv-0.4.3-py3-none-any.whl
Algorithm Hash digest
SHA256 99aacbfa2ec8841b832f88f128213d8964d8f89a3d3fcc0cc6c2bf408eb24b01
MD5 ca57231790b571b0f1a60a22f7e9ab51
BLAKE2b-256 c45d03222efbf3e20fbf32b0aacd7fe28c41c6c4a408cb7c4185f3232ab65ec9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page