rsyslog/tests/sndrcv_tls_certless_clientonly.sh
Rainer Gerhards 79538a20fd
testbench: add tests for "certless" tcp/tls
This adds a test to ensure that a client without certificate can
connect to a server with certificates. So it is not exactly
"certless".

The prime intent of this test is to match config suggestions given
by log hosting companies (like loggly) and so ensure that we do
not accidently break them. This is espcially important as the
capability for certless clients was not properly documented and
also become forgotten by the rsyslog team.

see also https://github.com/rsyslog/rsyslog/issues/3413
2019-01-17 14:27:28 +01:00

62 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
# all we want to test is if certless communication works. So we do
# not need to send many messages.
# This file is part of the rsyslog project, released under ASL 2.0
. ${srcdir:=.}/diag.sh init
export NUMMESSAGES=5000
# uncomment for debugging support:
#export RSYSLOG_DEBUG="debug nostdout noprintmutexaction"
export RSYSLOG_DEBUGLOG="log"
generate_conf
# receiver
export PORT_RCVR="$(get_free_port)"
add_conf '
global( defaultNetstreamDriverCAFile="'$srcdir/tls-certs/ca.pem'"
defaultNetstreamDriverCertFile="'$srcdir/tls-certs/cert.pem'"
defaultNetstreamDriverKeyFile="'$srcdir/tls-certs/key.pem'"
defaultNetstreamDriver="gtls"
)
module( load="../plugins/imtcp/.libs/imtcp"
StreamDriver.Name="gtls"
StreamDriver.Mode="1"
StreamDriver.AuthMode="anon" )
# then SENDER sends to this port (not tcpflood!)
input( type="imtcp" port="'$PORT_RCVR'" )
$template outfmt,"%msg:F,58:2%\n"
:msg, contains, "msgnum:" action(type="omfile" file="'$RSYSLOG_OUT_LOG'" template="outfmt")
'
startup
# sender
export RSYSLOG_DEBUGLOG="log2"
#valgrind="valgrind"
generate_conf 2
#export TCPFLOOD_PORT="$(get_free_port)"
add_conf '
global(defaultNetstreamDriverCAFile="'$srcdir/tls-certs/ca.pem'")
# Note: no TLS for the listener, this is for tcpflood!
$ModLoad ../plugins/imtcp/.libs/imtcp
input( type="imtcp" port="'$TCPFLOOD_PORT'" )
action( type="omfwd" protocol="tcp" target="127.0.0.1" port="'$PORT_RCVR'"
StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="anon")
' 2
startup 2
# now inject the messages into instance 2. It will connect to instance 1,
# and that instance will record the data.
tcpflood -m$NUMMESSAGES -i1
wait_file_lines
# shut down sender when everything is sent, receiver continues to run concurrently
shutdown_when_empty 2
wait_shutdown 2
# now it is time to stop the receiver as well
shutdown_when_empty
wait_shutdown
seq_check 1 $NUMMESSAGES
exit_test