mirror of
				https://github.com/telekom-security/tpotce.git
				synced 2025-10-31 12:32:55 +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 |