Search
Search
Search
Search
Information
Information
Light
Dark
Open actions menu
Basic upload method
Bypass upload method
Tips!
If you encounter an error (by firewall) while uploading using both methods,
try changing extension of the file before uploading it and rename it right after.
This uploader supports multiple file upload.
Submit
~
scripts
File Content:
backup_checking.php
<?php //error_reporting(E_ERROR | E_PARSE); include "/etc/sentora/panel/modules/whm_migration/code/xmlapi.php"; include "/etc/sentora/panel/modules/whm_migration/code/jsonapi.php"; require('/etc/sentora/panel/cnf/database.php'); include('/etc/sentora/panel/dryden/db/driver.class.php'); include('/etc/sentora/panel/dryden/debug/logger.class.php'); include('/etc/sentora/panel/dryden/runtime/dataobject.class.php'); include('/etc/sentora/panel/dryden/runtime/hook.class.php'); include('/etc/sentora/panel/dryden/sys/versions.class.php'); include('/etc/sentora/panel/dryden/ctrl/options.class.php'); include('/etc/sentora/panel/dryden/ctrl/module.class.php'); include('/etc/sentora/panel/dryden/fs/director.class.php'); include('/etc/sentora/panel/dryden/fs/filehandler.class.php'); include('/etc/sentora/panel/inc/dbc.inc.php'); $servername = $host; $username = $user; $password = $pass; $dbname = $dbname; try{ $dsn = "mysql:dbname=$dbname;$ovi_socket_path"; $zdbh = new db_driver($dsn, $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'")); $zdbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(Exception $e){ exit(); } define('WHMPIDFILE', '/var/run/migration.php.pid'); function removePidFile(){ unlink(WHMPIDFILE); } function isProcessRunning($pidFile = '/var/run/migration.php.pid'){ if (!file_exists($pidFile) || !is_file($pidFile)) return false; $pid = file_get_contents($pidFile); return $pid; } if( ($pid = isProcessRunning())){ print "Server is running! PID is $pid\n"; //get the process ID and recheck it if (file_exists("/proc/".$pid)){ echo "The server is running from proc system too" ; exit ; } else{ echo "Proc entry missing for the server" ; } } else{ print "Server NOT running!\n"; } file_put_contents(WHMPIDFILE, getmypid()); function ErrorMigrationLogfile($buffer, $encode = false){ if($encode){ $buffer = json_encode($buffer); } $whm_migration_log = "/var/sentora/logs/migration/whm_migration.log"; $date = date('Y-m-d H:i:sO'); $buffer = "[ $date ] ==> $buffer \n\n"; file_put_contents($whm_migration_log, $buffer, FILE_APPEND); } // CHECK MIGARATION IS STARTED $mig_status_file = "/tmp/migration_status.log"; if(!file_exists($mig_status_file)){ exit; } $mig_status = trim(file_get_contents($mig_status_file)); $whm_login_log = "/tmp/whm_login.log"; $PackageList_file = "/tmp/ovi_cpanel_migration_get_all_packages"; $AccountList_file = "/tmp/ovi_cpanel_migration_get_all_accounts"; $whm_migration_log = "/etc/sentora/panel/modules/whm_migration/code/whm_migration.log"; $acct_data = "/tmp/migration_acc_list.log"; $migration_user_log = "/tmp/migration_user.log"; $migration_pack_file = "/tmp/migration_pack_list.log"; $migration_restore_user = "/tmp/restore_process_user.log"; $whm_login_details = file_get_contents($whm_login_log); $whm_login_details = json_decode($whm_login_details, true); $mig_status_file_hold = $mig_status_file.".hold"; $jsonapi = new JsonAPI($whm_login_details); // MIGARATION INITED if(file_exists($mig_status_file_hold)){ $Migration_error = file_get_contents($mig_status_file_hold); ErrorMigrationLogfile($Migration_error); exit; } if($mig_status == "MIGRATION_STARTED"){ ErrorMigrationLogfile("mig_status MIGRATION_STARTED"); if(file_exists($mig_status_file_hold)){ unlink($mig_status_file_hold); } $migration_hold_datail = ""; $SelAccountListDiskObj = file_get_contents($acct_data); $SelAccountListDisk_arr = json_decode($SelAccountListDiskObj, true); $AllAccountListDiskObj = file_get_contents($AccountList_file); $AllAccountListDisk_arr = json_decode($AllAccountListDiskObj, true); $ClientMaxDisk = $ClientTotalDisk = 0; foreach($AllAccountListDisk_arr as $acct){ if(in_array($acct['user'], $SelAccountListDisk_arr)){ $clientDisk = (int)$acct['diskused']; if($ClientMaxDisk < $clientDisk){ $ClientMaxDisk = $clientDisk; } $ClientTotalDisk = $ClientTotalDisk + $clientDisk; } } $return_mgs = array("current_server_disk" => 0, "remote_server_disk" => 0, "remote_server_ssh_enable" => 0); $connection = SSHconnection($whm_login_details); if(!$connection != false){ $return_mgs["remote_server_ssh_enable"] = 1; $server_ip = $jsonapi->GetXsettingValues("server_ip"); if($server_ip){ $stream = ssh2_exec($connection, "csf -a $server_ip"); } $stream = ssh2_exec($connection, "df -m | grep '/$' | awk '{ print $4 }'"); stream_set_blocking($stream, true); $stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO); $Cpanel_Disk_mb = (int)trim(stream_get_contents($stream_out)); fclose($stream_out); fclose($stream); $return_mgs['remote_server_disk'] = $Cpanel_Disk_mb; } $Ovipanel_Disk_mb = (int)shell_exec("df -m | grep '/$' | awk '{ print $4 }'"); $return_mgs['current_server_disk'] = $Ovipanel_Disk_mb; ErrorMigrationLogfile("Ovipanel_Disk_mb $Ovipanel_Disk_mb ClientTotalDisk $ClientTotalDisk remote_server_disk ".$return_mgs['remote_server_disk']." ClientMaxDisk $ClientMaxDisk"); if($Ovipanel_Disk_mb < $ClientTotalDisk){ $migration_hold_datail = "Ovipanel server disk size $Ovipanel_Disk_mb MB, and Total Client Account Size $ClientTotalDisk MB, Due to disk issue migration Has holded"; file_put_contents($mig_status_file_hold, $migration_hold_datail); file_put_contents($mig_status_file, "MIGRATION_STARTED"); exit; } if($return_mgs['remote_server_disk'] != 0 && $return_mgs['remote_server_ssh'] != 0){ if($return_mgs['remote_server_disk'] < $ClientMaxDisk){ $migration_hold_datail = "Maximum Account disk size $ClientMaxDisk MB, and Available Client Server Disk Size $ClientTotalDisk MB, Due to disk issue migration Has holded"; file_put_contents($mig_status_file_hold, $migration_hold_datail); file_put_contents($mig_status_file, "MIGRATION_STARTED"); exit; } } $return_mgs = json_encode($return_mgs); ErrorMigrationLogfile("return_mgs $return_mgs"); file_put_contents($mig_status_file, $return_mgs); } function SSHconnection($params){ ErrorMigrationLogfile("SSHconnection"); ErrorMigrationLogfile($params, true); $remote_server_api_url = $params["remote_server_api_url"]; $remote_server_ssh_port = $params["remote_server_ssh_port"]; $remote_server_username = $params["remote_server_username"]; $remote_server_password = $params["remote_server_password"]; $serverip = parse_url($remote_server_api_url, PHP_URL_HOST); if($remote_server_username != 'root'){ return false; } if(!function_exists('ssh2_connect') || !function_exists('ssh2_auth_password')){ echo "\n ssh2_connect ssh2_auth_password function is missing \n"; return false; } ErrorMigrationLogfile("serverip $serverip remote_server_ssh_port $remote_server_ssh_port"); $connection = @ssh2_connect($serverip, $remote_server_ssh_port); if (!$connection) { return false; } ErrorMigrationLogfile("remote_server_username $remote_server_username remote_server_password $remote_server_password"); $auth =@ssh2_auth_password($connection, $remote_server_username, $remote_server_password); if(!$auth){ return false; } return $connection; } // Check Migration User Created $user_exists = trim(shell_exec("grep '^migration:' /etc/passwd | head -1 | awk -F':' '{print $1}'")); if($user_exists == "") { $getcwd =__FILE__; $input="migration_user\ncreate\n$getcwd"; $output = ctrl_module::ConnectServerSocket($input,$daemon=false,$socket_timing=10,$withresp=true); exit; } $CheckSocket = ctrl_module::SocketPortEnabledCheck(); if($CheckSocket){ echo "$mig_status CheckSocket\n"; }else{ echo "$mig_status not CheckSocket\n"; exit; } ErrorMigrationLogfile("Cron Started ".date('d F Y, h:i:s A')); // Create Packages in package files if(file_exists($migration_pack_file)){ $jsonapi->executeCreatePackage(); } // Create Account in Account files if(file_exists($acct_data)){ $CheckBackupSQL = "SELECT * FROM vps_migration_process WHERE backup_status=-1 AND migration_status!=0"; $CheckBackupSQLnrows = $zdbh->prepare($CheckBackupSQL); $CheckBackupSQLnrows->execute(); if($CheckBackupSQLnrows->rowCount() == 0){ $CheckBackupAttmpSQL = "SELECT * FROM vps_migration_process WHERE backup_status=0 AND migration_status!=0"; $CheckBackupAttmpSQLnrows = $zdbh->prepare($CheckBackupAttmpSQL); $CheckBackupAttmpSQLnrows->execute(); if($CheckBackupAttmpSQLnrows->rowCount() <> 0){ $CheckBackupAttmpData = $CheckBackupAttmpSQLnrows->fetch(PDO::FETCH_OBJ); $username = $CheckBackupAttmpData->mig_username; $params = GetUserAccountData($username); $jsonapi->executeAccountBackup($params); $BackupProgress = "UPDATE vps_migration_process SET backup_status=-1 WHERE mig_username = '$username'"; ErrorMigrationLogfile("BackupProgress $BackupProgress"); $BackupProgress = $zdbh->prepare($BackupProgress); $BackupProgress->execute(); }else{ $username = GetNextUserfromAccountList($acct_data); if($username){ $params = GetUserAccountData($username); GenrateUserAccountBackup($username); $jsonapi->executeAccountBackup($params); $BackupProgress = "UPDATE vps_migration_process SET backup_status=-1 WHERE mig_username = '$username'"; ErrorMigrationLogfile("BackupProgress $BackupProgress"); $BackupProgress = $zdbh->prepare($BackupProgress); $BackupProgress->execute(); } } }else{ $data = $CheckBackupSQLnrows->fetch(PDO::FETCH_OBJ); $mig_username = $data->mig_username; $time = $data->timestamp; $backup_attempted = $data->backup_attempted; $client_backup_file_name = trim(cpanelBackupStatusCheck($mig_username)); if($client_backup_file_name){ $UdateAcctSQL = "UPDATE vps_migration_process SET backup_status=1,flag='backup completed',backup_file_name='$client_backup_file_name',timestamp=now() WHERE mig_username = '$mig_username'"; $UdateAcctSQLnrows = $zdbh->prepare($UdateAcctSQL); $UdateAcctSQLnrows->execute(); }else{ $backup_progress = false; if($mig_status != "MIGRATION_STARTED"){ ErrorMigrationLogfile("Check Backup progressing..."); $mig_status = json_decode($mig_status, true); $remote_server_ssh_enable = $mig_status['remote_server_ssh_enable']; if($remote_server_ssh_enable == 1){ ErrorMigrationLogfile("remote_server_ssh_enable $remote_server_ssh_enable"); $connection = SSHconnection($whm_login_details); if($connection){ $cmd = "ps aux | grep 'pkgacct' | grep '$mig_username'"; $stream = ssh2_exec($connection, $cmd); stream_set_blocking($stream, true); $stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO); $pkgacct_process = trim(stream_get_contents($stream_out)); $pkgacct_process = explode("\n", $pkgacct_process); fclose($stream_out); fclose($stream); if(count($pkgacct_process) > 2){ $backup_progress = true; } } } } if($backup_progress == false){ ErrorMigrationLogfile("$mig_username backup initied at ".date("F j, Y, g:i a",strtotime($time))); $time = strtotime($time); $ct_time = time(); $plus1htime = $time + 3600; if($plus1htime < $ct_time){ ErrorMigrationLogfile("$mig_username backup process is goind on more that 1 hour"); if($backup_attempted > 4){ ErrorMigrationLogfile("$mig_username is more than $backup_attempted attempt"); $BackupFailedSQL = "UPDATE vps_migration_process SET backup_status=1,flag='backup failed',migration_status=0 WHERE mig_username = '$mig_username'"; ErrorMigrationLogfile("BackupFailedSQL $BackupFailedSQL"); $BackupFailedSQLnrows = $zdbh->prepare($BackupFailedSQL); $BackupFailedSQLnrows->execute(); }else{ ErrorMigrationLogfile("backup attempt is $backup_attempted"); $backup_attempt = $backup_attempted + 1; $BackupFailedAttemptSQL = "UPDATE vps_migration_process SET backup_status=0,flag='backup attempt $backup_attempted',backup_attempted=$backup_attempt,timestamp=now() WHERE mig_username = '$mig_username'"; ErrorMigrationLogfile("BackupFailedAttemptSQL $BackupFailedAttemptSQL"); $BackupFailedAttemptnrows = $zdbh->prepare($BackupFailedAttemptSQL); $BackupFailedAttemptnrows->execute(); } } } } } } $CheckRestoreSQL = "SELECT * FROM vps_migration_process WHERE restore_status=-1 AND migration_status!=0"; $CheckRestoreSQLnrows = $zdbh->prepare($CheckRestoreSQL); $CheckRestoreSQLnrows->execute(); if($CheckRestoreSQLnrows->rowCount() == 0){ $StartRestoreSQL = "SELECT * FROM vps_migration_process WHERE backup_status=1 AND restore_status=0 AND migration_status!=0 LIMIT 1"; $StartRestoreSQLnrows = $zdbh->prepare($StartRestoreSQL); $StartRestoreSQLnrows->execute(); if ($StartRestoreSQLnrows->rowCount() <> 0 ){ $data = $StartRestoreSQLnrows->fetch(PDO::FETCH_OBJ); $mig_username = $data->mig_username; $id = $data->id; $time = $data->timestamp; $client_backup_file_name = trim($data->backup_file_name); $UdateAcctSQL = "UPDATE vps_migration_process SET flag='account creation',restore_status=-1 WHERE mig_username = '$mig_username'"; $UdateAcctSQLnrows = $zdbh->prepare($UdateAcctSQL); $UdateAcctSQLnrows->execute(); if($client_backup_file_name){ // CREATE MIGRATION ACCOUNT $jsonapi->executeCreateAccount($mig_username); // RESTORE MIGRATION BACKUP cpanelBackupStatusCheck($mig_username, true); RestoreUserAccount($mig_username, $client_backup_file_name, $id); } } }else{ echo "Restoration is going on \n"; ErrorMigrationLogfile("Restoration is going on...."); $data = $CheckRestoreSQLnrows->fetch(PDO::FETCH_OBJ); $mig_username = $data->mig_username; $process_id = $data->id; $time = $data->timestamp; $time = strtotime($time); $ct_time = time(); $plus1htime = $time + 3600; ErrorMigrationLogfile("Migaration is going on for $mig_username is account"); if($plus1htime > $ct_time){ ErrorMigrationLogfile("Migaration user less then 1 hour $plus1htime > ".time()." >> "); exit; }else{ $out = null; exec("ps aux | grep 'php -q.*modules/whm_migration/code/restoreclient.php$' | grep -v -e 'grep'", $out); if (count($out) > 0) { ErrorMigrationLogfile("Migaration process is exists..."); exit; } } $update_query = "UPDATE vps_migration_process SET restore_status=0,flag='restore retry',timestamp=now() WHERE id = '$process_id'"; $numrows = $zdbh->prepare($update_query); $numrows->execute(); } if(file_exists($acct_data) && empty(trim(file_get_contents($acct_data)))){ $sql = "SELECT * FROM vps_migration_process WHERE backup_status=1 AND restore_status=0 AND migration_status!=0"; $numrows = $zdbh->prepare($sql); $numrows->execute(); if ($numrows->rowCount()==0){ $AllPackages = file_get_contents($PackageList_file); $AllPackages = json_decode($AllPackages, true); foreach($AllPackages as $migration_pack){ $package_name = $migration_pack["name"]; $max_no_mailboxes = $migration_pack["MAXPOP"]; $max_disk_quota = $migration_pack["QUOTA"]; $jsonapi->RevoltBackPackage($package_name, $quota, $max_no_mailboxes); } } } function GetUserAccountData($username){ global $AccountList_file; $AccountListOBJ = file_get_contents($AccountList_file); $AccountList_arr = json_decode($AccountListOBJ, true); if(empty($AccountList_arr)){ file_put_contents($AccountList_file, ""); exit; } foreach($AccountList_arr as $AcctList){ $AcctList_User = $AcctList['user']; if($AcctList_User == $username){ $ovi_control_panel_user = $AcctList_User; $inNewPackage = $AcctList['domain_package']; $inDomainName = $AcctList['domain']; $email_notify = $AcctList['user_email']; $status = $AcctList['status']; $return = array("ovi_control_panel_user" => $ovi_control_panel_user, "inDomainName" => $inDomainName, "inNewPackage" => $inNewPackage, "email_notify" => $email_notify, "status" => $status); return $return; } } } function RestoreUserAccount($mig_username, $client_backup_file_name, $id){ global $zdbh; $update_query = "UPDATE vps_migration_process SET flag='restore progress' WHERE mig_username = '$mig_username'"; $numrows = $zdbh->prepare($update_query); $numrows->execute(); $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 /scripts/whm_migration_restoreclient.php $client_backup_file_name $mig_username $id"; ErrorMigrationLogfile("RestoreCMD ==> $cmd"); $output=shell_exec("$cmd"); } function ClearOldBackup($userbackup_dir){ $files = glob("$userbackup_dir"); foreach($files as $file){ if(is_file($file)) unlink($file); } } function cpanelBackupStatusCheck($cpanel_user, $move_backup = false){ echo "cpanelBackupStatusCheck \n"; ErrorMigrationLogfile("cpanelBackupStatusCheck...."); ErrorMigrationLogfile("Backup process is going on $cpanel_user"); $mv_path = trim(shell_exec("whereis mv | awk '{print $2}' | tr -d '\n'")); $chown_path = trim(shell_exec("whereis chown | awk '{print $2}' | tr -d '\n'")); $chmod_path = trim(shell_exec("whereis chmod | awk '{print $2}' | tr -d '\n'")); $backup_filename = ""; $folder_path = "/home/migration/$cpanel_user"; $files = glob($folder_path.'/*.tar.gz'); if($files){ echo "cpanelBackupStatusCheck file there \n"; $backup_filename = basename($files[0]); if($move_backup){ $homedir = ctrl_options::GetSystemOption('hosted_dir') . $cpanel_user; if(!is_dir($homedir)){ ErrorMigrationLogfile("homedir $homedir is not exists"); ErrorMigrationLogfile("Account Creation failed for $cpanel_user"); exit; } $folder_user = "$homedir/backups/"; ClearOldBackup($folder_user); shell_exec("$mv_path $folder_path/$backup_filename $folder_user"); shell_exec("$chmod_path 777 $folder_user -R"); } } return $backup_filename; } function GetNextUserfromAccountList($acct_data){ $acct_dataObj = trim(file_get_contents($acct_data)); $acct_data_arr = json_decode($acct_dataObj, true); if($acct_data_arr){ foreach($acct_data_arr as $key => $username){ unset($acct_data_arr[$key]); $acct_dataObj = json_encode($acct_data_arr); file_put_contents($acct_data, $acct_dataObj); return $username; } } } function GenrateUserAccountBackup($username){ global $zdbh; $sql = "SELECT * FROM vps_migration_process WHERE mig_username = '$username'"; $numrows = $zdbh->prepare($sql); $numrows->execute(); if ($numrows->rowCount() == 0 ){ $InsertUsersql = "INSERT INTO vps_migration_process (`mig_username`, `flag`, `backup_status`, timestamp) VALUE('$username', 'backup process', -1, now())"; $numrows = $zdbh->prepare($InsertUsersql); $numrows->execute(); } } ?>
Edit
Download
Unzip
Chmod
Delete