Группа :: Система/Настройка/Сеть
Пакет: openresolv
Главная Изменения Спек Патчи Исходники Загрузить Gear Bugs and FR Repocop
#!/bin/sh -u
BINDDIR=/var/lib/bind/etc
BIND_OPTIONS="$BINDDIR/resolvconf-options.conf"
BIND_ZONES="$BINDDIR/resolvconf-zones.conf"
DNSMASQ_CONF_DIR=/etc/dnsmasq.conf.d
DNSMASQ_RESOLV_CONF=/etc/resolv.conf.dnsmasq
DNSMASQ_CONF="$DNSMASQ_CONF_DIR/60-resolvconf"
### Test configs
RESOLV_CONF_1=\
'nameserver 1.2.3.4
nameserver 5.6.7.8
domain test1.domain'
RESOLV_CONF_2=\
'nameserver 127.0.0.1'
RESOLV_CONF_3=\
'nameserver 21.22.23.24
domain test3.domain
search test3_1.search test3_2.search test3_3.search'
### Expected results
EXPECTED_RESOLV_CONF_1=\
'domain test1.domain
nameserver 1.2.3.4
nameserver 5.6.7.8'
EXPECTED_DNSMASQ_RESOLV_CONF_1=\
'nameserver 1.2.3.4
nameserver 5.6.7.8'
EXPECTED_DNSMASQ_CONF_1=\
'server=/test1.domain/1.2.3.4
server=/test1.domain/5.6.7.8'
EXPECTED_BIND_OPTIONS_1=\
'forward first;
forwarders {
1.2.3.4;
5.6.7.8;
};'
EXPECTED_BIND_ZONES_1=\
'zone "test1.domain" {
type forward;
forward first;
forwarders {
1.2.3.4;
5.6.7.8;
};
};'
EXPECTED_RESOLV_CONF_2=\
'domain test1.domain
nameserver 127.0.0.1
nameserver 1.2.3.4
nameserver 5.6.7.8'
EXPECTED_DNSMASQ_RESOLV_CONF_2="$EXPECTED_DNSMASQ_RESOLV_CONF_1"
EXPECTED_DNSMASQ_CONF_2="$EXPECTED_DNSMASQ_CONF_1"
EXPECTED_BIND_OPTIONS_2="$EXPECTED_BIND_OPTIONS_1"
EXPECTED_BIND_ZONES_2="$EXPECTED_BIND_ZONES_1"
EXPECTED_RESOLV_CONF_3="$EXPECTED_RESOLV_CONF_2"
EXPECTED_DNSMASQ_RESOLV_CONF_3="$EXPECTED_DNSMASQ_RESOLV_CONF_2"
EXPECTED_DNSMASQ_CONF_3="$EXPECTED_DNSMASQ_CONF_2"
EXPECTED_BIND_OPTIONS_3="$EXPECTED_BIND_OPTIONS_2"
EXPECTED_BIND_ZONES_3="$EXPECTED_BIND_ZONES_2"
EXPECTED_RESOLV_CONF_4=\
'domain test1.domain
search test1.domain test3_1.search test3_2.search test3_3.search
nameserver 127.0.0.1
nameserver 1.2.3.4
nameserver 5.6.7.8
nameserver 21.22.23.24'
EXPECTED_DNSMASQ_RESOLV_CONF_4=\
'nameserver 1.2.3.4
nameserver 5.6.7.8
nameserver 21.22.23.24'
EXPECTED_DNSMASQ_CONF_4=\
'server=/test1.domain/1.2.3.4
server=/test1.domain/5.6.7.8
server=/test3_1.search/21.22.23.24
server=/test3_2.search/21.22.23.24
server=/test3_3.search/21.22.23.24'
EXPECTED_BIND_OPTIONS_4=\
'forward first;
forwarders {
1.2.3.4;
5.6.7.8;
21.22.23.24;
};'
EXPECTED_BIND_ZONES_4=\
'zone "test1.domain" {
type forward;
forward first;
forwarders {
1.2.3.4;
5.6.7.8;
};
};
zone "test3_1.search" {
type forward;
forward first;
forwarders {
21.22.23.24;
};
};
zone "test3_2.search" {
type forward;
forward first;
forwarders {
21.22.23.24;
};
};
zone "test3_3.search" {
type forward;
forward first;
forwarders {
21.22.23.24;
};
};'
EXPECTED_RESOLV_CONF_5="$EXPECTED_RESOLV_CONF_4"
EXPECTED_DNSMASQ_RESOLV_CONF_5="$EXPECTED_DNSMASQ_RESOLV_CONF_4"
EXPECTED_DNSMASQ_CONF_5="$EXPECTED_DNSMASQ_CONF_4"
EXPECTED_BIND_OPTIONS_5="$EXPECTED_BIND_OPTIONS_4"
EXPECTED_BIND_ZONES_5="$EXPECTED_BIND_ZONES_4"
EXPECTED_RESOLV_CONF_6=\
'domain test1.domain
search test1.domain test3_1.search test3_2.search test3_3.search
nameserver 127.0.0.1
nameserver 1.2.3.4
nameserver 5.6.7.8
nameserver 21.22.23.24'
EXPECTED_DNSMASQ_RESOLV_CONF_6="$EXPECTED_DNSMASQ_RESOLV_CONF_4"
EXPECTED_DNSMASQ_CONF_6="$EXPECTED_DNSMASQ_CONF_4"
EXPECTED_BIND_OPTIONS_6="$EXPECTED_BIND_OPTIONS_4"
EXPECTED_BIND_ZONES_6="$EXPECTED_BIND_ZONES_4"
EXPECTED_RESOLV_CONF_7="$EXPECTED_RESOLV_CONF_6"
EXPECTED_DNSMASQ_RESOLV_CONF_7="$EXPECTED_DNSMASQ_RESOLV_CONF_6"
EXPECTED_DNSMASQ_CONF_7="$EXPECTED_DNSMASQ_CONF_6"
EXPECTED_BIND_OPTIONS_7="$EXPECTED_BIND_OPTIONS_6"
EXPECTED_BIND_ZONES_7="$EXPECTED_BIND_ZONES_6"
EXPECTED_RESOLV_CONF_8=\
'domain test3.domain
search test3_1.search test3_2.search test3_3.search
nameserver 127.0.0.1
nameserver 21.22.23.24'
EXPECTED_DNSMASQ_RESOLV_CONF_8=\
'nameserver 21.22.23.24'
EXPECTED_DNSMASQ_CONF_8=\
'server=/test3_1.search/21.22.23.24
server=/test3_2.search/21.22.23.24
server=/test3_3.search/21.22.23.24'
EXPECTED_BIND_OPTIONS_8=\
'forward first;
forwarders {
21.22.23.24;
};'
EXPECTED_BIND_ZONES_8=\
'zone "test3_1.search" {
type forward;
forward first;
forwarders {
21.22.23.24;
};
};
zone "test3_2.search" {
type forward;
forward first;
forwarders {
21.22.23.24;
};
};
zone "test3_3.search" {
type forward;
forward first;
forwarders {
21.22.23.24;
};
};'
EXPECTED_RESOLV_CONF_9=
EXPECTED_DNSMASQ_RESOLV_CONF_9=
EXPECTED_DNSMASQ_CONF_9=
EXPECTED_BIND_OPTIONS_9=
EXPECTED_BIND_ZONES_9=
EXPECTED_RESOLV_CONF_10=\
'domain test3.domain
search test3_1.search test3_2.search test3_3.search test1.domain
nameserver 21.22.23.24
nameserver 1.2.3.4
nameserver 5.6.7.8'
EXPECTED_DNSMASQ_RESOLV_CONF_10=\
'nameserver 21.22.23.24
nameserver 1.2.3.4
nameserver 5.6.7.8'
EXPECTED_DNSMASQ_CONF_10=\
'server=/test3_1.search/21.22.23.24
server=/test3_2.search/21.22.23.24
server=/test3_3.search/21.22.23.24
server=/test1.domain/1.2.3.4
server=/test1.domain/5.6.7.8'
EXPECTED_BIND_OPTIONS_10=\
'forward first;
forwarders {
21.22.23.24;
1.2.3.4;
5.6.7.8;
};'
EXPECTED_BIND_ZONES_10=\
'zone "test3_1.search" {
type forward;
forward first;
forwarders {
21.22.23.24;
};
};
zone "test3_2.search" {
type forward;
forward first;
forwarders {
21.22.23.24;
};
};
zone "test3_3.search" {
type forward;
forward first;
forwarders {
21.22.23.24;
};
};
zone "test1.domain" {
type forward;
forward first;
forwarders {
1.2.3.4;
5.6.7.8;
};
};'
EXPECTED_RESOLV_CONF_11=\
'domain test1.domain
search test1.domain test3_1.search test3_2.search test3_3.search
nameserver 1.2.3.4
nameserver 5.6.7.8
nameserver 21.22.23.24'
EXPECTED_DNSMASQ_RESOLV_CONF_11="$EXPECTED_DNSMASQ_RESOLV_CONF_4"
EXPECTED_DNSMASQ_CONF_11="$EXPECTED_DNSMASQ_CONF_4"
EXPECTED_BIND_OPTIONS_11="$EXPECTED_BIND_OPTIONS_4"
EXPECTED_BIND_ZONES_11="$EXPECTED_BIND_ZONES_4"
###
compare_result()
{
[ -n "$1" -a -f "$1" ] &&
[ "$(sed '/^#/d' "$1")" = "$2" ]
}
check_result_resolv()
{
compare_result "$TESTDIR/etc/resolv.conf" "$1"
}
check_result_dnsmasq()
{
compare_result "$TESTDIR/$DNSMASQ_RESOLV_CONF" "$1" &&
compare_result "$TESTDIR/$DNSMASQ_CONF" "$2"
}
check_result_bind()
{
compare_result "$TESTDIR/$BIND_OPTIONS" "$1" &&
compare_result "$TESTDIR/$BIND_ZONES" "$2"
}
check_result()
{
check_result_resolv "$EXPECTED_RESOLV_CONF" &&
check_result_dnsmasq "$EXPECTED_DNSMASQ_RESOLV_CONF" "$EXPECTED_DNSMASQ_CONF" &&
check_result_bind "$EXPECTED_BIND_OPTIONS" "$EXPECTED_BIND_ZONES"
}
test_resolvconf()
{
eval "EXPECTED_RESOLV_CONF=\"\$EXPECTED_RESOLV_CONF_$1\""
eval "EXPECTED_DNSMASQ_RESOLV_CONF=\"\$EXPECTED_DNSMASQ_RESOLV_CONF_$1\""
eval "EXPECTED_DNSMASQ_CONF=\"\$EXPECTED_DNSMASQ_CONF_$1\""
eval "EXPECTED_BIND_OPTIONS=\"\$EXPECTED_BIND_OPTIONS_$1\""
eval "EXPECTED_BIND_ZONES=\"\$EXPECTED_BIND_ZONES_$1\""
echo -n "test $1: "
check_result "$1"
local ret="$?"
[ "$ret" = 0 ] && echo "OK" || echo "FAIL"
RET="$(($RET + $ret))"
return "$ret"
}
TESTDIR="$(mktemp -dt openresolv-testXXXXXXXX)"
RESOLVCONF="$TESTDIR/sbin/resolvconf"
[ -n "$TESTDIR" -a -d "$TESTDIR" ] || exit 1
[ -f ./Makefile ] || cd openresolv
./configure --prefix="$TESTDIR" --sbindir="$TESTDIR/sbin" \
--libexecdir="$TESTDIR/lib" --localstatedir="$TESTDIR/var" \
--rundir="$TESTDIR/run" \
--os=linux \
--restartcmd=true
make
make install
make clean
install -d "$TESTDIR/$BINDDIR"
install -d "$TESTDIR/$DNSMASQ_CONF_DIR"
install -d "$TESTDIR/run"
sed -i "s|=/|=$TESTDIR/|" "$TESTDIR/etc/resolvconf.conf"
# For tests list all nameservers, not only local
echo "resolv_conf_local_only=no" >>"$TESTDIR/etc/resolvconf.conf"
RET=0
echo "$RESOLV_CONF_1" | "$RESOLVCONF" -a _test1 &>/dev/null
test_resolvconf 1
echo "$RESOLV_CONF_2" | "$RESOLVCONF" -a _test2 &>/dev/null
test_resolvconf 2
echo "$RESOLV_CONF_1" | "$RESOLVCONF" -a _test3 &>/dev/null
test_resolvconf 3
echo "$RESOLV_CONF_3" | "$RESOLVCONF" -a _test4 &>/dev/null
test_resolvconf 4
"$RESOLVCONF" -d _test3 &>/dev/null
test_resolvconf 5
echo "$RESOLV_CONF_2" | "$RESOLVCONF" -a lo.test6 &>/dev/null
test_resolvconf 6
"$RESOLVCONF" -d _test2 &>/dev/null
test_resolvconf 7
"$RESOLVCONF" -d _test1 &>/dev/null
test_resolvconf 8
"$RESOLVCONF" -d lo.test6 &>/dev/null
"$RESOLVCONF" -d _test4 &>/dev/null
test_resolvconf 9
echo "$RESOLV_CONF_1" | "$RESOLVCONF" -m 10 -a _test1 &>/dev/null
echo "$RESOLV_CONF_3" | "$RESOLVCONF" -m 5 -a _test2 &>/dev/null
test_resolvconf 10
echo "$RESOLV_CONF_3" | "$RESOLVCONF" -m 15 -a _test2 &>/dev/null
test_resolvconf 11
rm -rf "$TESTDIR"
exit "$RET"