fabriziosalmi/cf-box
GitHub: fabriziosalmi/cf-box
一套生产就绪的 Python 工具集,用于高效管理多个 Cloudflare 账户的 IP 列表、DNS 记录和配置导出。
Stars: 32 | Forks: 6
# cf-box: Cloudflare 管理工具包
`cf-box` 是一套全面且生产就绪的 Python 工具集,旨在简化和自动化与 Cloudflare API 的交互,从而高效地管理多个 Cloudflare 账户及其相关资源。
## 功能特性
* **IP List Manager:** 使用单一且易于维护的 YAML 配置,集中管理您 Cloudflare 账户下的多个 IP 访问规则列表。[链接](https://github.com/fabriziosalmi/cf-box/blob/main/ip_list_manager.md)
* **数据导出:** 从您的所有 Cloudflare 账户导出详细数据,包括 zones、DNS 记录和设置,支持多种格式(JSON、CSV、Excel、PDF)。[链接](https://github.com/fabriziosalmi/cf-box/blob/main/data_export.md)
* **分析数据导出:** 使用 GraphQL 从 Cloudflare 获取并导出聚合的分析数据
* **Async/Await 支持:** 采用 aiohttp 的现代 async 架构,以提升性能
* **结构化日志:** 使用 structlog 进行专业日志记录,以增强可观察性
* **类型安全:** 使用 Pydantic 模型进行 API 响应验证
* **SQLAlchemy 集成:** 通过参数化查询实现安全的数据库操作
## 安装
### 从源码安装
```
git clone https://github.com/fabriziosalmi/cf-box.git
cd cf-box
pip install -e ".[dev]"
```
### 使用 Docker
```
docker build -t cf-box .
docker run -e CLOUDFLARE_API_TOKEN=your_token cf-box
```
或使用 Docker Compose:
```
docker-compose up cf-data-export
```
## 快速开始
1. 设置您的 Cloudflare API token:
```
export CLOUDFLARE_API_TOKEN=your_api_token_here
```
2. 在 `config.yaml` 中配置您的设置
3. 运行工具:
```
# 导出 Cloudflare 数据
cf-data-export
# 管理 IP 列表
cf-ip-manager
# 导出分析
cf-analytics
```
## 开发
### 设置 Pre-commit Hooks
```
pip install pre-commit
pre-commit install
```
### 运行测试
```
pytest
```
### 代码质量
```
# 格式化代码
black cf_box/
# Lint 代码
ruff check cf_box/
# Type checking
mypy cf_box/
```
## 架构
本项目遵循现代 Python 包结构:
- `cf_box/` - 主包目录
- `client.py` - 用于 Cloudflare API 的 Async HTTP client
- `models.py` - 用于类型安全的 Pydantic 模型
- `database.py` - SQLAlchemy 数据库操作
- `pdf_generator.py` - 基于模板的 PDF 生成
- `logging_config.py` - 结构化日志配置
- `data_export.py` - 数据导出模块
- `ip_list_manager.py` - IP 列表管理
- `aggregated_analytics.py` - 分析数据导出
## 相关项目
* **通过 GitHub Actions 备份:** [cloudflare-backup-actions](https://github.com/fabriziosalmi/cloudflare-backup-actions)
* **WAF 控制:** [wafcontrol](https://github.com/fabriziosalmi/wafcontrol)
* **Zone 控制:** [zonecontrol](https://github.com/fabriziosalmi/zonecontrol)
* **使用 AWS 的 mTLS:** [mtls-cloudflare-aws](https://github.com/fabriziosalmi/mtls-cloudflare-aws)
* **DNS 冗余:** [dnscontrol-actions](https://github.com/fabriziosalmi/dnscontrol-actions)
标签:aiohttp, API, Cloudflare, DNS管理, DNS解析, Docker, GraphQL, IP列表管理, MITRE ATT&CK, Pydantic, Python, SQLAlchemy, 云管理, 多账户管理, 安全防御评估, 开源项目, 异步编程, 数据导出, 无后门, 网络安全, 请求拦截, 逆向工具, 防火墙规则, 隐私保护