File: //bigscoots/wpo_json.sh
#!/bin/bash
PATH=/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
source /bigscoots/includes/common.sh
BSPATH=/root/.bigscoots
WPCLIFLAGS="--allow-root --skip-plugins --skip-themes --require=/bigscoots/includes/err_report.php"
function SLACK() {
local message="$1"
bash /bigscoots/general/slack.sh "#wpo-alerts" ":warning: *WPO JSON*\n*Hostname:* $(hostname)\n *Server IP:* ${serverip}\n *Message:* ${message}"
}
function REINSTALL_PHPMYADMIN {
rm -rf /usr/local/nginx/html/*_mysqladmin*
rm -rf /root/tools/phpmyadmin_update.sh
rm -rf /usr/local/nginx/conf/conf.d/phpmyadmin_ssl.conf
rm -rf /usr/local/nginx/conf/php_*_mysqladmin*.conf
rm -rf /usr/local/nginx/conf/phpfpmd/phpfpm_myadmin.conf
rm -rf /usr/local/nginx/conf/htpassphpmyadmin
rm -rf /usr/local/nginx/conf/phpmyadmin_https.conf
rm -rf /usr/local/nginx/conf/phpmyadmin.conf
rm -rf /usr/local/nginx/conf/phpmyadmin_check
rm -rf /root/centminlogs/centminmod_phpmyadmin_install_*.log
sed -i '/include \/usr\/local\/nginx\/conf\/phpmyadmin.conf;'/d /usr/local/nginx/conf/conf.d/virtual.conf
bash /bigscoots/wpo/extras/phpmyadmin.sh install
check_nginx_and_update_http2
}
{
if [ ! -d "${BSPATH}" ]
then
mkdir -p "$BSPATH"
touch "$BSPATH"/backupinfo
fi
if [ -f /proc/vz/veinfo ]
then
if grep -q bkuser= "${BSPATH}"/backupinfo
then
BKUSER=$(grep bkuser= "${BSPATH}"/backupinfo | sed 's/=/ /g' | awk '{print $2}')
else
BKUSER=wpo$(awk '{print $1}' /proc/vz/veinfo)
fi
elif [[ ${HOSTNAME} =~ bigscoots-wpo.com ]]
then
BKUSER=wpo$(hostname -s)
else
BKUSER=wpo"${HOSTNAME//./}"
fi
if ! grep -q bkuser= "${BSPATH}"/backupinfo
then
echo bkuser="${BKUSER}" >> "${BSPATH}"/backupinfo
fi
PHPMYADMINLOGS=$(ls -1 /root/centminlogs/centminmod_phpmyadmin_install_*.log 2>/dev/null| wc -l)
PHPMYADMININSTALLS=$(ls -1 /usr/local/nginx/html/ 2>/dev/null |grep mysqladmin | wc -l)
if [ "$PHPMYADMINLOGS" == 0 ] || [ "$PHPMYADMINLOGS" -gt 1 ] || [ "$PHPMYADMININSTALLS" == 0 ] || [ "$PHPMYADMININSTALLS" -gt 1 ]
then
rm -rf /usr/local/nginx/html/*mysqladmin* /usr/local/nginx/conf/phpmyadmin_check /root/centminlogs/centminmod_phpmyadmin_*.log /usr/local/nginx/conf/conf.d/phpmyadmin_ssl.conf
/bigscoots/wpo/extras/phpmyadmin.sh install
sed -i 's/#include \/usr\/local\/nginx\/conf\/php.conf/include \/usr\/local\/nginx\/conf\/php.conf/g' /usr/local/nginx/conf/conf.d/phpmyadmin_ssl.conf
check_nginx_and_update_http2
fi < /dev/null > /dev/null 2>&1
if grep -q wpo-template.bigscoots-wpo.com /usr/local/nginx/conf/conf.d/virtual.conf ; then
sed -i "s/wpo-template.bigscoots-wpo.com/${HOSTNAME}/g" /usr/local/nginx/conf/conf.d/virtual.conf
nginx -t > /dev/null 2>&1
if [ $? -eq 0 ]; then
npreload > /dev/null 2>&1
else
nginx -t 2>&1 | mail -s "WPO URGENT - Nginx conf fail during updating /usr/local/nginx/conf/conf.d/virtual.conf to replace hostname - $HOSTNAME" [email protected]
fi
fi < /dev/null > /dev/null 2>&1
json_output="["
if [ -n "$1" ]
then
domain=$1
domains=("$domain")
else
domains=($(find /home/nginx/domains/ -maxdepth 1 -mindepth 1 -type d ! -name ".*" -name "*.*" -printf '%f\n'))
fi
for domain in "${domains[@]}"
do
if [ -f /root/.bigscoots/creds/phpmyadmin.creds ] && [[ $(grep -c phpmyadmin_ /root/.bigscoots/creds/phpmyadmin.creds) -eq 3 ]]
then
pmacreds=/root/.bigscoots/creds/phpmyadmin.creds
pma_url=https://"$HOSTNAME"/$(awk -F': ' '/phpmyadmin_dirname/{print $2}' "$pmacreds")
pma_user=$(awk -F': ' '/phpmyadmin_username/{print $2}' "$pmacreds")
pma_pass=$(awk -F': ' '/phpmyadmin_password/{print $2}' "$pmacreds")
else
pma_path=$(echo /usr/local/nginx/html/*mysqladmin* | sed 's/\/usr\/local\/nginx\/html\///g' | head -1)
if ! [ -n "$pma_path" ] || ! grep -q "$pma_path" /root/centminlogs/centminmod_phpmyadmin_install_*.log
then
# Unable to find the phpMyAdmin path, reinstall and try again
REINSTALL_PHPMYADMIN > /dev/null 2>&1
pma_path=$(echo /usr/local/nginx/html/*mysqladmin* | sed 's/\/usr\/local\/nginx\/html\///g' | head -1)
if ! [ -n "$pma_path" ] || ! grep -q "$pma_path" /root/centminlogs/centminmod_phpmyadmin_install_*.log
then
# Failed to reinstall phpMyAdmin, send a Slack message and exit
SLACK "\`/bigscoots/wpo_json.sh\` failed even after trying to reinstall, please check manually."
exit
fi
fi
# Generate JSON with the updated $pma_path variable
pma_url="https://$HOSTNAME/$pma_path/"
pma_user=$(grep Username: $(grep -rl "$pma_path" /root/centminlogs/centminmod_phpmyadmin_install_*.log) | awk '{print $2}')
pma_pass=$(grep Password: $(grep -rl "$pma_path" /root/centminlogs/centminmod_phpmyadmin_install_*.log) | awk '{print $2}')
fi
pmadb_user=$(wp ${WPCLIFLAGS} config get DB_USER --path="/home/nginx/domains/$domain/public/")
pmadb_pass=$(wp ${WPCLIFLAGS} config get DB_PASSWORD --path="/home/nginx/domains/$domain/public/")
# Build JSON for domain
domain_json=$(cat <<EOF
{
"domain": "$domain",
"backupUser": "$bkuser",
"serverIP": "$serverip",
"phpMyAdmin": {
"url": "$pma_url",
"popupUsername": "$pma_user",
"popupPassword": "$pma_pass",
"username": "$pmadb_user",
"password": "$pmadb_pass"
}
}
EOF
)
# Add domain JSON to output
json_output+="$(echo "$domain_json" | tr -d '\n'),"
done
# Remove trailing comma and close JSON array
json_output="${json_output%,}]"
# Output JSON
if [ -n "$1" ]
then
echo "$json_output" | sed 's/\[//g ; s/\]//g'
else
echo "$json_output"
fi
} 2> /dev/nul