#!/bin/bash
SOURCE="$1"
CON="ssh -p19199 root@$SOURCE"
DELIMITER="\n-------------------------------------------------------------\n"

#COMPARE CPANEL USERS
echo -e "\n🔍 COMPARE USERS ON BOTH SERVERS, LIST MISSING USERS @ DESTINATION SERVER\n"
$CON "ls /var/cpanel/users" > source_cpanelusers.txt
ls /var/cpanel/users > dest_cpanelusers.txt

grep -Fxv -f dest_cpanelusers.txt source_cpanelusers.txt

echo -e "\nUsers @ Source: $(cat source_cpanelusers.txt | wc -l)"
echo -e "Users @ Destination: $(cat dest_cpanelusers.txt | wc -l)"
echo -e "$DELIMITER"

#COMPARE /var/lib/mysql 
echo -e "🔍 COMPARE FILESYSTEM DATABASES ON BOTH SERVERS, LIST MISSING ONES @ DESTINATION SERVER\n"
$CON 'for i in $(ls /var/cpanel/users);do stat /var/lib/mysql/"$i"_* 2>/dev/null;done' | grep File: | awk '{print $2}' > source_mysqlfs.txt
for i in $(ls /var/cpanel/users);do stat /var/lib/mysql/"$i"_* 2>/dev/null;done | grep File: | awk '{print $2}' > dest_mysqlfs.txt

grep -Fxv -f dest_mysqlfs.txt source_mysqlfs.txt

echo -e "\nDatabases @ Source: $(cat source_mysqlfs.txt | wc -l)"
echo -e "Databases @ Destination: $(cat dest_mysqlfs.txt | wc -l)"
echo -e "$DELIMITER"

#COMPARE DATABASE SIZE
echo -e "🔍 CHECK FOR EMPTY DATABASES @ DESTINATION SERVER"
echo -e "INFO: Will provide a list with databases < 10 bytes @ destination, but > 10 bytes @ source. Additional manual check will be required if there are any dbs listed here.\n"
for db in $(cat dest_mysqlfs.txt)
do
    [ "$(du -s $db | awk '{print $1}')" -le 10 ] && echo "$db"
done > dest_empty_dbs.txt

for db in $(cat dest_empty_dbs.txt)
do
    [ $($CON "du -s $db" | awk '{print $1}') -gt 10 ] && echo "$db" 
done
echo -e "$DELIMITER"

#COMPARE DATABASES IN CPANEL
echo -e "🔍 COMPARE DATABASES IN CPANEL ON BOTH SERVERS, LIST MISSING ONES @ DESTINATION SERVER"
echo -e "TIP: You can use the buildin cPanel script to rebuild the dbmap of particular user => /usr/local/cpanel/scripts/rebuild_dbmap CPUSERNAME\n"
$CON 'whmapi1 list_databases' | grep name: | awk '{print $2}' > source_mysqlcpanel.txt
whmapi1 list_databases  | grep name: | awk '{print $2}' > dest_mysqlcpanel.txt

grep -Fxv -f dest_mysqlcpanel.txt source_mysqlcpanel.txt

echo -e "\nDatabases via whmapi @ Source: $(cat source_mysqlcpanel.txt | wc -l)"
echo -e "Databases via whmapi @ Destination: $(cat dest_mysqlcpanel.txt | wc -l)"
echo -e "$DELIMITER"



#CLEAR TEMP FILES
rm -f source_cpanelusers.txt
rm -f dest_cpanelusers.txt
#
rm -f source_mysqlfs.txt
rm -f dest_mysqlfs.txt
#
rm -f dest_empty_dbs.txt
#
rm -f source_mysqlcpanel.txt
rm -f dest_mysqlcpanel.txt


