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;
}
?>