Current File : //root/panel/modules/migration/code/cpanel_backup_checking.php
<?php
include "/etc/sentora/panel/modules/migration/code/xmlapi.php";
include "/etc/sentora/panel/cnf/db.php";
$servername = $host;
$username = $user;
$password = $pass;
$dbname = $dbname;
$dbhandle = mysqli_connect($servername, $username, $password, $dbname) or die("Unable to connect to MySQL");

// $select_query = "SELECT * FROM cpanel_migration_process WHERE `backup_status` = 0 AND restore_status = 0";
$select_query = "select * from vps_migration_process where (flag='download' && backup_status='0') OR (flag='migrate' && restore_status='0')";

$result = mysqli_query($dbhandle,$select_query);
while($data = mysqli_fetch_object($result))
{
	if($data->backup_status==0)
	{
		//$domain_name 		= $data->domain;
		$server_ip		= $data->ip_address;
		$cpanel_account 	= $data->username;
		$cpanel_password 	= $data->password;
		$process_id 		= $data->id;
		// $username_change_status = $data->username_change_statuschatbot_cpanel_migration;
		// $our_cpanel_user_name = $data->our_cpanel_user_name;
		$username = $data->username;
		$user_registered_email_id = $data->user_registered_email_id;
		$process_table_backup_file_name = $data->backup_file_name;
		//$source_server_ip = getIPAddressFromHostname("$domain_name");
		// echo "Check for the domain $domain_name, with cPanel user name $cpanel_account\n\n";	
		//$client_side_res = cpanel_backup_size_checking_with_client_side($source_server_ip, $cpanel_account, $cpanel_password);
		$client_side_res = cpanel_backup_size_checking_with_client_side($server_ip, $cpanel_account, $cpanel_password, $process_table_backup_file_name);
		$client_backup_file_name = $client_side_res;
		if($client_side_res == null)
		{

			$update_query = "update vps_migration_process set  backup_status='1' where id='".$process_id."'";
			$update_result = mysqli_query($dbhandle,$update_query);
			if($data->flag=='migrate' )
			{
				$process_table_backup_file_name = $data->backup_file_name;
				$process_id 		= $data->id;
				$create_user    	= $data->create_user;
				removeFTPUser($data->ftp_user);
				restore_cpanel_backup($process_table_backup_file_name,$create_user,$process_id);
			}
			
		}
		else
		{
			echo "Backup process not yet completed. \n";
		}
	}
	// echo $data->backup_status.$data->flag.$data->restore_status;
	if($data->backup_status=='1' && $data->flag=='migrate' && $data->restore_status=='0')
	{

		// echo "Came here";	
		// "/etc/sentora/panel/restoreclient.php $filename $username $process_id";
		$process_table_backup_file_name = $data->backup_file_name;
		$process_id 		= $data->id;
		$create_user    	= $data->create_user;
		removeFTPUser($data->ftp_user);
		restore_cpanel_backup($process_table_backup_file_name,$create_user,$process_id);
	}
}

// echo "There are no records found....sleeping\n" ;
function restore_cpanel_backup($filename,$c_username,$process_id)
{
	include "/etc/sentora/panel/cnf/db.php";
	$servername = $host;
	$username = $user;
	$password = $pass;
	$dbname = $dbname;
	$dbhandle = mysqli_connect($servername, $username, $password,$dbname) or die("Unable to connect to MySQL");
	$update_query = "UPDATE vps_migration_process SET restore_status='-1' WHERE id = '$process_id'";
	$result = mysqli_query($dbhandle,$update_query);
	$get_screen_path=shell_exec("whereis screen | awk '{print $2}'");
	$get_screen_path=str_replace("\n","",$get_screen_path);
	$get_screen_path=str_replace('\n',"",$get_screen_path);
	$get_sh_path=shell_exec("whereis bash | awk '{print $2}'");
	$get_sh_path=str_replace("\n","",$get_sh_path);
	$get_sh_path=str_replace('\n',"",$get_sh_path);
	$get_wget_path=shell_exec("whereis wget | awk '{print $2}'");
	$get_wget_path=str_replace("\n","",$get_wget_path);
	$get_wget_path=str_replace('\n',"",$get_wget_path);
	$get_php_path=shell_exec("whereis php | awk '{print $2}'");
	$get_php_path=str_replace("\n","",$get_php_path);
	$get_php_path=str_replace('\n',"",$get_php_path);

	$cmd="$get_php_path /etc/sentora/panel/modules/migration/code/restoreclient.php $filename $c_username $process_id";
	echo "$cmd \n";
	$scren_name="migration_".$username."_".$process_id;
	echo "$get_screen_path -d -m -S $scren_name $get_sh_path -c ' $cmd '";
	$output=shell_exec("$get_screen_path -d -m -S $scren_name $get_sh_path -c ' $cmd '");
}


