From fa83168b92482cee1973e1bb17324d6dd24cf1bc Mon Sep 17 00:00:00 2001 From: jxxghp Date: Tue, 19 Mar 2024 12:26:04 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E5=A2=9E=E5=8A=A0DOH=E5=BC=80?= =?UTF-8?q?=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + app/core/config.py | 2 ++ app/helper/doh.py | 6 ++++-- config/app.env | 2 ++ 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d20b3630..c2036f25 100644 --- a/README.md +++ b/README.md @@ -110,6 +110,7 @@ MoviePilot需要配套下载器和媒体服务器配合使用。 - **❗SUPERUSER:** 超级管理员用户名,默认`admin`,安装后使用该用户登录后台管理界面,**注意:启动一次后再次修改该值不会生效,除非删除数据库文件!** - **❗API_TOKEN:** API密钥,默认`moviepilot`,在媒体服务器Webhook、微信回调等地址配置中需要加上`?token=`该值,建议修改为复杂字符串 - **BIG_MEMORY_MODE:** 大内存模式,默认为`false`,开启后会增加缓存数量,占用更多的内存,但响应速度会更快 +- **DOH_ENABLE:** DNS over HTTPS开关,`true`/`false`,默认`true`,开启后会使用DOH对api.themoviedb.org等域名进行解析,以减少被DNS污染的情况,提升网络连通性 - **META_CACHE_EXPIRE:** 元数据识别缓存过期时间(小时),数字型,不配置或者配置为0时使用系统默认(大内存模式为7天,否则为3天),调大该值可减少themoviedb的访问次数 - **GITHUB_TOKEN:** Github token,提高自动更新、插件安装等请求Github Api的限流阈值,格式:ghp_**** - **DEV:** 开发者模式,`true`/`false`,默认`false`,开启后会暂停所有定时任务 diff --git a/app/core/config.py b/app/core/config.py index 0646dc3a..69eb340c 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -234,6 +234,8 @@ class Settings(BaseSettings): AUTO_UPDATE_RESOURCE: bool = True # 元数据识别缓存过期时间(小时) META_CACHE_EXPIRE: int = 0 + # 是否启用DOH解析域名 + DOH_ENABLE: bool = True @validator("SUBSCRIBE_RSS_INTERVAL", "COOKIECLOUD_INTERVAL", diff --git a/app/helper/doh.py b/app/helper/doh.py index 67747e6b..88dc4ff1 100644 --- a/app/helper/doh.py +++ b/app/helper/doh.py @@ -12,6 +12,7 @@ import urllib import urllib.request from typing import Dict, Optional +from app.core.config import settings from app.log import logger # 定义一个全局集合来存储注册的主机 @@ -71,8 +72,9 @@ def _patched_getaddrinfo(host, *args, **kwargs): # 对 socket.getaddrinfo 进行补丁 -_orig_getaddrinfo = socket.getaddrinfo -socket.getaddrinfo = _patched_getaddrinfo +if settings.DOH_ENABLE: + _orig_getaddrinfo = socket.getaddrinfo + socket.getaddrinfo = _patched_getaddrinfo def _doh_query(resolver: str, host: str) -> Optional[str]: diff --git a/config/app.env b/config/app.env index d86a73a0..ba4f15f5 100644 --- a/config/app.env +++ b/config/app.env @@ -11,6 +11,8 @@ DEV=false SUPERUSER=admin # 大内存模式,开启后会增加缓存数量,但会占用更多内存 BIG_MEMORY_MODE=false +# 是否启用DOH域名解析,启用后对于api.themovie.org等域名通过DOH解析,避免域名DNS被污染 +DOH_ENABLE=true # 元数据识别缓存过期时间,数字型,单位小时,0为系统默认(大内存模式为7天,滞则为3天),调大该值可减少themoviedb的访问次数 META_CACHE_EXPIRE=0 # 自动检查和更新站点资源包(索引、认证等)