This commit is contained in:
David Heinemeier Hansson
2026-05-17 20:47:23 +02:00
parent 04d3170e07
commit c6917585cd
+11 -51
View File
@@ -6,26 +6,6 @@
set -euo pipefail set -euo pipefail
provider_from_arg() {
case "${1:-}" in
Cloudflare | cloudflare)
echo "Cloudflare"
;;
Google | google)
echo "Google"
;;
DHCP | dhcp)
echo "DHCP"
;;
Custom | custom)
echo "Custom"
;;
*)
return 1
;;
esac
}
current_dns_provider() { current_dns_provider() {
local dns="" local dns=""
local compact="" local compact=""
@@ -53,27 +33,10 @@ current_dns_provider() {
fi fi
} }
self_path() {
local self="${BASH_SOURCE[0]}"
if [[ $self != /* ]]; then
self=$(command -v -- "$self")
fi
readlink -f "$self"
}
require_root() { require_root() {
if (( EUID == 0 )); then if (( EUID != 0 )); then
return exec pkexec omarchy-dns "$@"
fi fi
if ! command -v pkexec >/dev/null; then
echo "Error: pkexec is required to change DNS settings." >&2
exit 1
fi
exec pkexec "$(self_path)" "$@"
} }
lock_dns_to_resolved() { lock_dns_to_resolved() {
@@ -104,7 +67,6 @@ unlock_dns_to_dhcp() {
} }
usage() { usage() {
echo "Usage: omarchy-dns [Cloudflare|Google|DHCP|Custom]" >&2
} }
if (( $# == 0 )); then if (( $# == 0 )); then
@@ -112,20 +74,11 @@ if (( $# == 0 )); then
exit 0 exit 0
fi fi
if (( $# > 1 )); then provider="$1"
usage
exit 1
fi
if ! provider=$(provider_from_arg "$1"); then
usage
exit 1
fi
require_root "$provider"
case "$provider" in case "$provider" in
Cloudflare) Cloudflare)
require_root "$provider"
tee /etc/systemd/resolved.conf >/dev/null <<'EOF' tee /etc/systemd/resolved.conf >/dev/null <<'EOF'
[Resolve] [Resolve]
DNS=1.1.1.1#cloudflare-dns.com 1.0.0.1#cloudflare-dns.com 2606:4700:4700::1111#cloudflare-dns.com 2606:4700:4700::1001#cloudflare-dns.com DNS=1.1.1.1#cloudflare-dns.com 1.0.0.1#cloudflare-dns.com 2606:4700:4700::1111#cloudflare-dns.com 2606:4700:4700::1001#cloudflare-dns.com
@@ -136,6 +89,7 @@ EOF
;; ;;
Google) Google)
require_root "$provider"
tee /etc/systemd/resolved.conf >/dev/null <<'EOF' tee /etc/systemd/resolved.conf >/dev/null <<'EOF'
[Resolve] [Resolve]
DNS=8.8.8.8#dns.google 8.8.4.4#dns.google 2001:4860:4860::8888#dns.google 2001:4860:4860::8844#dns.google DNS=8.8.8.8#dns.google 8.8.4.4#dns.google 2001:4860:4860::8888#dns.google 2001:4860:4860::8844#dns.google
@@ -146,6 +100,7 @@ EOF
;; ;;
DHCP) DHCP)
require_root "$provider"
tee /etc/systemd/resolved.conf >/dev/null <<'EOF' tee /etc/systemd/resolved.conf >/dev/null <<'EOF'
[Resolve] [Resolve]
DNSOverTLS=no DNSOverTLS=no
@@ -154,6 +109,7 @@ EOF
;; ;;
Custom) Custom)
require_root "$provider"
echo "Enter your DNS servers (space-separated, e.g. '192.168.1.1 1.1.1.1'):" echo "Enter your DNS servers (space-separated, e.g. '192.168.1.1 1.1.1.1'):"
if ! read -r dns_servers; then if ! read -r dns_servers; then
dns_servers="" dns_servers=""
@@ -171,6 +127,10 @@ FallbackDNS=9.9.9.9#dns.quad9.net 149.112.112.112#dns.quad9.net 2620:fe::fe#dns.
EOF EOF
lock_dns_to_resolved lock_dns_to_resolved
;; ;;
*)
echo "Usage: omarchy-dns [Cloudflare|Google|DHCP|Custom]" >&2
exit 1
;;
esac esac
systemctl restart systemd-networkd systemd-resolved systemctl restart systemd-networkd systemd-resolved