mirror of
https://github.com/thatmattlove/hyperglass.git
synced 2026-01-17 08:48:05 +00:00
add customizable dns over https provider
This commit is contained in:
parent
bba0fa6cb6
commit
707f84ae79
3 changed files with 30 additions and 2 deletions
|
|
@ -18,6 +18,7 @@ from pydantic.color import Color
|
|||
# Project Imports
|
||||
from hyperglass.configuration.models._utils import HyperglassModel
|
||||
from hyperglass.configuration.models.opengraph import OpenGraph
|
||||
from hyperglass.constants import DNS_OVER_HTTPS
|
||||
from hyperglass.constants import FUNC_COLOR_MAP
|
||||
|
||||
|
||||
|
|
@ -251,10 +252,31 @@ class Theme(HyperglassModel):
|
|||
fonts: Fonts = Fonts()
|
||||
|
||||
|
||||
class DnsOverHttps(HyperglassModel):
|
||||
"""Validation model for DNS over HTTPS resolution."""
|
||||
|
||||
name: constr(regex="|".join(DNS_OVER_HTTPS.keys())) = "cloudflare"
|
||||
|
||||
@root_validator
|
||||
def validate_dns(cls, values):
|
||||
"""Assign url field to model based on selected provider.
|
||||
|
||||
Arguments:
|
||||
values {dict} -- Dict of selected provider
|
||||
|
||||
Returns:
|
||||
{dict} -- Dict with url attribute
|
||||
"""
|
||||
provider = values["name"]
|
||||
values["url"] = DNS_OVER_HTTPS[provider]
|
||||
return values
|
||||
|
||||
|
||||
class Web(HyperglassModel):
|
||||
"""Validation model for all web/browser-related configuration."""
|
||||
|
||||
credit: Credit = Credit()
|
||||
dns_provider: DnsOverHttps = DnsOverHttps()
|
||||
external_link: ExternalLink = ExternalLink()
|
||||
font: Font = Font()
|
||||
help_menu: HelpMenu = HelpMenu()
|
||||
|
|
|
|||
|
|
@ -36,6 +36,11 @@ LOG_HANDLER_FILE = {"format": LOG_FMT, "level": "INFO"}
|
|||
|
||||
STATUS_CODE_MAP = {"warning": 400, "error": 400, "danger": 500}
|
||||
|
||||
DNS_OVER_HTTPS = {
|
||||
"google": "https://dns.google/resolve",
|
||||
"cloudflare": "https://cloudflare-dns.com/dns-query",
|
||||
}
|
||||
|
||||
CREDIT = """
|
||||
Powered by [**hyperglass**](https://github.com/checktheroads/hyperglass). Source code \
|
||||
licensed \
|
||||
|
|
|
|||
|
|
@ -13,14 +13,15 @@ const ResolvedTarget = React.forwardRef(({ fqdnTarget, setTarget, queryTarget },
|
|||
const { colorMode } = useColorMode();
|
||||
const config = useConfig();
|
||||
const labelBgStatus = { true: labelBgSuccess[colorMode], false: labelBg[colorMode] };
|
||||
const dnsUrl = config.web.dns_provider.url;
|
||||
const params4 = {
|
||||
url: "https://cloudflare-dns.com/dns-query",
|
||||
url: dnsUrl,
|
||||
params: { name: fqdnTarget, type: "A" },
|
||||
headers: { accept: "application/dns-json" },
|
||||
timeout: 1000
|
||||
};
|
||||
const params6 = {
|
||||
url: "https://cloudflare-dns.com/dns-query",
|
||||
url: dnsUrl,
|
||||
params: { name: fqdnTarget, type: "AAAA" },
|
||||
headers: { accept: "application/dns-json" },
|
||||
timeout: 1000
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue