An efficient distributed CDN domain name detector
-
dns_query:负责爬取dns解析记录并提供访问API接口
- clawer_domains.py:爬取指定域名下的所有子域名列表
- query.py: 爬取给定DNS递归服务器指定域名的DNS解析路径,支持一次查询一个递归服务器,也支持一次查询多个递归服务器
- web_server.py:提供一个web形式的API,方便中心节点向子节点下发任务
- 接口名:/query
- 参数1:待查域名
- 参数2:递归服务器ip列表
-
database: 定义mysql数据库表已经数据库查询插入等操作
-
database.py: 定义存储A记录的关系表A和存储CNAME记录的CNAME表
-
database_op.py: 以对象/关系映射(ORM)形式封装数据库,以面向对象的形式操作数据库。
-
is_exist(), 判断域名是在数据库中;
-
op_add(), 添加CNAME记录/A记录,以字典的形式传入;
-
op_select(), 查找某个域名,返回与之相关的系列CNAME域名(如果CNAME解析的IP个数大于等于某个阈值,如2)。
-
-
search_neo4j.py:从图数据库neo4j中取出某个域名到所有的IP的完整路径,并格式化为两个字典列表格式,用于前端渲染
-
-
test: 使用locust压力测试工具进行压力测试
- pressure_test.py: 压力测试类
-
utils: 提供配置和一些常用工具函数
- config:定义了数据库配置信息,DNS递归服务器信息,子节点信息等
-
back_end: 使用django实现的主节点web服务
-
dns_manage: 核心框架:Vue
主节点在
-
python环境:提供requirements.txt文件
pip install -r requirements.txt
-
数据库环境:
- mysql
- neo4j
在utils/config中配置好mysql和各个节点的信息
-
dns解析记录子节点部署
cd dns_query python web_server.py
-
部署主节点
cd back_end python Server_communication.py
-
部署web服务
cd back_end python manage.py runserver