Support all resolvers

This commit is contained in:
Alter Step
2014-04-21 21:59:39 -07:00
parent bdb6ba3cfe
commit 417f80be83
205 changed files with 1384 additions and 2255 deletions
@@ -22,6 +22,8 @@ mkdir -p -- "$DESCRIPTIONS_DIR" || exit 1
PID_DIR="${PROBES_BASE_DIR}/pids" || exit 1
mkdir -p -- "$PID_DIR" || exit 1
RESOLVER_NAME=$(./get-dnscrypt-resolver-name.sh) || exit 1
try_resolver() {
local priority="$1"
shift
@@ -32,14 +34,14 @@ try_resolver() {
rm -f "${RES_DIR}/${priority}"
exec alarmer 3 dnscrypt-proxy --pid="$pid_file" \
--provider-name="$PROVIDER_NAME" --provider-key="$PROVIDER_KEY" \
--resolver-name="$RESOLVER_NAME" \
--local-address="${INTERFACE_PROBES}:${priority}" $args 2>&1 | \
while read line; do
case "$line" in
*Proxying\ from\ *)
answers=$(exec dig +time=1 +short +tries=2 -p $priority \
TXT @"$INTERFACE_PROBES" debug.opendns.com. 2> /dev/null | \
fgrep -ic 'dnscrypt enabled')
@"$INTERFACE_PROBES" www.apple.com. 2> /dev/null | \
egrep -ic '^[0-9.:]+$')
[ -r "$pid_file" ] && kill $(cat -- "$pid_file")
if [ $answers -gt 0 ]; then
echo "$args" > "${RES_DIR}/${priority}"
@@ -73,49 +75,14 @@ if [ x"$DISABLE_IPV6" = "xno" ]; then
[ $? = 0 ] && ipv6_supported="yes"
fi
familyshield_wanted="no"
[ -r "$FAMILYSHIELD_FILE" ] && familyshield_wanted="yes"
wait_pids=""
if [ x"$familyshield_wanted" = "xyes" ]; then
try_resolver 4000 'FamilyShield using DNSCrypt on UDP port 443' \
"--resolver-address=208.67.220.123:443" &
wait_pids="$wait_pids $!"
try_resolver 4001 'FamilyShield using DNSCrypt on UDP port 53' \
"--resolver-address=208.67.220.123:53" &
wait_pids="$wait_pids $!"
try_resolver 4002 'FamilyShield using DNSCrypt on TCP port 443' \
"--resolver-address=208.67.220.123:443 --tcp-only" &
wait_pids="$wait_pids $!"
try_resolver 4003 'FamilyShield using DNSCrypt on TCP port 53' \
"--resolver-address=208.67.220.123:53 --tcp-only" &
wait_pids="$wait_pids $!"
fi
if [ x"$ipv6_supported" = "xyes" ]; then
try_resolver 5000 'OpenDNS IPv6 using DNSCrypt on UDP port 443' \
"--resolver-address=[2620:0:ccc::2]:443" &
wait_pids="$wait_pids $!"
try_resolver 5001 'OpenDNS IPv6 using DNSCrypt on UDP port 53' \
"--resolver-address=[2620:0:ccc::2]:53" &
wait_pids="$wait_pids $!"
try_resolver 5002 'OpenDNS IPv6 using DNSCrypt on TCP port 443' \
"--resolver-address=[2620:0:ccc::2]:443 --tcp-only" &
wait_pids="$wait_pids $!"
try_resolver 5003 'OpenDNS IPv6 using DNSCrypt on TCP port 53' \
"--resolver-address=[2620:0:ccc::2]:53 --tcp-only" &
wait_pids="$wait_pids $!"
fi
try_resolver 5004 'OpenDNS using DNSCrypt on UDP port 443' \
"--resolver-address=208.67.220.220:443" &
try_resolver 5004 "${RESOLVER_NAME} using DNSCrypt on UDP" \
"--resolver-name=$RESOLVER_NAME" &
wait_pids="$wait_pids $!"
try_resolver 5005 'OpenDNS using DNSCrypt on UDP port 53' \
"--resolver-address=208.67.220.220:53" &
wait_pids="$wait_pids $!"
try_resolver 5006 'OpenDNS using DNSCrypt on TCP port 443' \
"--resolver-address=208.67.220.220:443 --tcp-only" &
wait_pids="$wait_pids $!"
try_resolver 5007 'OpenDNS using DNSCrypt on TCP port 53' \
"--resolver-address=208.67.220.220:53 --tcp-only" &
try_resolver 5005 "${RESOLVER_NAME} using DNSCrypt on TCP" \
"--resolver-name=$RESOLVER_NAME --tcp-only" &
wait_pids="$wait_pids $!"
for pid in $wait_pids; do
@@ -136,7 +103,7 @@ fi
best_args=$(cat "${RES_DIR}/${best_file}")
eval dnscrypt-proxy $best_args --local-address="$INTERFACE_PROXY" \
--provider-name="$PROVIDER_NAME" --provider-key="$PROVIDER_KEY" \
--resolver-name="$RESOLVER_NAME" \
--pidfile="$PROXY_PID_FILE" --user=daemon --daemonize $plugin_args
if [ $? != 0 ]; then
@@ -148,7 +115,7 @@ if [ $? != 0 ]; then
killall -9 dnscrypt-proxy
sleep 1
eval dnscrypt-proxy $best_args --local-address="$INTERFACE_PROXY" \
--provider-name="$PROVIDER_NAME" --provider-key="$PROVIDER_KEY" \
--resolver-name="$RESOLVER_NAME" \
--pidfile="$PROXY_PID_FILE" --user=daemon --daemonize $plugin_args || \
exit 1
fi