Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37549753
en ru br
Репозитории ALT
S:3.12.0-alt2
5.1: 3.3.2-alt6
www.altlinux.org/Changes

Группа :: Система/Настройка/Сеть
Пакет: 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"
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin