#!/bin/sh

add_cloudflare_profile() {
	uci set      dnsproxy.preset_cloudflare='profile'
	uci set      dnsproxy.preset_cloudflare.label='Preset: Cloudflare DoH'
	uci add_list dnsproxy.preset_cloudflare.bootstrap='1.1.1.1:53'
	uci add_list dnsproxy.preset_cloudflare.bootstrap='1.0.0.1:53'
	uci add_list dnsproxy.preset_cloudflare.upstream='https://cloudflare-dns.com/dns-query'
	uci add_list dnsproxy.preset_cloudflare.fallback='https://dns.quad9.net/dns-query'
	uci set      dnsproxy.preset_cloudflare.upstream_mode='load_balance'
}

add_quad9_profile() {
	uci set      dnsproxy.preset_quad9='profile'
	uci set      dnsproxy.preset_quad9.label='Preset: Quad9 DoH'
	uci add_list dnsproxy.preset_quad9.bootstrap='9.9.9.9:53'
	uci add_list dnsproxy.preset_quad9.bootstrap='149.112.112.112:53'
	uci add_list dnsproxy.preset_quad9.upstream='https://dns.quad9.net/dns-query'
	uci add_list dnsproxy.preset_quad9.fallback='https://cloudflare-dns.com/dns-query'
	uci set      dnsproxy.preset_quad9.upstream_mode='load_balance'
}

add_google_profile() {
	uci set      dnsproxy.preset_google='profile'
	uci set      dnsproxy.preset_google.label='Preset: Google DoH'
	uci add_list dnsproxy.preset_google.bootstrap='8.8.8.8:53'
	uci add_list dnsproxy.preset_google.bootstrap='8.8.4.4:53'
	uci add_list dnsproxy.preset_google.upstream='https://dns.google/dns-query'
	uci add_list dnsproxy.preset_google.fallback='https://cloudflare-dns.com/dns-query'
	uci set      dnsproxy.preset_google.upstream_mode='load_balance'
}

add_fast_mixed_profile() {
	uci set      dnsproxy.preset_fast_mixed='profile'
	uci set      dnsproxy.preset_fast_mixed.label='Preset: Fast mixed DoH'
	uci add_list dnsproxy.preset_fast_mixed.bootstrap='1.1.1.1:53'
	uci add_list dnsproxy.preset_fast_mixed.bootstrap='9.9.9.9:53'
	uci add_list dnsproxy.preset_fast_mixed.bootstrap='8.8.8.8:53'
	uci add_list dnsproxy.preset_fast_mixed.upstream='https://cloudflare-dns.com/dns-query'
	uci add_list dnsproxy.preset_fast_mixed.upstream='https://dns.quad9.net/dns-query'
	uci add_list dnsproxy.preset_fast_mixed.fallback='https://dns.google/dns-query'
	uci set      dnsproxy.preset_fast_mixed.upstream_mode='parallel'
}

# preset
if [ -z "$(uci -q get dnsproxy.default)" ]; then
	uci -q get dnsproxy.preset_cloudflare >/dev/null || add_cloudflare_profile
	uci -q get dnsproxy.preset_quad9 >/dev/null || add_quad9_profile
	uci -q get dnsproxy.preset_google >/dev/null || add_google_profile
	uci -q get dnsproxy.preset_fast_mixed >/dev/null || add_fast_mixed_profile
	uci commit dnsproxy
	# default
	echo "config profile 'default'" >> /etc/config/dnsproxy
	echo "	option label 'Default'" >> /etc/config/dnsproxy
	sed -n "/config dnsproxy 'servers'/,/^[^\t]/{/^\t/p}" /etc/config/dnsproxy >> /etc/config/dnsproxy
fi

exit 0
