|
|
|
|
|
by melomac
876 days ago
|
|
Lovely, made a fish shell function out of it: # https://www.petefreitag.com/blog/dns-over-https/
function dnsq --description "Query DNS name(s) over HTTPs using JSON"
argparse --ignore-unknown 'h/help' 'd/dns=' 'n/name=+' 't/type=+' -- $argv
if set -q _flag_help
echo "Usage: $_ example.com"
echo ' -n --name DNS query name(s)'
echo ' -t --type DNS query type(s), ex: A (default), MX, TXT...'
echo ' -d --dns DNS query endpoint: cloudflare (default), google'
echo ' -h --help Print this help message and exit'
return 0
end
if not set -q _flag_name && test (count $argv) -eq 0
echo 'Missing name parameter.'
return 1
end
if not set -q _flag_type
set _flag_type 'A'
end
switch $_flag_dns
case 'google'
set url 'https://dns.google/resolve'
case 'cloudflare' '*'
set url 'https://cloudflare-dns.com/dns-query'
end
for type in $_flag_type
for name in $_flag_name $argv
set query (string join '&' (string join '=' 'name' $name) (string join '=' 'type' $type))
if isatty stdout && type -q jq
curl --header 'Accept: application/dns-json' --silent (string join '?' $url $query) | jq -r
else
curl --header 'Accept: application/dns-json' --silent (string join '?' $url $query)
end
end
end
end
|
|