| Server IP : 81.19.159.101 / Your IP : 216.73.217.178 Web Server : Apache System : Linux www58.world4you.com 4.18.0-553.126.2.lve.el8.x86_64 #1 SMP Thu May 28 14:12:30 UTC 2026 x86_64 User : ftp8817043 ( 2681) PHP Version : 8.4.21 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /home/.sites/103/site8817043/web/wp-content/plugins/akeebabackupwp/app/ |
Upload File : |
<?php
/**
* Akeeba Kickstart
* An AJAX-powered archive extraction tool
*
* @package kickstart
* @copyright Copyright (c)2025 Nicholas K. Dionysopoulos / Akeeba Ltd
* @license GNU General Public License version 3, or later
*/
// PHP version check
if (version_compare(PHP_VERSION, '7.4', 'lt'))
{
$message = sprintf('This script requires PHP %s or later. You are currently using PHP %s.', AKEEBA_MIN_PHP, PHP_VERSION);
if (_AKEEBA_IS_WEB)
{
echo "<html lang=\"en\"><head><title>Unsupported PHP version</title></head><body><h1>Unsupported PHP version</h1><p>$me
</p></body></html>";
exit;
}
echo $message;
exit(255);
}
// Normalise the locale
function_exists('setlocale') && @setlocale(LC_ALL, 'en_US.UTF8');
define('_AKEEBA_SELF_DIR', @is_link(__FILE__) ? getcwd() : __DIR__);
define('_AKEEBA_SELF_BASENAME', basename(__FILE__));
define('_AKEEBA_SELF_BARENAME', implode('.', array_slice(explode('.', basename(__FILE__)), 0, -1)));
define('_AKEEBA_WEB_ENTRYPOINT', 'src/restore.php');
define('_AKEEBA_CLI_ENTRYPOINT', 'src/nocli.php');
define('_AKEEBA_RESTORATION', 1);
define('_AKEEBA_IS_WINDOWS', strpos(strtoupper(PHP_OS), 'WIN') === 0);
define(
'_AKEEBA_IS_WEB', @(isset($_SERVER['REQUEST_URI']) && isset($_SERVER['REQUEST_METHOD'])
&& ($_SERVER['REQUEST_METHOD'] == 'GET'
|| $_SERVER['REQUEST_METHOD'] == 'POST'))
);
define('AKEEBA_VERSION', '9.0.1');
define('AKEEBA_DATE', '2025-12-11 07:48:17');
define('AKEEBA_PRO', '0');
define('AKEEBA_NAME', 'restore');
define('AKEEBA_MIN_PHP', '7.4');
define(
'AKEEBA_RUN_AS_PHP',
!in_array('phar', stream_get_wrappers()) || !class_exists('Phar', false) ? 1 : Phar::PHP
);
define(
'AKEEBA_MIMETYPES',
[
'dtd' => 'text/plain',
'txt' => 'text/plain',
'xsd' => 'text/plain',
'php' => AKEEBA_RUN_AS_PHP,
'inc' => AKEEBA_RUN_AS_PHP,
'bmp' => 'image/bmp',
'css' => 'text/css',
'gif' => 'image/gif',
'htm' => 'text/html',
'html' => 'text/html',
'htmls' => 'text/html',
'ico' => 'image/x-ico',
'jpe' => 'image/jpeg',
'jpg' => 'image/jpeg',
'jpeg' => 'image/jpeg',
'js' => 'application/x-javascript',
'png' => 'image/png',
'tif' => 'image/tiff',
'tiff' => 'image/tiff',
'xml' => 'text/xml',
]
);
// Try to use the PHAR stream wrapper
call_user_func(
function () {
if (!in_array('phar', stream_get_wrappers()) || !class_exists('Phar', false))
{
return;
}
// A miniature router for webPhar
$miniRouter = function($path)
{
// Clean the path, removing ourselves.
$path = ltrim($path, '/');
if (substr($path, 0, strlen(_AKEEBA_SELF_BASENAME)) === _AKEEBA_SELF_BASENAME)
{
$path = ltrim(substr($path, strlen(_AKEEBA_SELF_BASENAME)), '/');
}
$path = rtrim($path, '/');
// We only accept URLs with a path suffix equal to our front controller, or none at all.
if (empty($path) || $path === _AKEEBA_WEB_ENTRYPOINT)
{
// In both cases, force loading our front controller.
return _AKEEBA_WEB_ENTRYPOINT;
}
// Explicitly block direct access to arbitrary PHP files packed in the application PHAR archive.
if (substr($path, -4) === '.php')
{
return false;
}
// All other files: return them if they exist; 404 if they don't exist.
$nominalFile = 'phar://' . __FILE__ . '/' . $path;
return !file_exists($nominalFile) || !@is_file($nominalFile) ? false : $path;
};
Phar::interceptFileFuncs();
include 'phar://' . __FILE__ . '/src/includes/preamble.php';
Phar::webPhar(null, _AKEEBA_WEB_ENTRYPOINT, null, AKEEBA_MIMETYPES, $miniRouter);
include 'phar://' . __FILE__ . '/' . _AKEEBA_CLI_ENTRYPOINT;
exit;
}
);
/**
* PHAR extraction helper, for use when PHAR support is missing on the server.
*/
class Kickstart_Extract_Phar
{
const GZ = 0x1000;
const BZ2 = 0x2000;
const MASK = 0x3000;
static $temp;
static $origdir;
static function go($return = false)
{
$fp = fopen(__FILE__, 'rb');
fseek($fp, self::getStubLength($fp));
$L = unpack('V', $a = fread($fp, 4));
$m = '';
do
{
$read = 8192;
if ($L[1] - strlen($m) < 8192)
{
$read = $L[1] - strlen($m);
}
$last = fread($fp, $read);
$m .= $last;
} while (strlen($last) && strlen($m) < $L[1]);
if (strlen($m) < $L[1])
{
die(sprintf("Error: Corrupt file. Manifest length read was \"%s\", should be \"%s\"", strlen($m), $L[1]));
}
$info = self::_unpack($m);
$f = $info['c'];
if ($f & self::GZ && !function_exists('gzinflate'))
{
die('Error: The PHP zlib extension is not enabled');
}
if ($f & self::BZ2 && !function_exists('bzdecompress'))
{
die('Error: The PHP bzip2 extension is not enabled');
}
$temp = self::tmpdir();
if (!$temp || !is_writable($temp))
{
$sessionpath = session_save_path();
if (strpos($sessionpath, ";") !== false)
{
$sessionpath = substr($sessionpath, strpos($sessionpath, ";") + 1);
}
if (!file_exists($sessionpath) || !is_dir($sessionpath))
{
die('Could not locate temporary directory to extract Kickstart');
}
$temp = $sessionpath;
}
$temp .= '/pharextract/' . _AKEEBA_SELF_BARENAME;
self::$temp = $temp;
self::$origdir = getcwd();
@mkdir($temp, 0777, true);
$temp = realpath($temp);
if (!file_exists($temp . DIRECTORY_SEPARATOR . md5_file(__FILE__)))
{
self::recursiveRmdir($temp);
@mkdir($temp, 0777, true);
@file_put_contents($temp . '/' . md5_file(__FILE__), '');
foreach ($info['m'] as $path => $file)
{
$a = !file_exists(dirname($temp . '/' . $path));
@mkdir(dirname($temp . '/' . $path), 0777, true);
clearstatcache();
if ($path[strlen($path) - 1] == '/')
{
@mkdir($temp . '/' . $path, 0777);
continue;
}
file_put_contents($temp . '/' . $path, self::extractFile($path, $file, $fp));
@chmod($temp . '/' . $path, 0666);
}
}
include Kickstart_Extract_Phar::$temp . '/src/includes/preamble.php';
if (!$return)
{
include Kickstart_Extract_Phar::$temp . DIRECTORY_SEPARATOR . _AKEEBA_CLI_ENTRYPOINT;
}
}
static function getStubLength($fp)
{
if (defined('__COMPILER_HALT_OFFSET__') && __COMPILER_HALT_OFFSET__ > 0)
{
return __COMPILER_HALT_OFFSET__;
}
fseek($fp, 0);
$data = fread($fp, 65536);
$locate = '__HALT_' . 'COMPILER();';
return strpos($data, $locate) + strlen($locate);
}
static function tmpdir()
{
// Use the kicktemp directory if it already exists and is writeable.
if (file_exists(__DIR__ . '/kicktemp') && is_dir(__DIR__ . '/kicktemp') && is_writeable(__DIR__ . '/kicktemp'))
{
return __DIR__ . '/kicktemp';
}
if (_AKEEBA_IS_WINDOWS)
{
if ($var = getenv('TMP') ? getenv('TMP') : getenv('TEMP'))
{
return $var;
}
if (is_dir('/temp') || mkdir('/temp'))
{
return realpath('/temp');
}
return false;
}
if ($var = getenv('TMPDIR'))
{
return $var;
}
return realpath('/tmp');
}
static function _unpack($m)
{
$info = unpack('V', substr($m, 0, 4));
$l = unpack('V', substr($m, 10, 4));
$m = substr($m, 14 + $l[1]);
$s = unpack('V', substr($m, 0, 4));
$o = 0;
$start = 4 + $s[1];
$ret['c'] = 0;
for ($i = 0; $i < $info[1]; $i++)
{
$len = unpack('V', substr($m, $start, 4));
$start += 4;
$savepath = substr($m, $start, $len[1]);
$start += $len[1];
$ret['m'][$savepath] = array_values(unpack('Va/Vb/Vc/Vd/Ve/Vf', substr($m, $start, 24)));
$ret['m'][$savepath][3] = sprintf('%u', $ret['m'][$savepath][3] & 0xffffffff);
$ret['m'][$savepath][7] = $o;
$o += $ret['m'][$savepath][2];
$start += 24 + $ret['m'][$savepath][5];
$ret['c'] |= $ret['m'][$savepath][4] & self::MASK;
}
return $ret;
}
static function extractFile($path, $entry, $fp)
{
$data = '';
$c = $entry[2];
while ($c)
{
if ($c < 8192)
{
$data .= @fread($fp, $c);
$c = 0;
break;
}
$c -= 8192;
$data .= @fread($fp, 8192);
}
if ($entry[4] & self::GZ)
{
$data = gzinflate($data);
}
elseif ($entry[4] & self::BZ2)
{
$data = bzdecompress($data);
}
if (strlen($data) != $entry[0])
{
die(sprintf("Kickstart is corrupt. Size error extracting file: %s != %s", strlen($data), $entry[0]));
}
if ($entry[3] != sprintf("%u", crc32($data) & 0xffffffff))
{
die("Kickstart is corrupt. Invalid checksum extracting file.");
}
return $data;
}
public static function recursiveRmdir(string $directory): bool
{
$directory = rtrim($directory, '/');
if (!file_exists($directory) || !is_dir($directory) || !is_readable($directory))
{
return false;
}
$di = new DirectoryIterator($directory);
foreach ($di as $item)
{
if ($item->isDot())
{
continue;
}
if ($item->isDir())
{
self::recursiveRmdir($item->getPathname());
continue;
}
unlink($item->getPathname());
}
return rmdir($directory);
}
}
// Web controller
call_user_func(
function () {
if (!_AKEEBA_IS_WEB)
{
return;
}
Kickstart_Extract_Phar::go(true);
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
$basename = basename(__FILE__);
if (!strpos($_SERVER['REQUEST_URI'], $basename))
{
include Kickstart_Extract_Phar::$temp . DIRECTORY_SEPARATOR . _AKEEBA_WEB_ENTRYPOINT;
return;
}
$pt = substr($_SERVER['REQUEST_URI'], strpos($_SERVER['REQUEST_URI'], $basename) + strlen($basename));
if (!$pt || $pt == '/')
{
// Fudge the request path to always load Kickstart's front controller.
$pt = _AKEEBA_WEB_ENTRYPOINT;
}
// Make sure the file exists
$a = @realpath(Kickstart_Extract_Phar::$temp . DIRECTORY_SEPARATOR . $pt);
// Forbid direct access to .php files; only the front controller must be web-accessible.
$z = substr($pt, -4) === '.php';
if ($z || !$a || strlen(dirname($a)) < strlen(Kickstart_Extract_Phar::$temp))
{
header('HTTP/1.0 404 Not Found');
echo "<html lang=\"en\">\n <head>\n <title>File Not Found<title>\n </head>\n <body>\n <h1>404 - File Not Found</h1>\n </body>\n</html>";
exit;
}
$b = pathinfo($a);
if (!isset($b['extension']))
{
header('Content-Type: text/plain');
header('Content-Length: ' . filesize($a));
readfile($a);
exit;
}
if (isset(AKEEBA_MIMETYPES[$b['extension']]))
{
if (AKEEBA_MIMETYPES[$b['extension']] === 1)
{
include $a;
exit;
}
if (AKEEBA_MIMETYPES[$b['extension']] === 2)
{
highlight_file($a);
exit;
}
header('Content-Type: ' . AKEEBA_MIMETYPES[$b['extension']]);
header('Content-Length: ' . filesize($a));
readfile($a);
exit;
}
}
);
// CLI mode
Kickstart_Extract_Phar::go();
__HALT_COMPILER(); ?>
s
= kickstart.phar language/en-GB.ini9( Aw:i� .�� src/Unarchiver/JPS.php] Aw:i >=�� src/Unarchiver/JPA.php�Y Aw:i �q� % src/Unarchiver/AbstractUnarchiver.php|M Aw:i� x�� src/Unarchiver/State.php� Aw:i� Ja�� src/Unarchiver/ZIP.phpb+ Aw:i�
�Ѕ� src/Base/AbstractObject.php� Aw:iA ��"C� src/Base/AbstractPart.php7"