function removeFTPUser($F_username)
{
	include('/etc/sentora/panel/cnf/db.php');
	$z_db_user = $user;
	$z_db_pass = $pass;
	$dbname="sentora_proftpd";
	$dbhandle = mysqli_connect("localhost", $z_db_user, $z_db_pass,$dbname) or die("Unable to connect to MySQL");

	// $select_query = "SELECT * FROM cpanel_migration_process WHERE `backup_status` = 0 AND restore_status = 0";
       /* $select_query = "select * from vps_migration_process where (flag='download' && backup_status='0') OR (flag='migrate' && restore_status='0')";
	$result = mysqli_query($select_query);
	try {
		$ftp_db = new db_driver("mysql:host=" . $host . ";dbname=$ftp_db_name", $z_db_user, $z_db_pass);
	} catch (PDOException $e) {
	} */
	mysqli_query($dbhandle,"DELETE FROM ftpquotalimits where name='".$F_username."'");
       // $sql->execute();
	mysqli_query($dbhandle,"DELETE FROM ftpuser where userid='".$F_username."'");
       //  $sql->execute();
}


function backup_completed($process_id, $backup_file_name, $domain_name, $cpanel_account, $server_ip, $cpanel_password, $username_change_status, $username, $user_registered_email_id, $our_cpanel_user_name)
{
	//$backup_link = download_link_backup($backup_file_name);
	$created_date = date("Y-m-d H:i:s");
	$update_query = "UPDATE `cpanel_migration_process` SET backup_status = 1, `timestamp` = '$created_date', `backup_download_link` = '$backup_link' WHERE id = $process_id";
	$result = mysqli_query($dbhandle,$update_query);
	if($result)
	{
		if($our_cpanel_user_name == '')
			$our_cpanel_user_name = $cpanel_account;
		$ret = restoreBackup($domain_name, $our_cpanel_user_name, $server_ip, $backup_file_name);
		if($ret == 'restored')
		{
			$update_query = "UPDATE `cpanel_migration_process` SET restore_status = 1, `timestamp` = '$created_date' WHERE id = $process_id";
			$result = mysqli_query($dbhandle,$update_query);
			if($result)
			{
				$sendMailStatus = sendMailtoSupport($domain_name, $server_ip, $cpanel_account, $cpanel_password);
				if($sendMailStatus)
				{
					$sendMailStatus = sendEmailToClient($username, $domain_name, $user_registered_email_id, $username_change_status);
					if($sendMailStatus)
						return 'restored';
				}
			}
		}
		else
		{
			return $ret;
		}
	}
}

function sendEmailToClient($username, $domain_name, $user_registered_email_id, $username_change_status)
{
	$cpanel_detail = null;
	if($username_change_status == 1)
	{
		$cpanel_detail = "<b>Note : We have changed your cpanel user name. Please use the below username for login in cpanel <br> Username : $username</b><br>";
	}
	$to_email = $user_registered_email_id;
	$subject = "HostinRaja - Cpanel Migrated Successfully.";	
	$body = "Dear Client
			 <br><br>
			 As per your requirement the Cpanel Migrataion process has been completed. Please change the Nameserver as per mentioned in welcome mail.<b>
			 $cpanel_detail<br> 
			 <b>Regards,<br>
			 HostingRaja Support Team.</b>";
	$from_name = "Hosting Raja";
	$from_mail = "noreply@hostingraja.in";
	$message = stripslashes(preg_replace("/(\r\n|\r)/s", "<br>", trim($body)));
	$encoding = "utf-8";
	$subject_preferences = array(
				"input-charset" => $encoding,
				"output-charset" => $encoding,
				"line-length" => 76,
				"line-break-chars" => "\r\n"
			    );

	$header = "Content-type: text/html; charset=".$encoding." \r\n";
	$header .= "From: ".$from_name." <".$from_mail."> \r\n";
	$header .= "MIME-Version: 1.0 \r\n";
	$header .= "Content-Transfer-Encoding: 8bit \r\n";
	//$header .= "Date: ".date("r (T)")." \r\n";
	$header .= iconv_mime_encode("Subject", $subject, $subject_preferences);
	if(mail($to_email, $subject, $message, $header))
	{
			echo "Mail has been sent to user registered Email id. \n";
	    return true;
	}
}


