blob: b2e1eb23e1ecaec01b8ef2c6c2986cd1706004b4 [file] [log] [blame]
#!/bin/sh
#
# SNMPv3 base config
#
# Input+Output variables:
# DEFSECURITYLEVEL noAuthNoPriv|authNoPriv|authPriv
# DEFAUTHTYPE MD5|SHA
# DEFPRIVTYPE DES|AES
# TESTNOAUTHUSER <myuser>
# TEST(AUTH|PRIV)USER[2] <myuser>
# TEST(AUTH|PRIV)PASS[2] <mypass>
#
# Input variables:
# CREATEUSERENGINEID <engineid>
#
# Output variables:
# CREATEAUTHUSER[2]
# CREATEPRIVUSER[2]
# CREATENOAUTHUSER
# TESTNOAUTHARGS
# TESTAUTHARGS[NOPASS][2]
# TESTPRIVARGS[NOPASS][2]
#
SKIPIFNOT NETSNMP_SECMOD_USM
## Defaults
[ "x$DEFSECURITYLEVEL" = "x" ] && DEFSECURITYLEVEL=authPriv
## auto-probe best auth type
if grep '^#define NETSNMP_USE_OPENSSL 1' $SNMP_UPDIR/include/net-snmp/net-snmp-config.h $SNMP_UPDIR/include/net-snmp/agent/mib_module_config.h > /dev/null ; then
MAXAUTHTYPE=SHA
elif grep '^#define NETSNMP_USE_INTERNAL_CRYPTO 1' $SNMP_UPDIR/include/net-snmp/net-snmp-config.h $SNMP_UPDIR/include/net-snmp/agent/mib_module_config.h > /dev/null ; then
MAXAUTHTYPE=SHA
else
# MD5 is always available internally
MAXAUTHTYPE=MD5
fi
## auto-probe best priv type
# XXX: HAVE_AES depends on cpp logic, so we need to test for lower-level stuff
if grep '^#define NETSNMP_USE_OPENSSL 1' $SNMP_UPDIR/include/net-snmp/net-snmp-config.h $SNMP_UPDIR/include/net-snmp/agent/mib_module_config.h > /dev/null; then
if grep '^#define HAVE_OPENSSL_AES_H 1' $SNMP_UPDIR/include/net-snmp/net-snmp-config.h $SNMP_UPDIR/include/net-snmp/agent/mib_module_config.h > /dev/null && \
grep '^#define HAVE_AES_CFB128_ENCRYPT 1' $SNMP_UPDIR/include/net-snmp/net-snmp-config.h $SNMP_UPDIR/include/net-snmp/agent/mib_module_config.h > /dev/null ; then
MAXPRIVTYPE=AES
else
MAXPRIVTYPE=DES
fi
elif grep '^#define NETSNMP_USE_INTERNAL_CRYPTO 1' $SNMP_UPDIR/include/net-snmp/net-snmp-config.h $SNMP_UPDIR/include/net-snmp/agent/mib_module_config.h > /dev/null; then
MAXPRIVTYPE=AES
else
MAXPRIVTYPE=""
fi
CREATEUSERCMD="createUser"
[ "x$CREATEUSERENGINEID" != "x" ] && CREATEUSERCMD="$CREATEUSERCMD -e $CREATEUSERENGINEID"
## auth setup
if [ "x$DEFSECURITYLEVEL" = "xauthPriv" -o "x$DEFSECURITYLEVEL" = "xauthNoPriv" ]; then
[ "x$MAXAUTHTYPE" = "x" ] && SKIP MAXAUTHTYPE not set
[ "x$DEFAUTHTYPE" = "xSHA" -a "x$MAXAUTHTYPE" != "xSHA" ] && SKIP Cannot do SHA
[ "x$DEFAUTHTYPE" = "x" ] && DEFAUTHTYPE=$MAXAUTHTYPE
# user/pass setup (XXX: randomize)
[ "x$TESTAUTHUSER" = "x" ] && TESTAUTHUSER=initial_auth
[ "x$TESTAUTHUSER2" = "x" ] && TESTAUTHUSER2=template_auth
[ "x$TESTAUTHPASS" = "x" ] && TESTAUTHPASS=initial_test_pass_auth
[ "x$TESTAUTHPASS2" = "x" ] && TESTAUTHPASS2=template_test_pass_auth
CREATEAUTHUSER="$CREATEUSERCMD $TESTAUTHUSER $DEFAUTHTYPE $TESTAUTHPASS"
CREATEAUTHUSER2="$CREATEUSERCMD $TESTAUTHUSER2 $DEFAUTHTYPE $TESTAUTHPASS2"
# command args
TESTAUTHARGSNOPASS="-v 3 -l anp -u $TESTAUTHUSER -a $DEFAUTHTYPE"
TESTAUTHARGSNOPASS2="-v 3 -l anp -u $TESTAUTHUSER2 -a $DEFAUTHTYPE"
TESTAUTHARGS="$TESTAUTHARGSNOPASS -A $TESTAUTHPASS"
TESTAUTHARGS2="$TESTAUTHARGSNOPASS2 -A $TESTAUTHPASS2"
fi
## priv setup
if [ "x$DEFSECURITYLEVEL" = "xauthPriv" ]; then
[ "x$MAXPRIVTYPE" = "x" ] && SKIP MAXPRIVTYPE not set
[ "x$DEFPRIVTYPE" = "xAES" -a "x$MAXPRIVTYPE" != "xAES" ] && SKIP Cannot do AES
[ "x$DEFPRIVTYPE" = "x" ] && DEFPRIVTYPE=$MAXPRIVTYPE
# user/pass setup (XXX: randomize)
[ "x$TESTPRIVUSER" = "x" ] && TESTPRIVUSER=initial_priv
[ "x$TESTPRIVUSER2" = "x" ] && TESTPRIVUSER2=template_priv
[ "x$TESTPRIVPASS" = "x" ] && TESTPRIVPASS=initial_test_pass_priv
[ "x$TESTPRIVPASS2" = "x" ] && TESTPRIVPASS2=template_test_pass_priv
CREATEPRIVUSER="$CREATEUSERCMD $TESTPRIVUSER $DEFAUTHTYPE $TESTAUTHPASS $DEFPRIVTYPE $TESTPRIVPASS"
CREATEPRIVUSER2="$CREATEUSERCMD $TESTPRIVUSER2 $DEFAUTHTYPE $TESTAUTHPASS2 $DEFPRIVTYPE $TESTPRIVPASS2"
# command args
TESTPRIVARGSNOPASS="-v 3 -l ap -u $TESTPRIVUSER -a $DEFAUTHTYPE -x $DEFPRIVTYPE"
TESTPRIVARGSNOPASS2="-v 3 -l ap -u $TESTPRIVUSER2 -a $DEFAUTHTYPE -x $DEFPRIVTYPE"
TESTPRIVARGS="$TESTPRIVARGSNOPASS -A $TESTAUTHPASS -X $TESTPRIVPASS"
TESTPRIVARGS2="$TESTPRIVARGSNOPASS2 -A $TESTAUTHPASS2 -X $TESTPRIVPASS2"
fi
## noauth setup
[ "x$TESTNOAUTHUSER" = "x" ] && TESTNOAUTHUSER=initial
TESTNOAUTHARGS="-v 3 -l nanp -u $TESTNOAUTHUSER"
CREATENOAUTHUSER="$CREATEUSERCMD $TESTNOAUTHUSER"