Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

# #-- http_user_agent.test --#
# source the master var file when it's there
[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master
# use .tpkg.var.test for in test variable passing
[ -f .tpkg.var.test ] && source .tpkg.var.test

PRE="../.."

# Query and check check that we get the correct answer from the auth_zone
query () {
	echo "> dig www.example.com."
	dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile
	if grep SERVFAIL outfile; then
		echo "> try again"
		dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile
	fi
	if grep SERVFAIL outfile; then
		echo "> try again"
		sleep 1
		dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile
	fi
	if grep SERVFAIL outfile; then
		echo "> try again"
		sleep 1
		dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile
	fi
	if grep SERVFAIL outfile; then
		echo "> try again"
		sleep 1
		dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile
	fi
	if grep SERVFAIL outfile; then
		echo "> try again"
		sleep 10
		dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile
	fi
	if grep SERVFAIL outfile; then
		echo "> try again"
		sleep 10
		dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile
	fi
	echo "> check answer"
	if grep "1.2.3.4" outfile; then
		echo "OK"
	else
		echo "Not OK"
		exit 1
	fi
}

# Reload the configuration and retransfer the zone
reload_and_retransfer () {
	echo "> Reloading Unbound"
	echo "$PRE/unbound-control -c ub.conf reload"
	$PRE/unbound-control -c ub.conf reload
	if test $? -ne 0; then
		echo "wrong exit value from unbound-control"
		exit 1
	fi
	echo "> Refetching example.com"
	echo "$PRE/unbound-control -c ub.conf auth_zone_transfer example.com"
	$PRE/unbound-control -c ub.conf auth_zone_transfer example.com
	if test $? -ne 0; then
		echo "wrong exit value from unbound-control"
		exit 1
	fi
}

# do the test
query
# add custom http-user-agent
echo "server: http-user-agent: customUA" >> ub.conf
reload_and_retransfer
query
# hide http-user-agent
echo "server: hide-http-user-agent: yes" >> ub.conf
reload_and_retransfer
query

echo "> cat logfiles"
cat petal.log 
cat unbound.log

# check petal.log for the correct number of occurrences.
# It should be 2 User-Agents, one being the custom.
echo "> check User-Agent occurrences"
occurrences=`grep "User-Agent:" petal.log | wc -l`
echo $occurrences
if test $occurrences -eq 2; then
	echo "OK"
else
	echo "Not OK"
	exit 1
fi
echo "> check custom User-Agent"
if grep "User-Agent: customUA" petal.log; then
	echo "OK"
else
	echo "Not OK"
	exit 1
fi

exit 0