#!/bin/bash
# check that we are able to receive messages from allowed sender
# added 2019-08-19 by RGerhards, released under ASL 2.0
. ${srcdir:=.}/diag.sh init
# Note: we need to know if CI supports DNS resolution. For this, we try to access
# our rsyslog echo service. If that works, DNS obviously works. On the contrary
# if we cannot access it, DNS might still work. But we prefer to skip the test in
# that case (on rsyslog CI it will always work).
rsyslog_testbench_test_url_access http://testbench.rsyslog.com/testbench/echo-get.php
export NUMMESSAGES=5 # it's just important that we get any messages at all
generate_conf
add_conf '
module(load="../plugins/imtcp/.libs/imtcp")
input(type="imtcp" address="127.0.0.1" port="0" listenPortFileName="'$RSYSLOG_DYNNAME'.tcpflood_port" ruleset="rs")

$AllowedSender TCP,www.rsyslog.com
template(name="outfmt" type="string" string="%msg:F,58:2%\n")
ruleset(name="rs") {
	action(type="omfile" template="outfmt" file="'$RSYSLOG_DYNNAME.must-not-be-created'")
}

action(type="omfile" file="'$RSYSLOG_OUT_LOG'")
'
startup
assign_tcpflood_port $RSYSLOG_DYNNAME.tcpflood_port
tcpflood --check-only -m$NUMMESSAGES
shutdown_when_empty
wait_shutdown
content_check --regex "connection request from disallowed sender .* discarded"
check_file_not_exists "$RSYSLOG_DYNNAME.must-not-be-created"
exit_test
