/home/suroeste/public_html/wp-content/plugins/akeebabackupwp/app/Solo/Cli
Edit: /home/suroeste/public_html/wp-content/plugins/akeebabackupwp/app/Solo/Cli/AltBackupCli.php (12884B)
getContainer()->input->get('no-verify', 999);
$this->verifySSL = $noVerifyValue != 999;
// Get the backup profile and description
$profile = $this->getContainer()->input->get('profile', 1, 'int');
if ($profile <= 0)
{
$profile = 1;
}
$debugmessage = '';
if ($this->getContainer()->input->get('debug', -1, 'int') != -1)
{
if (!defined('AKEEBADEBUG'))
{
define('AKEEBADEBUG', 1);
}
$debugmessage = "*** DEBUG MODE ENABLED ***\n";
}
$version = AKEEBABACKUP_VERSION;
$date = AKEEBABACKUP_DATE;
$start_backup = time();
$memusage = $this->memUsage();
$phpversion = PHP_VERSION;
$phpenvironment = PHP_SAPI;
$phpos = PHP_OS;
$appName = defined('ABSPATH') ? 'Akeeba backup' : 'Akeeba Solo';
if ($this->getContainer()->input->get('quiet', -1, 'int') == -1)
{
$year = gmdate('Y');
echo <<
getContainer()->input->get('quiet', -1, 'int') == -1)
{
echo "Unsetting time limit restrictions.\n";
}
@set_time_limit(0);
}
elseif (!$safe_mode)
{
if ($this->getContainer()->input->get('quiet', -1, 'int') == -1)
{
echo "Could not unset time limit restrictions; you may get a timeout error\n";
}
}
else
{
if ($this->getContainer()->input->get('quiet', -1, 'int') == -1)
{
echo "You are using PHP's Safe Mode; you may get a timeout error\n";
}
}
if ($this->getContainer()->input->get('quiet', -1, 'int') == -1)
{
echo "\n";
}
// Log some paths
if ($this->getContainer()->input->get('quiet', -1, 'int') == -1)
{
echo "Site paths determined by this script:\n";
echo "APATH_BASE : " . APATH_BASE . "\n";
}
$startup_check = true;
$url = Platform::getInstance()->get_platform_configuration_option('siteurl', '');
if (empty($url))
{
echo <<get_platform_configuration_option('legacyapi_enabled', '');
$secret = Platform::getInstance()->get_platform_configuration_option('frontend_secret_word', '');
if (!$frontend_enabled)
{
echo <<getContainer()->input->get('method', '', 'cmd');
if (!empty($overridemethod))
{
$method = $overridemethod;
}
if (empty($method))
{
echo <<close(255);
}
echo <<get_platform_configuration_option('ajaxurl', '');
$url = empty($tempURL) ? ($url . '/wp-admin/admin-ajax.php') : $tempURL;
}
else
{
$url .= '/index.php';
}
$url .= defined('ABSPATH') ? '?action=akeebabackup_legacy' : '?view=remote';
$url .= "&key={$secret}&noredirect=1&profile=$profile";
$old_url = $url;
$inLoop = true;
$step = 0;
$timestamp = date('Y-m-d H:i:s');
echo "[{$timestamp}] Beginning backing up\n";
while ($inLoop)
{
$timestamp = date('Y-m-d H:i:s');
$result = $this->fetchURL($url, $method);
echo "[{$timestamp}] Got $result\n";
if (empty($result) || ($result === false))
{
echo "[{$timestamp}] No message received\n";
echo <<close(100);
$inLoop = false;
}
elseif (strpos($result, '301 More work required') !== false)
{
// Extract the backup ID
$backupId = null;
$startPos = strpos($result, 'BACKUPID #"\#\"#');
$endPos = false;
if ($startPos !== false)
{
$endPos = strpos($result, '#"\#\"#', $startPos + 15);
}
if ($endPos !== false)
{
$backupId = substr($result, $startPos + 16, $endPos - $startPos - 16);
}
// Construct the new URL and access it
if ($step == 0)
{
$old_url = $url;
}
$step++;
$url = $old_url . '&task=step&step=' . $step;
if (!is_null($backupId))
{
$url .= '&backupid=' . urlencode($backupId);
}
echo "[{$timestamp}] Backup progress signal received\n";
}
elseif (strpos($result, '200 OK') !== false)
{
echo "[{$timestamp}] Backup finalization message received\n";
echo <<timeago($start_backup, time(), '', false) . "\n";
echo "Peak memory usage: " . $this->peakMemUsage() . "\n\n";
$this->close(0);
}
elseif (strpos($result, '500 ERROR -- ') !== false)
{
// Backup error
echo "[{$timestamp}] Error signal received\n";
echo <<close(2);
}
elseif (strpos($result, '403 ') !== false)
{
// This should never happen: invalid authentication or front-end backup disabled
echo "[{$timestamp}] Connection denied (403) message received\n";
echo <<close(103);
}
else
{
// Unknown result?!
echo "[{$timestamp}] Could not parse the server response.\n";
echo <<close(1);
}
}
}
/**
* Fetches a remote URL using curl, fsockopen or fopen
*
* @param string $url The remote URL to fetch
* @param string $method The method to use: curl, fsockopen or fopen (optional)
*
* @return string The contents of the URL which was fetched
*/
private function fetchURL($url, $method = 'curl')
{
switch ($method)
{
default:
case 'curl':
$ch = curl_init($url);
$cacertPath = APATH_BASE . '/Awf/Download/Adapter/cacert.pem';
if (file_exists($cacertPath))
{
@curl_setopt($ch, CURLOPT_CAINFO, $cacertPath);
}
@curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
@curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
@curl_setopt($ch, CURLOPT_HEADER, false);
@curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
@curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $this->verifySSL);
@curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, $this->verifySSL ? 2 : 0);
@curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 180);
@curl_setopt($ch, CURLOPT_TIMEOUT, 180);
$result = curl_exec($ch);
curl_close($ch);
return $result;
break;
case 'fsockopen':
$pos = strpos($url, '://');
$protocol = strtolower(substr($url, 0, $pos));
$req = substr($url, $pos + 3);
$pos = strpos($req, '/');
if ($pos === false)
{
$pos = strlen($req);
}
$host = substr($req, 0, $pos);
if (strpos($host, ':') !== false)
{
[$host, $port] = explode(':', $host);
}
else
{
$port = ($protocol == 'https') ? 443 : 80;
}
$uri = substr($req, $pos);
if ($uri == '')
{
$uri = '/';
}
$crlf = "\r\n";
$req = 'GET ' . $uri . ' HTTP/1.0' . $crlf
. 'Host: ' . $host . $crlf
. $crlf;
$fp = fsockopen(($protocol == 'https' ? 'ssl://' : '') . $host, $port);
fwrite($fp, $req);
$response = '';
while (is_resource($fp) && $fp && !feof($fp))
{
$response .= fread($fp, 1024);
}
fclose($fp);
// split header and body
$pos = strpos($response, $crlf . $crlf);
if ($pos === false)
{
return ($response);
}
$header = substr($response, 0, $pos);
$body = substr($response, $pos + 2 * strlen($crlf));
// parse headers
$headers = [];
$lines = explode($crlf, $header);
foreach ($lines as $line)
{
if (($pos = strpos($line, ':')) !== false)
{
$headers[strtolower(trim(substr($line, 0, $pos)))] = trim(substr($line, $pos + 1));
}
}
//redirection?
if (isset($headers['location']))
{
return $this->fetchURL($headers['location'], $method);
}
else
{
return ($body);
}
break;
case 'fopen':
$opts = [
'http' => [
'method' => "GET",
'header' => "Accept-language: en\r\n",
],
];
$context = stream_context_create($opts);
$result = @file_get_contents($url, false, $context);
break;
}
return $result;
}
}