/home/suroeste/public_html/wp-content/plugins/akeebabackupwp/app/Solo/Cli
NameSizeModeActions
AbstractCliApplication.php78520644editdlrm
AltBackupCli.php128840644editdlrm
AltCheckFailedCli.php95030644editdlrm
BackupCli.php106680644editdlrm
CheckFailedCli.php20010644editdlrm
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; } }