New Cpanel Stable Release and Cron Problem

buckshot101

Member
May 12, 2007
17
0
151
After the latest Cpanel Stable Release Build was updated a couple days ago, my cron jobs on backups of FTPing some sites have stopped working.

I have double checked the themes and everything is still in place. Coding still same on the sites with this below script, cron job settings for backup is still the same, and etc..

Only thing to change was the new Cpanel Stable Release Build. Been using this backup for some time now, and after the new Cpanel Stable Release Build - POOF - it stopped working.

Any Ideas?

Latest Cpanel Build - 11.25.0-STABLE 43473

Cron tab:

Code:
/usr/local/bin/php /home/XXXXX/fullbackup.php
XXXXX is name of cpanel account.


Code:
<?php

// PHP script to allow periodic cPanel backups automatically, optionally to a remote FTP server.
// This script contains passwords.  KEEP ACCESS TO THIS FILE SECURE! (place it in your home dir, not /www/)

// ********* THE FOLLOWING ITEMS NEED TO BE CONFIGURED *********

// Info required for cPanel access
$cpuser = "username"; // Username used to login to CPanel
$cppass = "password"; // Password used to login to CPanel
$domain = "example.com"; // Domain name where CPanel is run
$skin = "x"; // Set to cPanel skin you use (script won't work if it doesn't match). Most people run the default x theme

// Info required for FTP host
$ftpuser = "ftpusername"; // Username for FTP account
$ftppass = "ftppassword"; // Password for FTP account
$ftphost = "ftp.example.com"; // Full hostname or IP address for FTP host
$ftpmode = "ftp"; // FTP mode ("ftp" for active, "passiveftp" for passive)

// Notification information
$notifyemail = "[email protected]"; // Email address to send results

// Secure or non-secure mode
$secure = 0; // Set to 1 for SSL (requires SSL support), otherwise will use standard HTTP

// Set to 1 to have web page result appear in your cron log
$debug = 0;

// *********** NO CONFIGURATION ITEMS BELOW THIS LINE *********

if ($secure) {
   $url = "ssl://".$domain;
   $port = 2083;
} else {
   $url = $domain;
   $port = 2082;
}

$socket = fsockopen($url,$port);
if (!$socket) { echo "Failed to open socket connection… Bailing out!\n"; exit; }

// Encode authentication string
$authstr = $cpuser.":".$cppass;
$pass = base64_encode($authstr);

$params = "dest=$ftpmode&email=$notifyemail&server=$ftphost&user=$ftpuser&pass=$ftppass&submit=Generate Backup";

// Make POST to cPanel
fputs($socket,"POST /frontend/".$skin."/backup/dofullbackup.html?".$params." HTTP/1.0\r\n");
fputs($socket,"Host: $domain\r\n");
fputs($socket,"Authorization: Basic $pass\r\n");
fputs($socket,"Connection: Close\r\n");
fputs($socket,"\r\n");

// Grab response even if we don't do anything with it.
while (!feof($socket)) {
  $response = fgets($socket,4096);
  if ($debug) echo $response;
}

fclose($socket);

?>
 
Last edited:

cPanelNick

Administrator
Staff member
Mar 9, 2015
3,488
35
158
cPanel Access Level
DataCenter Provider
You should probably switch to using the xml-api

CallingAPIFunctions < AllDocumentation/AutomationIntegration < TWiki

You can call the Api1 Function : fullbackup
It takes arguments in this order:


$dest (homedir, ftp, scp or passiveftp)
$server (remote server)
$user (remote server username)
$pass (remote server password)
$email (email to send report to)
$port (remote server protocol)
$rdir (remote server directory)
 

buckshot101

Member
May 12, 2007
17
0
151
LOL, I do not like X3 -- have never liked it......that is why I use X.

Apparently, I wasn't the only one who has this issue after Cpanel Build 11.25.0.

Since that cPanel update (we are now using cPanel v11.25.0), the cPanel Full Backup requires all parameters to be provided, so cPanel was giving gives that error when running the script:

Sorry, all fields are required when using FTP or scp.
(Need to enable debug mode to see that output.)
Previously, the cPanel Full Backup didn't required the port or the remote directory, so the script did not bother providing any.

A very simple tweak to the script will provide the port and remote directory fields.
I am posting it here in case it might help others using this script whom were facing the same issue.

I added these 2 lines of code:

Code:
$ftpport = "21"; // Port (default = 21)
$rdir = "/"; // Remote dir (defaut = / )
and changed the parameters line to include that:
Code:
$params = "dest=$ftpmode&email=$notifyemail&server=$ftphost&user=$ftpuser&pass=$ftppass&port=$ftpport&rdir=$rdir&submit=Generate Backup";

Here is the changes that makes it work with this build:

Code:
<?php

// PHP script to allow periodic cPanel backups automatically, optionally to a remote FTP server.
// This script contains passwords. KEEP ACCESS TO THIS FILE SECURE! (place it in your home dir, not /www/)

// ********* THE FOLLOWING ITEMS NEED TO BE CONFIGURED *********

// Info required for cPanel access
$cpuser = "name"; // Username used to login to CPanel
$cppass = "pass"; // Password used to login to CPanel
$domain = "site"; // Domain name where CPanel is run
$skin = "x"; // Set to cPanel skin you use (script won't work if it doesn't match). Most people run the default x theme

// Info required for FTP host
$ftpuser = "name"; // Username for FTP account
$ftppass = "pass"; // Password for FTP account
$ftphost = "ftp.site.com"; // Full hostname or IP address for FTP host
$ftpmode = "ftp"; // FTP mode ("ftp" for active, "passiveftp" for passive)
$ftpport = "21"; // Port (default = 21)
$rdir = "/"; // Remote dir (defaut = / )

// Notification information
$notifyemail = "[email protected]"; // Email address to send results


// Secure or non-secure mode
$secure = 0; // Set to 1 for SSL (requires SSL support), otherwise will use standard HTTP

// Set to 1 to have web page result appear in your cron log
$debug = 0;

// *********** NO CONFIGURATION ITEMS BELOW THIS LINE *********

if ($secure) {
$url = "ssl://".$domain;
$port = 2083;
} else {
$url = $domain;
$port = 2082;
}

$socket = fsockopen($url,$port);
if (!$socket) { echo "Failed to open socket connection… Bailing out!\n"; exit; }

// Encode authentication string
$authstr = $cpuser.":".$cppass;
$pass = base64_encode($authstr);

$params = "dest=$ftpmode&email=$notifyemail&server=$ftphost&user=$ftpuser&pass=$ftppass&port=$ftpport&rdir=$rdir&submit=Generate Backup";

// Make POST to cPanel
fputs($socket,"POST /frontend/".$skin."/backup/dofullbackup.html?".$params." HTTP/1.0\r\n");
fputs($socket,"Host: $domain\r\n");
fputs($socket,"Authorization: Basic $pass\r\n");
fputs($socket,"Connection: Close\r\n");
fputs($socket,"\r\n");

// Grab response even if we don't do anything with it.
while (!feof($socket)) {
$response = fgets($socket,4096);
if ($debug) echo $response;
}

fclose($socket);


?>
 

buckshot101

Member
May 12, 2007
17
0
151
The X3 theme has a style called X that is supported.
I am aware of the different themes...but like I mentioned earlier, I do not like X3. You can change the theme (appearance), but it's still X3 -- even if you use the X theme in X3.