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, 云管理, 多账户管理, 安全防御评估, 开源项目, 异步编程, 数据导出, 无后门, 网络安全, 请求拦截, 逆向工具, 防火墙规则, 隐私保护