1 Star 2 Fork 1

setionlee / DNS缓存服务器

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
dns_client.py 1.64 KB
一键复制 编辑 原始数据 按行查看 历史
"""
-------------------------------------
# @Time : 2021/1/11 17:41
# @Author : ls
# @File : dns_client.py
# @IDE: PyCharm
--------------------------------------
"""
import socket
import time
from utils.read_config import ConfigRead
from utils.package_tools import PackageTools
class DNSClient:
def __init__(self):
conf = ConfigRead()
self.REMOTE_DNS_SERVER_ADDRESS = conf.read_option_value('SERVER_CONFIG', 'REMOTE_DNS_SERVER_ADDRESS')
self.REMOTE_DNS_SERVER_PORT = int(conf.read_option_value('SERVER_CONFIG', 'REMOTE_DNS_SERVER_PORT'))
self.RESPONSE_TIMEOUT = 3
self.BUFFERSIZE = 1024
def query_dns_from_remote_dns_server(self, pkg):
"""
从公网DNS服务器获取解析信息
:param pkg:客户端传入的DNS请求报文
:return:公网DNS服务器响应报文
"""
pt = PackageTools()
pt.package = pkg
domain_name = pt.domain_name()
client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
client.settimeout(self.RESPONSE_TIMEOUT)
client.sendto(pkg, (self.REMOTE_DNS_SERVER_ADDRESS, self.REMOTE_DNS_SERVER_PORT))
while True:
time.sleep(0.001)
try:
server_response_data, server_info = client.recvfrom(self.BUFFERSIZE)
return [True, server_response_data]
except socket.timeout:
return [False, 'DNS server response timeout[{}]'.format(domain_name)]
except ConnectionError:
return [False, '[WinError 10054] 远程主机强迫关闭了一个现有的连接。[{}]'
.format(domain_name)]
Python
1
https://gitee.com/setionlee/dns-cache-server.git
git@gitee.com:setionlee/dns-cache-server.git
setionlee
dns-cache-server
DNS缓存服务器
master

搜索帮助