mirror of
https://github.com/telekom-security/tpotce.git
synced 2025-05-05 06:38:51 +00:00
116 lines
3 KiB
Bash
116 lines
3 KiB
Bash
![]() |
#!/usr/bin/env bash
|
||
|
myTPOT_CONF_FILE=/data/.env
|
||
|
|
||
|
# Read WEB_USER from file
|
||
|
WEB_USER=$(grep "^WEB_USER=" "${myTPOT_CONF_FILE}" | sed 's/^WEB_USER=//g' | tr -d "\"'")
|
||
|
|
||
|
myPW=$(cat << "EOF"
|
||
|
__ __ _ _ _ [ T-Pot ]
|
||
|
\ \ / /__| |__ | | | |___ ___ _ __
|
||
|
\ \ /\ / / _ \ '_ \| | | / __|/ _ \ '__|
|
||
|
\ V V / __/ |_) | |_| \__ \ __/ |
|
||
|
\_/\_/ \___|_.__/ \___/|___/\___|_|
|
||
|
EOF
|
||
|
)
|
||
|
|
||
|
# Generate T-Pot WebUser
|
||
|
echo "$myPW"
|
||
|
echo
|
||
|
echo "### This script will ask for and create T-Pot web users."
|
||
|
echo
|
||
|
|
||
|
# Preparing web user for T-Pot
|
||
|
echo
|
||
|
echo "### T-Pot User Configuration ..."
|
||
|
echo
|
||
|
# Asking for web user name
|
||
|
myWEB_USER=""
|
||
|
while [ 1 != 2 ];
|
||
|
do
|
||
|
myOK=""
|
||
|
read -rp "### Enter your web user name: " myWEB_USER
|
||
|
myWEB_USER=$(echo $myWEB_USER | tr -cd "[:alnum:]_.-")
|
||
|
echo "### Your username is: ${myWEB_USER}"
|
||
|
while [[ ! "${myOK}" =~ [YyNn] ]];
|
||
|
do
|
||
|
read -rp "### Is this correct? (y/n) " myOK
|
||
|
done
|
||
|
if [[ "${myOK}" =~ [Yy] ]] && [ "$myWEB_USER" != "" ];
|
||
|
then
|
||
|
break
|
||
|
else
|
||
|
echo
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
# Asking for web user password
|
||
|
myWEB_PW="pass1"
|
||
|
myWEB_PW2="pass2"
|
||
|
mySECURE=0
|
||
|
myOK=""
|
||
|
while [ "${myWEB_PW}" != "${myWEB_PW2}" ] && [ "${mySECURE}" == "0" ]
|
||
|
do
|
||
|
echo
|
||
|
while [ "${myWEB_PW}" == "pass1" ] || [ "${myWEB_PW}" == "" ]
|
||
|
do
|
||
|
read -rsp "### Enter password for your web user: " myWEB_PW
|
||
|
echo
|
||
|
done
|
||
|
read -rsp "### Repeat password you your web user: " myWEB_PW2
|
||
|
echo
|
||
|
if [ "${myWEB_PW}" != "${myWEB_PW2}" ];
|
||
|
then
|
||
|
echo "### Passwords do not match."
|
||
|
myWEB_PW="pass1"
|
||
|
myWEB_PW2="pass2"
|
||
|
fi
|
||
|
mySECURE=$(printf "%s" "$myWEB_PW" | /usr/sbin/cracklib-check | grep -c "OK")
|
||
|
if [ "$mySECURE" == "0" ] && [ "$myWEB_PW" == "$myWEB_PW2" ];
|
||
|
then
|
||
|
while [[ ! "${myOK}" =~ [YyNn] ]];
|
||
|
do
|
||
|
read -rp "### Keep insecure password? (y/n) " myOK
|
||
|
done
|
||
|
if [[ "${myOK}" =~ [Nn] ]] || [ "$myWEB_PW" == "" ];
|
||
|
then
|
||
|
myWEB_PW="pass1"
|
||
|
myWEB_PW2="pass2"
|
||
|
mySECURE=0
|
||
|
myOK=""
|
||
|
fi
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
# Write username and password to T-Pot config file
|
||
|
echo "### Creating base64 encoded htpasswd username and password for T-Pot config file: ${myTPOT_CONF_FILE}"
|
||
|
myWEB_USER_ENC=$(htpasswd -b -n "${myWEB_USER}" "${myWEB_PW}")
|
||
|
myWEB_USER_ENC_B64=$(echo -n "${myWEB_USER_ENC}" | base64 -w0)
|
||
|
|
||
|
# Add the new web user
|
||
|
if [ "${WEB_USER}" == "" ];
|
||
|
then
|
||
|
WEB_USER="${myWEB_USER_ENC_B64}"
|
||
|
else
|
||
|
WEB_USER="${WEB_USER} ${myWEB_USER_ENC_B64}"
|
||
|
fi
|
||
|
sed -i "s|^WEB_USER=.*|WEB_USER=${WEB_USER}|" ${myTPOT_CONF_FILE}
|
||
|
|
||
|
# Done
|
||
|
echo
|
||
|
echo "### The following users are now configured in the .env:"
|
||
|
echo
|
||
|
for i in ${WEB_USER};
|
||
|
do
|
||
|
if [[ -n $i ]];
|
||
|
then
|
||
|
# Need to control newlines as they kept coming up for some reason
|
||
|
echo -n "$i" | base64 -d -w0 | tr -d '\n'; echo -n " => [$i]";
|
||
|
echo
|
||
|
fi
|
||
|
done
|
||
|
echo
|
||
|
echo "### You can remove them by opening the .env and adjust the WEB_USER entry."
|
||
|
echo
|
||
|
echo "### Done."
|
||
|
echo
|