一个基于Flask的现代化域名证书管理系统,提供域名监控、SSL证书管理、URL可用性监控、代理管理等功能。
- 域名管理: 域名信息管理、WHOIS查询、官网可用性检查
- SSL证书监控: 自动检查SSL证书有效期,到期提醒
- URL监控: 实时监控URL可用性,支持SOCKS代理
- 代理管理: 支持HTTP/HTTPS/SOCKS代理配置和测试
- 通知系统: 支持邮件、Webhook、企业微信机器人通知
- 仪表盘: 实时数据统计和可视化展示
- 异步处理: 后台线程执行检查任务,不阻塞用户界面
- 时区支持: 统一使用北京时区,确保时间显示准确
- 响应式设计: 现代化UI设计,支持移动端访问
- 搜索分页: 高效的数据查询和分页展示
- 实时反馈: Toast通知和状态指示器
aicode/
├── app/ # 应用主目录
│ ├── __init__.py # 应用工厂函数
│ ├── models/ # 数据模型
│ │ ├── domain.py # 域名模型
│ │ ├── certificate.py # 证书模型
│ │ ├── url.py # URL监控模型
│ │ ├── proxy.py # 代理模型
│ │ └── notification.py # 通知模型
│ ├── views/ # 视图控制器
│ │ ├── dashboard.py # 仪表盘
│ │ ├── domains.py # 域名管理
│ │ ├── urls.py # URL监控
│ │ ├── proxies.py # 代理管理
│ │ ├── notifications.py # 通知管理
│ │ └── api.py # API接口
│ ├── services/ # 业务服务层
│ │ ├── ssl_checker.py # SSL证书检查
│ │ ├── whois_checker.py # WHOIS查询
│ │ ├── url_checker.py # URL可用性检查
│ │ ├── domain_access_checker.py # 域名访问检查
│ │ ├── notifier.py # 通知服务
│ │ └── cert_parser.py # 证书解析
│ ├── templates/ # 前端模板
│ │ ├── base.html # 基础模板
│ │ ├── dashboard/ # 仪表盘模板
│ │ ├── domains/ # 域名管理模板
│ │ ├── urls/ # URL监控模板
│ │ ├── proxies/ # 代理管理模板
│ │ └── notifications/ # 通知管理模板
│ └── utils/ # 工具模块
│ ├── timezone.py # 时区工具
│ └── scheduler_jobs.py # 调度任务
├── migrations/ # 数据库迁移文件
├── instance/ # 实例配置
├── uploads/ # 文件上传目录
├── config.py # 配置文件
├── run.py # 应用入口
├── requirements.txt # 依赖包
└── README.md # 项目文档
- 表现层 (Views): 处理HTTP请求,返回响应
- 业务层 (Services): 核心业务逻辑,数据处理
- 数据层 (Models): 数据模型定义,数据库操作
- 工具层 (Utils): 通用工具函数和辅助功能
- Flask应用工厂: 支持多环境配置
- SQLAlchemy ORM: 数据库操作抽象
- APScheduler: 定时任务调度
- Blueprint: 模块化路由管理
- 后台线程: 执行耗时操作(WHOIS查询、URL检查等)
- 应用上下文管理: 确保线程安全
- 调度器分离: 主线程和后台线程调度器独立
- Python 3.8+
- SQLite/MySQL/PostgreSQL
- 现代浏览器(支持ES6+)
- 克隆项目
git clone <repository-url>
cd aicode- 创建虚拟环境
python -m venv venv
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activate- 安装依赖
pip install -r requirements.txt- 初始化数据库
python create_db.py- 启动应用
python run.py- 访问应用
打开浏览器访问
http://localhost:5000
创建 .env 文件(可选):
# 数据库配置
DATABASE_URL=sqlite:///domain_cert_manager.db
# 邮件配置
MAIL_SERVER=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your-email@gmail.com
MAIL_PASSWORD=your-app-password
# 应用配置
SECRET_KEY=your-secret-key
FLASK_ENV=development- 添加域名: 输入域名名称和描述,选择检查功能
- WHOIS查询: 自动获取域名注册信息
- 官网可用性: 检查域名HTTPS访问状态
- 异步刷新: 点击按钮实时更新域名信息
- 添加监控: 配置URL地址、检查间隔、代理设置
- 实时检查: 立即执行URL可用性检查
- 进度条显示: 10格进度条显示最近检查结果
- 状态码显示: 显示HTTP响应状态码
- 代理类型: 支持HTTP、HTTPS、SOCKS4、SOCKS5
- 连接测试: 实时测试代理连接状态
- 认证支持: 用户名密码认证
- 状态监控: 显示代理响应时间和状态
- 邮件通知: 配置SMTP服务器
- Webhook: 支持自定义Webhook URL
- 企业微信: 企业微信机器人通知
- 测试功能: 发送测试通知验证配置
- 数据统计: 域名数量、URL监控、异常统计
- 实时更新: 自动刷新统计数据
- 可视化: 卡片式布局展示关键指标
# config.py
SQLALCHEMY_DATABASE_URI = 'sqlite:///domain_cert_manager.db'
# 或使用MySQL
# SQLALCHEMY_DATABASE_URI = 'mysql://user:password@localhost/dbname'TIMEZONE = pytz.timezone('Asia/Shanghai') # 北京时区CERT_CHECK_INTERVAL = 24 # 证书检查间隔(小时)
URL_CHECK_INTERVAL = 1 # URL检查间隔(小时)
NOTIFICATION_DAYS_BEFORE = 30 # 到期前通知天数- 创建数据模型
# app/models/example.py
from app import db
from datetime import datetime
class Example(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), nullable=False)
created_at = db.Column(db.DateTime, default=datetime.utcnow)- 创建视图
# app/views/example.py
from flask import Blueprint, render_template
from app.models.example import Example
example_bp = Blueprint('example', __name__)
@example_bp.route('/examples')
def index():
examples = Example.query.all()
return render_template('examples/index.html', examples=examples)- 注册蓝图
# app/__init__.py
from app.views.example import example_bp
app.register_blueprint(example_bp)# 创建迁移
flask db migrate -m "Add new table"
# 应用迁移
flask db upgrade# 运行测试
python -m pytest tests/
# 代码覆盖率
coverage run -m pytest
coverage report- 使用索引优化查询性能
- 定期清理历史数据
- 使用连接池管理数据库连接
- Redis缓存热点数据
- 浏览器缓存静态资源
- 数据库查询结果缓存
- 后台线程执行耗时操作
- 队列处理大量任务
- 定时任务优化执行时间
- 敏感信息加密存储
- 数据库访问权限控制
- 定期备份重要数据
- 输入验证和过滤
- SQL注入防护
- XSS攻击防护
- CSRF令牌保护
- HTTPS强制使用
- 代理认证安全
- 防火墙配置
- 调度器冲突
错误: Scheduler is already running
解决: 检查后台线程是否正确使用init_scheduler=False
- 应用上下文错误
错误: Working outside of application context
解决: 确保在Flask应用上下文中执行数据库操作
- 时区显示错误
问题: 时间显示不正确
解决: 检查时区配置和前端JavaScript时区设置
# 查看应用日志
tail -f logs/app.log
# 查看错误日志
tail -f logs/error.log- 应用性能监控
- 数据库性能监控
- 网络连接监控
- 磁盘空间监控
- 数据库备份
- 日志清理
- 证书更新
- 依赖包更新
- Fork项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 创建Pull Request
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情
- 项目维护者: [yxmeco]
- 邮箱: [yx@meco.pro]
- 项目地址: [https://github.com/yxmeco/dstatus]
感谢所有为这个项目做出贡献的开发者和用户!
注意: 这是一个开发中的项目,请在生产环境中使用前进行充分测试。