function sendMailtoSupport($domain_name, $server_ip, $cpanel_account, $cpanel_password)
{
	$subject = "HostingRaja - AISA Restored for the Domain $domain_name";
	$body = "Dear Technical Team, 
			<br><br>
			AISA successfully restored the cPanel Migration for the domain <b>$domain_name</b><br>
			Mail has been sent to user registered Email id.<br>
			The server IP : <b>$server_ip</b>
			cPanel Account Name : <b>$cpanel_account</b>
			cPanel Password : <b>$cpanel_password</b>
			<b>Note: Once you changed A record Nameserver come to AISA and update status by using (Migrate status)
			<br>thanks & Regards,";
	$to_email = 'support@hostingraja.in';
	$from_name = "Hosting Raja";
	$from_mail = "noreply@hostingraja.in";
	$message = stripslashes(preg_replace("/(\r\n|\r)/s", "<br>", trim($body)));
	$encoding = "utf-8";
	$subject_preferences = array(
			"input-charset" => $encoding,
			"output-charset" => $encoding,
			"line-length" => 76,
			"line-break-chars" => "\r\n"
		    );

	$header = "Content-type: text/html; charset=".$encoding." \r\n";
	$header .= "From: ".$from_name." <".$from_mail."> \r\n";
	$header .= "MIME-Version: 1.0 \r\n";
	$header .= "Content-Transfer-Encoding: 8bit \r\n";
	//$header .= "Date: ".date("r (T)")." \r\n";
	$header .= iconv_mime_encode("Subject", $subject, $subject_preferences);
	if(mail($to_email, $subject, $message, $header))
	{
    		return true;
	}
}

function restoreBackup($domain_name, $our_cpanel_user_name, $server_ip, $backup_file_name)
{
	$input = "migrate_cpanel_backup $our_cpanel_user_name $backup_link $domain_name $backup_file_name";
	$res = connectSocketServer($input, $server_ip);
	$res = trim($res);
	if($res == 'restored')
	{
	    	$return = 'restored';
	}
	else
	{
	    	$return = "Your backup has restore failed.";
	}
	return $return;
}

function process_table_backup_file_name_update($client_backup_file_name, $process_id)
{
	$update_query = "UPDATE cpanel_migration_process SET `backup_file_name` = '$client_backup_file_name' WHERE id = $process_id";
	$result = mysqli_query($dbhandle,$update_query);
	if($result)
	{
		return true;
	}
}

function cpanel_backup_size_checking_with_client_side($source_server_ip, $cpanel_account, $cpanel_password,$get_backup_file)
{
	// Credentials for cPanel account
	$xmlapi = new xmlapi($source_server_ip);
	$xmlapi->password_auth($cpanel_account,$cpanel_password);
	$xmlapi->set_port('2082');
	//$xmlapi->set_debug(1);
	$list_backups   = $xmlapi->api1_query($cpanel_account ,'Fileman', 'listfullbackups'); // Call the function.
	$backup_list    = json_decode($list_backups);
	$backup_lists   = $backup_list->data->result;
	$backup_list_arr= array_filter(explode('</div>', $backup_lists));
	print_r($backup_list_arr);
	foreach($backup_list_arr as $backup) 
	{
		$backup = trim(strip_tags($backup));
		$backup_file    = explode(' ', $backup);
		$backup_file    = $backup_file[0];
		$file_ext = pathinfo($backup_file, PATHINFO_EXTENSION);
		// if($file_ext == 'gz') 
		if($backup_file == $get_backup_file)
		{
			echo $backup_file." Backup is going on \n";
			return $backup_file;
		} 
	}
	return null;
}
?>