88 lines
3.2 KiB
Bash
88 lines
3.2 KiB
Bash
#########################
|
|
# THE PASSWORD FUNCTION #
|
|
#########################
|
|
|
|
function password() {
|
|
|
|
while [[ $# -gt 0 ]]
|
|
do
|
|
KEY="$1"
|
|
case $KEY in
|
|
-d|--duration) DURATION=$2 ; shift ;;
|
|
-u|--username) USERNAME=$2 ; shift ;;
|
|
-v|--view) VIEW="yes" ;;
|
|
-p|--path) DIRECTORY=$2 ; shift ;;
|
|
*) echo "$1 not implemented" ; POSIT+=("$1") ;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
DIRECTORY=${DIRECTORY:-`pwd`}
|
|
USERNAME=${USERNAME:-admin}
|
|
VIEW=${VIEW:-no}
|
|
DURATION=${DURATION:-600s}
|
|
|
|
[ -f $DIRECTORY/wp-config.php ] || echo "this isn't a wordpress installation"
|
|
[ -f $DIRECTORY/wp-config.php ] || exit 1
|
|
|
|
local DATETIME=`date +%Y%m%d.%H%M`
|
|
|
|
echo "==WPM PASSWORD CALLED ON $DATETIME WITH VERSION $WPMVERSION==" | tee -a $LOGFILE
|
|
echo "==UNIQUE IDENTIFIER $INSTANCEID==" | tee -a $LOGFILE
|
|
echo "==$INSTANCEID==Executing password on $DIRECTORY" | tee -a $LOGFILE
|
|
|
|
cd $DIRECTORY
|
|
local DATABASENAME=`grep DB_NAME wp-config.php | cut -f 2 -d ',' | cut -f 2 -d "'"`
|
|
echo "==$INSTANCEID==The DB name is $DATABASENAME" | tee -a $LOGFILE
|
|
|
|
if mysql "${DATABASENAME}" >/dev/null 2>&1 </dev/null; then
|
|
echo "==$INSTANCEID==${DATABASENAME} exists and I have perms to it" | tee -a $LOGFILE
|
|
else
|
|
echo "==$INSTANCEID==$DATABASENAME does not exist or I do not have access to it. Terminating." | tee -a $LOGFILE
|
|
exit 1
|
|
fi
|
|
|
|
if [ "$VIEW" == "yes" ]; then
|
|
echo "==$INSTANCEID==View option selected, -d and -u ignored" | tee -a $LOGFILE
|
|
try mysql $DATABASENAME -N -e "select \`user_login\` from wp_users where \`user_status\`='0';"
|
|
exit 0
|
|
fi
|
|
|
|
if mysql -e "SELECT EXISTS(SELECT 1 FROM $DATABASENAME.wp_users WHERE user_login='$USERNAME' LIMIT 1)"; then
|
|
local PREVIOUSPASSWORDHASH=`mysql $DATABASENAME -e "select user_pass from wp_users where user_login='$USERNAME' limit 1;" | grep -v grep | grep -v user_pass`
|
|
else
|
|
echo "==$INSTANCEID==The specified user $USERNAME was not found. Terminating." | tee -a $LOGFILE
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z $PREVIOUSPASSWORDHASH ];then
|
|
echo "==$INSTANCEID==Previous password is zero length?! Dying." | tee -a $LOGFILE
|
|
exit 1
|
|
fi
|
|
|
|
echo "==$INSTANCEID==Encrypted previous password $PREVIOUSPASSWORDHASH" | tee -a $LOGFILE
|
|
|
|
local PASSWORD=`openssl rand -hex 10`
|
|
printf "%b%s%b%s%b%s%b" "${RED}" "NOT LOGGED:" "${DEFAULT}" "Temporary password will be" "${CIAN}" "$PASSWORD\n" "${DEFAULT}"
|
|
|
|
try mysql -e "use $DATABASENAME; update wp_users set user_pass = MD5('$PASSWORD') where user_login='$USERNAME';"
|
|
|
|
echo "==$INSTANCEID==Temporary password has been set @ `date +%Y%m%d.%H%M`" | tee -a $LOGFILE
|
|
|
|
if [ ! -z $DURATION ] && [ ! "$DURATION" == "0" ];then
|
|
echo "==$INSTANCEID==Sleeping for $DURATION" | tee -a $LOGFILE
|
|
sleep $DURATION
|
|
elif [ "$DURATION" == "0" ]; then
|
|
echo "==$INSTANCEID==Duration is zero, password will not revert." | tee -a $LOGFILE
|
|
fi
|
|
|
|
if [ "$DURATION" != "0" ]; then
|
|
echo "==$INSTANCEID==Reverting the password." | tee -a $LOGFILE
|
|
try mysql -e "use $DATABASENAME; update wp_users set user_pass='$PREVIOUSPASSWORDHASH' where user_login='$USERNAME';"
|
|
echo "==$INSTANCEID==Password reverted @ `date +%Y%m%d.%H%M`" | tee -a $LOGFILE
|
|
fi
|
|
|
|
echo "==$INSTANCEID==Password function complete." | tee -a $LOGFILE
|
|
|
|
} # END PASSWORD
|