Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php /* Textolite v2.12s */ ini_set("error_reporting", E_ALL); ini_set("display_errors",..
Decoded Output download
<?php /* Textolite v2.12s */ ini_set("error_reporting", E_ALL);
ini_set("display_errors", 0);
ini_set("log_errors", 1);
ini_set("error_log", "error.log");
version_compare(PHP_VERSION, "5.2", ">=") ||
exit("PHP " . PHP_VERSION . " is not supported");
define("a_", "document_root");
define("b_", "query_string");
define("c_", "request_uri");
define("d_", "php_self");
define("e_", "http_accept_language");
define("f_", "http_user_agent");
define("g_", "remote_addr");
define("h_", "server_addr");
define("i_", "script_filename");
define("j_", "script_name");
define("k_", "server_name");
define("l_", "server_protocol");
define("m_", "lang");
define("n_", "password");
define("o_", "session");
define("p_", "pass_complexity");
define("q_", "pass_complexity_js");
define("r_", "auth_time");
define("s_", "auth_error_time");
define("t_", "auth_error_list");
define("u_", "auth_error_limit");
define("v_", "auth_lockout_duration");
define("w_", "auth_session_reset");
define("x_", "auth_bot_filter");
define("y_", "code_redraw_delay");
define("z_", "code_undo_limit");
define("A_", "code_highlighting");
define("_s", "visual_ext");
define("B_", "allowed_ext");
define("C_", "editable_ext");
define("D_", "default_file");
define("_Q", "folder_size");
define("E_", "document_root");
define("F_", "url_rewrite");
define("G_", "logout_to_site");
define("K_", "site_scripts");
define("L_", "site_styles");
define("M_", "update_final");
define("N_", "update_beta");
define("O_", "cache");
define("_r", "filelist");
define("P_", "system_url");
define("Q_", "error_limit");
define("R_", "error_count");
define("S_", "redraw_delay");
define("T_", "mode");
define("U_", "type");
define("V_", "base");
define("W_", "code");
define("X_", "title");
define("Y_", "version");
define("Z_", "is_edited");
define("_a", "post_max_size");
define("_b", "upload_max_filesize");
define("_c", "max_file_uploads");
define("_d", "_checkbox");
define("_m", "http_ajax");
define("_n", "source");
define("_o", "token");
define("_p", "sha1");
define("_q", "html");
define("_t", "404");
define("_u", "403");
define("_v", "ip");
define("_w", "sip");
define("_x", "url");
define("_y", "name");
define("_z", "date");
define("_A", "size");
define("_B", "list");
define("_C", "file");
define("_D", "error");
define("_E", "value");
define("_F", "radio");
define("_G", "tmp_name");
define("_H", "language_list");
define("_I", "<script");
define("_J", "<_cript");
define("_K", "</script");
define("_L", "</_cript");
define("_M", "</body>");
define("_N", "<!--~~?");
define("_O", "?~~-->");
define("__", "textolite_");
final class a
{
private $a;
private $b;
public function __construct()
{
$this->a["a"] = $_GET;
$this->a["b"] = $_POST;
$this->a["c"] = $_SERVER;
$this->a["d"] = $_COOKIE;
$this->a["e"] = $_FILES;
}
public function a($a)
{
if (isset($this->b["a"][$a])) {
return $this->b["a"][$a];
} elseif (isset($this->a["a"][$a])) {
return $this->b["a"][$a] = $this->f($this->a["a"][$a], $a);
}
}
public function b($a = false)
{
if ($a) {
if (isset($this->b["b"][$a])) {
return $this->b["b"][$a];
} elseif (isset($this->a["b"][$a])) {
return $this->b["b"][$a] = $this->f($this->a["b"][$a], $a);
}
} elseif (count($this->a["b"])) {
return true;
}
}
public function c($a)
{
if (isset($this->b["c"][$a])) {
return $this->b["c"][$a];
} else {
$b = strtoupper($a);
if (isset($this->a["c"][$b])) {
return $this->b["c"][$a] = $this->f($this->a["c"][$b], $a);
}
}
}
public function d($a)
{
if (isset($this->b["d"][$a])) {
return $this->b["d"][$a];
} elseif (isset($this->a["d"][$a])) {
return $this->b["d"][$a] = $this->f($this->a["d"][$a], $a);
}
}
public function e($a)
{
if (isset($this->a["e"][$a])) {
return $this->a["e"][$a];
}
}
private function f($a, $b)
{
$c = "_" . $b;
if (method_exists($this, $c)) {
return $this->$c($a);
} else {
return $a;
}
}
private function _server_protocol($a)
{
preg_match('~^[a-z]{4,5}/[0-9]\.[0-9]$~i', $a, $b);
if (isset($b[0])) {
return $b[0];
}
}
private function _server_name($a)
{
preg_match('~^[a-z0-9-_.]{2,300}$~i', $a, $b);
if (isset($b[0])) {
return $b[0];
}
}
private function _script_filename($a)
{
$b = str_replace("\", "/", __FILE__);
if (stripos($b, $this->a["c"][strtoupper(a_)]) === 0) {
return $b;
} else {
return str_replace("\", "/", $a);
}
}
private function _document_root($a)
{
$a = str_replace("\", "/", $a);
$b = $this->c(i_);
$c = $this->c(d_);
$d = $this->c(j_);
if (stripos($b, $c) > 0) {
$e = str_ireplace($c, "", $b);
}
if (stripos($b, $d) > 0) {
$f = str_ireplace($d, "", $b);
}
if (isset($e)) {
if (isset($f)) {
if (strlen($e) > strlen($f)) {
$g = $e;
} else {
$g = $f;
}
} else {
$g = $e;
}
} elseif (isset($f)) {
$g = $f;
} else {
$g = $a;
}
if (stripos($b, $a) === 0) {
if (strlen($g) > strlen($a)) {
$a = $g;
}
} else {
$a = $g;
}
if (substr($a, -1) == "/") {
return substr($a, 0, -1);
}
return $a;
}
private function _php_self($a)
{
return str_replace("\", "/", $a);
}
private function _script_name($a)
{
return str_replace("\", "/", $a);
}
private function _query_string($a)
{
return str_replace("\", "/", $a);
}
private function _remote_addr($a)
{
return $this->_ip($a);
}
private function _server_addr($a)
{
return $this->_ip($a);
}
private function _ip($a)
{
preg_match('~^[a-z0-9.:]{1,40}$~i', $a, $b);
if (isset($b[0])) {
return $b[0];
}
}
private function _sha1($a)
{
preg_match('~^[a-z0-9]{40}$~i', $a, $b);
if (isset($b[0])) {
return $b[0];
}
}
}
final class b
{
private $a;
private $b;
private $c;
private $d;
public function __construct($a)
{
$this->a = $a;
$this->a("Content-type:text/html;charset=utf-8");
}
public function a($a)
{
return $this->b[] = $a;
}
public function b($a, $b)
{
return $this->b[] = $this->a . " " . $a . " " . $b;
}
public function c($a)
{
return $this->b[] = "Location:" . $a;
}
public function d(
$a,
$b = false,
$c = false,
$d = false,
$e = false,
$f = false,
$g = false
) {
$h["a"] = $a;
$h["b"] = $b;
$h["c"] = $g;
$h["d"] = (int) $c;
$h["e"] = str_replace("%2F", "/", urlencode($d));
$h["f"] = $e;
$h["g"] = (int) $f;
$this->c[] = $h;
}
public function e($a, $b = false, $c = false)
{
$this->d($a, "", time() - 60 * 60, $b, $c);
}
public function f($a)
{
return $this->d = $a;
}
public function g()
{
if (isset($this->b)) {
foreach ($this->b as $a) {
header($a);
};
}
if (isset($this->c)) {
foreach ($this->c as $b) {
setcookie(
$b["a"],
$b["b"],
$b["d"],
$b["e"],
$b["f"],
$b["g"],
$b["c"]
);
};
}
if (isset($this->d)) {
print $this->d;
}
}
}
final class c
{
const a = "
";
const b = "lang.ini";
const c = "conf.ini";
private $a;
private $b;
private $c;
private $d;
private $e;
private $f;
public function __construct($a, $b)
{
$this->c = parse_ini_file($a . self::b, true);
$this->d = parse_ini_file($a . self::c, true);
$this->e = [
"j" =>
'<ol><li title="{source_editor}">{type}</li><li title="{visual_editor}">text</li></ol>',
"i" => "<ol><li>{type}</li></ol>",
"h" =>
'<div id="e"><div><div><h1><a href="//textolite.ru/">Textolite</a> v{version}</h1><p>{standard}</p></div>{mode}<ul><li><a title="{files}">{files}</a><div id="f"><ol><li>{file_name}</li><li>{file_size}</li><li>{file_changed}</li><li>{file_menu}</li></ol><ul>{filelist}</ul></div></li><li><a title="{settings}">{settings}</a><div id="g"><fieldset><legend>{auth}</legend><dl><dt title="{new_password}">{new_password}:</dt><dd><input type="password" maxlength="14"><a></a></dd><dt title="{auth_error_limit_desc}">{login_attempts}:</dt><dd data-aa="5"><input type="text" maxlength="2" value="{auth_error_limit}"></dd><dt title="{auth_lockout_duration_desc}">{lockout_duration}:</dt><dd data-aa="1"><input type="text" maxlength="7" value="{auth_lockout_duration}"></dd><dt title="{auth_session_reset_desc}">{session_autoreset}:</dt><dd data-aa="60"><input type="text" maxlength="7" value="{auth_session_reset}"></dd><dd title="{logout_to_site_desc}" data-aa="0"><label>{logout_to_site_checkbox}<em></em>{redirect_to_site}</label></dd></dl></fieldset><fieldset><legend>{visual_editor}</legend><dl><dd title="{site_scripts_desc}" data-aa="1"><label>{site_scripts_checkbox}<em></em>{enable_scripts}</label></dd><dd title="{site_styles_desc}" data-aa="1"><label>{site_styles_checkbox}<em></em>{enable_styles}</label></dd></dl></fieldset><fieldset><legend>{source_editor}</legend><dl><dt title="{code_redraw_delay_desc}">{redraw_delay}:</dt><dd data-aa="200"><input type="text" maxlength="7" value="{code_redraw_delay}"></dd><dt title="{code_undo_limit_desc}">{steps_for_undo}:</dt><dd data-aa="50"><input type="text" maxlength="3" value="{code_undo_limit}"></dd><dd title="{code_highlighting_desc}" data-aa="1"><label>{code_highlighting_checkbox}<em></em>{enable_highlighting}</label></dd></dl></fieldset><fieldset><legend>{file_manager}</legend><dl><dd title="{folder_size_desc}" data-aa="1"><label>{folder_size_checkbox}<em></em>{display_catalog_size}</label></dd></dl></fieldset><fieldset><legend>{system}</legend><dl><dt title="{default_file_desc}">{main_page_or_file}:</dt><dd data-aa="index.html"><input type="text" maxlength="30" value="{default_file}"></dd><dd title="{new_version_notify}" data-aa="1"><label>{update_final_checkbox}<em></em>{new_version_notify}</label></dd><dd title="{beta_version_notify}" data-aa="0"><label>{update_beta_checkbox}<em></em>{beta_version_notify}</label></dd><dt title="{language}">{language}:</dt><dd><ul>{language_list}</ul></dd></dl></fieldset><fieldset><legend>{extended}</legend><dl><dt title="{activate}">{activate}:</dt><dd><input type="text" maxlength="7"></dd><dt><ol><li><span></span><input type="text" disabled><input type="text" disabled><i></i></li></ol><p>{attachment_domain} <strong></strong>. {attachment_notice}</p><p><input type="button" value="{attach}"><input type="button" value="{cancel}"></p></dt></dl></fieldset><p><input type="button" value="{save}" disabled><a title="{restore_settings}"></a></p></div></li></ul><ul><li><input type="button" value="{save}" title="{save}" disabled></li><li><input type="button" value="{logout}" title="{logout}" disabled data-ab="{not_save}"></li></ul><p><samp data-ac="{saving}" data-ad="{saved}" data-ae="{not_saved}" data-af="{reset_session}" data-ag="{access_closed}" data-ah="{login_again}" data-ai="{request_rejected}" data-aj="{request_blocked}" data-ak="{no_response}" data-al="{not_writable}" data-am="{old_browser}" data-an="{new_version}" data-ao="{need_update}" data-ap="{install}" data-aq="{not_install}" data-ar="{download_installer}" data-as="{system_update}" data-at="{update_error}" data-au="{install_complete}" data-av="{attachment_domain}" data-aw="{no_connect}" data-ax="{password_hashing}" data-ay="{pass_complexity}" data-az="{uploading}" data-bb="{uploading_complete}" data-bc="{uploading_error}" data-bd="{extension_error}" data-be="{count_limit}" data-bf="{size_limit}" data-bg="{file_deletion}" data-bh="{file_deleted}" data-bi="{deletion_error}" data-bj="{unknown_relation}" data-bk="{element_busy}" data-bl="{disable_script}" data-bm="{disable}" data-bn="{disabling_scripts}" data-bo="{scripts_disabled}" data-bp="{show_password}" data-bq="{hide_password}" data-br="{post_max_size}" data-bs="{upload_max_filesize}" data-bt="{max_file_uploads}" data-bu="{auth_session_reset}" data-bv="{site_scripts}" data-bw="{site_styles}" data-bx="{logout_to_site}" data-by="{ip}" data-bz="{sip}" data-bA="{system_url}" data-cc="{version}" data-cd="{update_final}" data-ce="{update_beta}"></samp><noscript><samp>{requires_javascript}</samp></noscript><i></i></p></div></div><script src="{system_url}textolite.js?v={version}"></script>',
"a" =>
'<!doctype html><html id="a"><head><title>{auth} - Textolite</title><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="stylesheet" href="{system_url}textolite.css?v={version}"></head><body><fieldset><legend>{auth}</legend><ol data-cf="{error_limit}" data-cg="{error_count}"><li></li></ol><p><samp data-ax="{password_hashing}" data-ch="{password_checking}" data-ci="{access_granted}" data-cj="{access_denied}" data-ak="{no_response}" data-al="{not_writable}" data-bA="{system_url}">{document_root_error}</samp><noscript><samp>{requires_javascript}</samp></noscript><i></i></p><p><span>{password}:</span><input type="password" data-ay="{pass_complexity}" maxlength="14"><a data-bp="{show_password}" data-bq="{hide_password}"></a></p><p><input type="button" value="{login}" disabled></p></fieldset><script src="{system_url}textolite.js?v={version}"></script></body></html>',
"e" =>
'<!doctype html><html id="b"><head><title>{code} - {{code}} - Textolite</title><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="stylesheet" href="{system_url}textolite.css?v={version}"></head><body><samp><span>{code}</span>{{code}}</samp>{panel}</body></html>',
"c" =>
'<!doctype html><html id="d"><head><title>{title} - Textolite</title><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="stylesheet" href="{system_url}textolite.css?v={version}"></head><body><iframe>{no_frames}</iframe>{panel}<script type="text/template" id="h"><base href="{base}"></script><script type="text/template" id="i">[data-textolite-string]{outline:none;font-style:inherit;cursor:text}[data-textolite-focus]{outline:4px solid #f2ca00 !important;outline-offset:8px}[data-textolite-disabled]{outline-color:#f00 !important}</script><script type="text/template" id="j" data-ck="{is_edited}">{source}</script></body></html>',
"d" =>
'<!doctype html><html id="c"><head><title>{title} - Textolite</title><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="stylesheet" href="{system_url}textolite.css?v={version}"></head><body><div><ol data-cl="<li style=height:0px></li>"></ol><pre contenteditable data-cm="{redraw_delay}" data-cn="{code_highlighting}" data-co="{code_undo_limit}"></pre></div>{panel}<script type="text/template" id="j" data-ck="{is_edited}">{source}</script></body></html>',
"n" =>
'<li><ol class="r"><li><a data-cp="{url}">{name}</a></li><li data-cq="{size}"></li><li>{date}</li><li><i title="{add_file}"></i></li></ol><ul></ul></li>',
"b" =>
'<li><ol class="t"><li><a data-cp="{url}">{name}</a></li><li data-cq="{size}"></li><li>{date}</li><li><i title="{delete_file}"></i><i title="{deletion_confirm}"></i><i title="{deletion_cancel}"></i></li></ol></li>',
"m" => '<li title="{{lang}}">{radio}{lang}</li>',
"l" => '<input type="radio" name="{name}" value="{value}">',
"k" => '<input type="radio" name="{name}" value="{value}" checked>',
"g" => '<input type="checkbox">',
"f" => '<input type="checkbox" checked>',
];
$this->a["a"] = $a;
$this->a["b"] = $this->g(a_);
if (!$this->a["b"]) {
$this->a["b"] = $b;
}
$this->a["c"] = str_ireplace($this->a["b"], "", $this->a["a"]);
$this->a["d"] = $this->f($a);
$this->a["e"] = $this->f($this->a["c"]);
}
public function __destruct()
{
if ($this->f) {
$this->i();
}
}
public function a()
{
return $this->a["b"];
}
public function b()
{
return $this->a["a"];
}
public function c($a = false)
{
return $this->a["c"];
}
public function d()
{
return $this->a["d"];
}
public function e()
{
return $this->a["e"];
}
public function f($a)
{
if (substr_count($a, "/") > 2) {
return dirname($a) . "/";
} else {
return "/";
}
}
public function g($a, $b = false)
{
if ($b) {
if (isset($this->d[$b][$a])) {
return $this->d[$b][$a];
}
} elseif (isset($this->d[$a])) {
return $this->d[$a];
}
}
public function h($a, $b, $c = false)
{
if ($c) {
if (isset($this->d[$c])) {
$this->f = true;
return $this->d[$c][$a] = $b;
}
} else {
$this->f = true;
return $this->d[$a] = $b;
}
}
private function i()
{
foreach ($this->d as $a => $b) {
if (!is_array($b)) {
$c[] = $a . " = " . $b . self::a . self::a;
}
}
foreach ($this->d as $a => $b) {
if (is_array($b)) {
$c[] = "[" . $a . "]" . self::a . self::a;
foreach ($b as $d => $e) {
$c[] = " " . $d . " = " . $e . self::a;
}
$c[] = self::a;
}
}
if ($f = fopen($this->a["a"] . self::c, "w")) {
flock($f, LOCK_EX);
fwrite($f, implode("", $c));
flock($f, LOCK_UN);
fclose($f);
}
}
public function j()
{
return is_writable($this->a["a"] . self::c);
}
public function k($a)
{
if (isset($this->e[$a])) {
return $this->e[$a];
}
}
public function l($a, $b)
{
foreach ($b as $c => $d) {
$a = str_ireplace("{" . $c . "}", $d, $a);
}
return $a;
}
public function m($a, $b)
{
preg_match_all("~\{([a-z0-9_]{2,30})\}~i", $a, $c);
if ($c[1]) {
$c[1] = array_unique($c[1]);
foreach ($c[1] as $d) {
if ($e = $this->n($d, $b)) {
$a = str_ireplace("{" . $d . "}", $e, $a);
}
}
}
return $a;
}
public function n($a, $b)
{
if (isset($this->c[$b][$a])) {
return $this->c[$b][$a];
}
}
}
final class d
{
const a = "2.12s";
private $a;
private $b;
private $c;
private $d;
private $e;
public function __construct($a, $b, $c)
{
$this->b = $a;
$this->c = $b;
$this->a = $c;
$this->d = $this->g();
$this->e = $this->h();
}
public function a()
{
$a = $this->b->d(__ . o_, _p);
if ($a && $a == $this->a->g(o_)) {
$this->b();
} else {
$b = time();
$c = unserialize(urldecode($this->a->g(t_)));
$d = $this->a->g(u_);
$e = $this->b->c(g_);
if ($c && isset($c[$e])) {
$f = $c[$e];
} else {
$f = 0;
}
if ($this->b->b() && $this->b->c(_m)) {
$g = $this->b->b(n_, _p);
if (
$g &&
($f < $d || $this->a->g(s_) + $this->a->g(v_) * 60 < $b)
) {
$h = $this->a->g(n_);
$i = $this->a->g(q_) * 1;
$j = $this->a->g(p_) * 1;
$k = $j - $i;
for ($l = 0; $l < $k; $l++) {
$g = sha1($g);
}
if ($h == $g) {
if ($this->a->j()) {
$this->m();
if (isset($c[$e])) {
unset($c[$e]);
$this->a->h(t_, urlencode(serialize($c)));
}
if ($i < 5) {
$this->a->h(q_, 15000);
} else {
$this->a->h(q_, $i - 1);
}
$this->a->h(r_, $b);
$this->a->h(O_, "");
} else {
$this->c->a("X-a:1");
$this->c->b(404, $this->a->n(_t, "en"));
}
} else {
$this->a->h(s_, $b);
$c[$e] = $f + 1;
$this->a->h(t_, urlencode(serialize($c)));
$this->c->b(404, $this->a->n(_t, "en"));
}
} else {
$this->c->b(404, $this->a->n(_t, "en"));
}
} else {
if (
!$this->a->g(x_) ||
($this->b->c(e_) &&
$this->b->c(f_) &&
preg_match(
"~Chrome|Firefox|Opera|Safari|AppleWebKit|Trident|MSIE~i",
$this->b->c(f_)
))
) {
if (
$f < $d ||
$this->a->g(s_) + $this->a->g(v_) * 60 < $b
) {
if ($this->b->c(c_) === substr($this->a->c(), 0, -1)) {
throw new Exception($this->a->c(), 307);
}
$m[P_] = $this->a->c();
$m[Q_] = $d;
$m[R_] = $f;
$m[p_] = $this->a->g(q_);
$m[Y_] = self::a;
$n = $this->a->k("a");
$n = $this->a->l($n, $m);
$n = $this->a->m($n, $this->d);
$this->c->f($n);
} else {
throw new Exception(false, 403);
}
} else {
throw new Exception(false, 403);
}
}
}
}
public function b()
{
$aa = $this->b->a("q");
$ab = $this->a->d() . $aa;
if (!$aa || !preg_match('~\.[a-z]{2,5}$~i', $aa)) {
if ($this->b->c(i_) != str_replace("\", "/", __FILE__)) {
$this->k();
}
$ac = $this->a->d() . $this->a->g(D_);
if (!file_exists($ac) && ($ad = $this->j())) {
throw new Exception($this->a->c() . $this->i() . $ad, 307);
} else {
throw new Exception(
$this->a->c() . $this->i() . $this->a->g(D_),
307
);
}
}
if (
stripos(
$aa,
substr(
$this->a->c(),
strripos(substr($this->a->c(), 0, -1), "/") + 1
)
) === 0
) {
throw new Exception(
$this->a->c() . $this->i() . $this->a->g(D_),
307
);
}
if ($this->b->c(_m)) {
if ($this->b->b("reload")) {
$this->m();
} elseif ($this->b->b("logout")) {
$this->n();
} elseif (
($ae = $this->b->b("save")) &&
($af = $this->b->b(_o, _p)) &&
$af == $this->b->d(__ . _o, _p)
) {
$this->c->e(__ . _o);
$ae = str_replace(
_L,
_K,
base64_decode(str_replace("_", "a", $ae))
);
$ae = str_replace(_J, _I, $ae);
if ($this->q(strtolower(substr($ab, strripos($ab, ".") + 1)))) {
if (is_writable($ab) && ($ag = fopen($ab, "w"))) {
flock($ag, LOCK_EX);
fwrite($ag, $ae);
flock($ag, LOCK_UN);
fclose($ag);
$this->a->h(O_, "");
} else {
$this->c->a("X-a:1");
$this->c->b(404, $this->a->n(_t, "en"));
}
} else {
$this->c->b(404, $this->a->n(_t, "en"));
}
} elseif ($ah = $this->b->b("open")) {
$ah = rawurldecode($ah);
$this->c->f($this->w($ah));
} elseif (
($ah = $this->b->b("upload")) &&
($af = $this->b->b(_o, _p)) &&
$af == $this->b->d(__ . _o, _p)
) {
$this->c->e(__ . _o);
$ah = rawurldecode($ah);
$ai = $this->a->d() . substr($ah, strlen($this->a->e()));
$aj = $this->b->e(_C);
if ($ak = count($aj) && is_dir($ai)) {
$al = "";
$am = $this->a->k("b");
$an = str_replace(
" ",
"",
str_replace(",", "|", $this->a->g(C_))
);
foreach ($aj[_G] as $ao => $ap) {
if (
$this->q(
strtolower(
substr(
$aj[_y][$ao],
strripos($aj[_y][$ao], ".") + 1
)
)
)
) {
if (!$aj[_D][$ao]) {
$ab = $ai . $aj[_y][$ao];
move_uploaded_file($ap, $ab);
$aq[_y] = $aj[_y][$ao];
$aq[_z] = filemtime($ab);
$aq[_A] = filesize($ab);
preg_match(
"~\.(?:" . $an . ')$~i',
$aq[_y],
$ar
);
if (isset($ar[0])) {
$aq[_x] =
$this->a->c() .
$this->i() .
substr($ah, strlen($this->a->e())) .
$aq[_y];
} else {
$aq[_x] = $ah . $aq[_y];
}
$al .= $this->a->m(
$this->a->l($am, $aq),
$this->d
);
} else {
$as = true;
}
} else {
$at = true;
}
if (isset($al)) {
$this->a->h(O_, "");
$this->c->a("X-b:" . $this->y($ah));
$this->c->f($al);
}
if (isset($at)) {
$this->c->a("X-c:1");
} elseif (isset($as)) {
$this->c->a("X-d:1");
}
}
} else {
$this->c->b(404, $this->a->n(_t, "en"));
}
} elseif (
($au = $this->b->b("remove")) &&
($af = $this->b->b(_o, _p)) &&
$af == $this->b->d(__ . _o, _p)
) {
$this->c->e(__ . _o);
$au = rawurldecode($au);
if ($this->q(strtolower(substr($au, strripos($au, ".") + 1)))) {
$au = str_replace($this->a->c(), $this->a->e(), $au);
$ab = $this->a->d() . substr($au, strlen($this->a->e()));
if (is_file($ab) && unlink($ab)) {
$this->a->h(O_, "");
$this->c->a("X-b:" . $this->y(dirname($au) . "/"));
} else {
$this->c->b(404, $this->a->n(_t, "en"));
}
} else {
$this->c->a("X-c:1");
$this->c->b(404, $this->a->n(_t, "en"));
}
} elseif (
($av = $this->b->b("settings")) &&
($af = $this->b->b(_o, _p)) &&
$af == $this->b->d(__ . _o, _p)
) {
$this->c->e(__ . _o);
if ($av[n_]) {
$aw = $this->a->g(n_);
$ax = $this->a->g(p_) - $this->a->g(q_);
for ($ay = 0; $ay < $ax; $ay++) {
$av[n_] = sha1($av[n_]);
}
if ($av[n_] != $aw) {
$this->a->h(n_, $av[n_]);
}
}
if ($av[m_] && $av[m_] != $this->d) {
if (
stripos($az = $this->a->g(m_), ",") &&
stripos($az, $av[m_]) !== false
) {
if ($av[m_] != $this->b->c(e_)) {
$this->c->d(
__ . m_,
$av[m_],
time() + 60 * 60 * 24 * 365,
$this->a->c(),
false,
false,
true
);
} else {
$this->c->e(__ . m_, $this->a->c());
}
} else {
$this->c->b(404, $this->a->n(_t, "en"));
}
}
if (
$this->a->g(D_) !== null &&
preg_match('~^.{1,30}$~i', $av[D_], $ar) &&
isset($ar[0])
) {
$this->a->h(D_, $av[D_]);
} else {
$this->c->b(404, $this->a->n(_t, "en"));
}
unset($av[n_], $av[m_], $av[D_]);
foreach ($av as $ao => $aA) {
if (
$this->a->g($ao) !== null &&
preg_match('~^[0-9]{1,7}$~i', $aA, $ar) &&
isset($ar[0])
) {
$this->a->h($ao, $aA);
} else {
$this->c->b(404, $this->a->n(_t, "en"));
}
}
} elseif (
($aB = $this->b->b("scripts")) &&
($af = $this->b->b(_o, _p)) &&
$af == $this->b->d(__ . _o, _p)
) {
$this->c->e(__ . _o);
if ($this->a->g(K_) !== null) {
$this->a->h(K_, "0");
} else {
$this->c->b(404, $this->a->n(_t, "en"));
}
} elseif (
($aC = $this->b->b("install")) &&
($af = $this->b->b(_o, _p)) &&
$af == $this->b->d(__ . _o, _p)
) {
$this->c->e(__ . _o);
$aD = $this->a->b() . "update.php";
preg_match('~^[a-z0-9+=/_]+$~i', $aC, $ar);
if (
isset($ar[0]) &&
($aC = base64_decode(str_replace("_", "a", $aC))) &&
($ag = fopen($aD, "w"))
) {
flock($ag, LOCK_EX);
$aE = fwrite($ag, $aC);
flock($ag, LOCK_UN);
fclose($ag);
if ($aE) {
$aq = include $aD;
if ($aq == _D) {
$this->c->b(404, $this->a->n(_t, "en"));
} elseif (file_exists($this->a->d() . $aq)) {
$this->c->f($this->a->c() . $this->i() . $aq);
}
unlink($aD);
} else {
$this->c->b(404, $this->a->n(_t, "en"));
}
} else {
$this->c->b(404, $this->a->n(_t, "en"));
}
} else {
$this->c->b(404, $this->a->n(_t, "en"));
}
} else {
$this->m();
if (file_exists($ab)) {
$aF = strtolower(substr($ab, strripos($ab, ".") + 1));
if ($this->q($aF)) {
$aG = str_replace(
" ",
"",
str_replace(",", "|", $this->a->g(_s))
);
preg_match("~^" . $aG . '$~i', $aF, $ar);
if (isset($ar[0])) {
$aH = $this->b->d(__ . _q);
$aI = $this->b->b("switch");
if ($aH) {
if ($aI === "0") {
$this->c->e(__ . _q, $this->a->c());
$this->c($ab);
} else {
$this->d($ab);
}
} else {
if ($aI === "1") {
$this->c->d(
__ . _q,
1,
time() + 60 * 60 * 24 * 90,
$this->a->c(),
false,
false,
true
);
$this->d($ab);
} else {
$this->c($ab);
}
}
} else {
$this->d($ab);
}
} else {
$this->e(_u);
}
} else {
$this->e(_t);
}
}
}
public function c($a)
{
$b[X_] = $this->a->n("visual_editor", $this->d);
$b[P_] = $this->a->c();
$b[Y_] = self::a;
$b[V_] = $this->a->e();
$c = $this->b->a("q");
if ($d = strripos($c, "/")) {
$b[V_] .= substr($c, 0, $d + 1);
}
$b["panel"] = $this->r($a);
$b[_n] = $this->o();
if (!$b[_n]) {
$b[_n] = $this->p($a);
$b[Z_] = "";
} else {
$b[Z_] = "1";
}
$b[_n] = str_replace("{", "!~!", $b[_n]);
$e = $this->a->k("c");
$e = $this->a->l($e, $b);
$e = $this->a->m($e, $this->d);
$e = str_replace("!~!", "{", $e);
$this->c->f($e);
}
public function d($a)
{
$b[X_] = $this->a->n("source_editor", $this->d);
$b[P_] = $this->a->c();
$b[Y_] = self::a;
$b[S_] = $this->a->g(y_);
$b[A_] = $this->a->g(A_);
$b[z_] = $this->a->g(z_);
$b["panel"] = $this->r($a);
$b[_n] = $this->o();
if (!$b[_n]) {
$b[_n] = $this->p($a);
$b[Z_] = "";
} else {
$b[Z_] = "1";
}
$b[_n] = str_replace("{", "!~!", $b[_n]);
$c = $this->a->k("d");
$c = $this->a->l($c, $b);
$c = str_replace("!~!", "{", $c);
$this->c->f($c);
}
public function e($a)
{
$b[W_] = $a;
$b[P_] = $this->a->c();
$b[Y_] = self::a;
$b["panel"] = $this->r($a);
$c = $this->a->k("e");
$c = $this->a->l($c, $b);
return $this->a->m($c, $this->d);
}
public function f($a)
{
$this->c->b($a->getCode(), $this->a->n($a->getCode(), "en"));
if ($b = $a->getMessage()) {
$this->c->c($b);
}
$c[W_] = $a->getCode();
$c[P_] = $this->a->c();
$c[Y_] = self::a;
$c["panel"] = "";
$d = $this->a->k("e");
$d = $this->a->l($d, $c);
return $this->c->f($this->a->m($d, $this->d));
}
private function g()
{
$a = $this->a->g(m_);
if (stripos($a, ",")) {
$b = $this->b->d(__ . m_);
if ($b && stripos($a, $b) !== false) {
return $b;
} else {
$c = substr($this->b->c(e_), 0, 2);
if (stripos($a, $c) !== false) {
return $c;
}
}
}
return substr($a, 0, 2);
}
private function h()
{
$a = $this->a->g(F_);
if ($a === "1") {
return 1;
} elseif ($a === "0") {
return 0;
} else {
if (
stripos($this->b->c(b_), "q=") === 0 &&
stripos($this->b->c(c_), $this->b->c(b_)) === false
) {
return 1;
} else {
return 0;
}
}
}
private function i()
{
if (!$this->e) {
return "?q=";
} else {
return "";
}
}
private function j()
{
$a = $this->a->d();
if ($b = opendir($a)) {
$c = [];
$d = [];
$e = str_replace(" ", "", str_replace(",", "|", $this->a->g(_s)));
$f = str_replace(" ", "", str_replace(",", "|", $this->a->g(C_)));
while (($g = readdir($b)) !== false) {
if ($g != "." && $g != "..") {
if (is_file($a . $g)) {
if (preg_match("~^index\.(?:" . $e . ')$~i', $g)) {
closedir($b);
return $g;
} elseif (preg_match("~\.(?:" . $e . ')$~i', $g)) {
$c[] = $g;
} elseif (preg_match("~\.(?:" . $f . ')$~i', $g)) {
$d[] = $g;
}
}
}
}
closedir($b);
if (isset($c[0])) {
return $c[0];
} elseif (isset($d[0])) {
return $d[0];
}
}
}
private function k()
{
$a = $this->a->b() . ".htaccess";
if (file_exists($a)) {
$b = file_get_contents($a);
preg_match('~RewriteBase (.+?)
~i', $b, $c);
if (isset($c[0]) && isset($c[1])) {
if ($c[1] != $this->a->c()) {
$b = str_replace(
$c[0],
"RewriteBase " . $this->a->c() . "
",
$b
);
$this->l($b);
}
} else {
$b = preg_replace(
'~(RewriteEngine .+?
)~i',
'$1' . "
" . "RewriteBase " . $this->a->c() . "
",
$b
);
$this->l($b);
}
}
}
private function l($a)
{
if ($b = fopen($this->a->b() . ".htaccess", "w")) {
flock($b, LOCK_EX);
fwrite($b, $a);
flock($b, LOCK_UN);
fclose($b);
}
}
private function m()
{
$a = sha1(time() . mt_rand());
$this->a->h(o_, $a);
$this->c->d(
__ . o_,
$a,
time() + 60 * $this->a->g(w_),
$this->a->c(),
false,
false,
true
);
}
private function n()
{
$this->a->h(o_, "");
$this->c->e(__ . o_, $this->a->c());
}
private function o()
{
$a = $this->b->b("switch");
if (is_numeric($a)) {
$b = $this->b->b(_n);
if ($b && ($c = $this->b->b(_o)) && $c == $this->b->d(__ . _o)) {
$b = base64_decode(str_replace("_", "a", $b));
$this->c->a("X-e:0");
$this->c->e(__ . _o);
return $b;
}
}
}
private function p($a)
{
$b = file_get_contents($a);
preg_match("~<meta[^>]+utf-8~i", $b, $c);
preg_match("~<meta[^>]+windows-1251~i", $b, $d);
if (!isset($c[0]) && isset($d[0])) {
$b = preg_replace("~(<meta[^>]+)windows-1251~i", '$1utf-8', $b);
$b = iconv("Windows-1251", "UTF-8", $b);
}
$b = str_replace(_K, _L, $b);
return str_replace(_I, _J, $b);
}
private function q($a)
{
$b = $this->a->g(B_);
if (!$b || preg_match("~(?:^|,\s*)" . $a . '(?:\s*,|$)~i', $b)) {
return true;
}
}
private function r($a)
{
$b[T_] = $this->s($a);
$b[_r] = $this->v();
$b[P_] = $this->a->c();
$b[Y_] = self::a;
$b[_b] = $this->u(ini_get(_b));
$b[_c] = ini_get(_c);
$b[p_] = $this->a->g(q_);
$b[u_] = $this->a->g(u_);
$b[v_] = $this->a->g(v_);
$b[w_] = $this->a->g(w_);
$b[G_] = $this->a->g(G_);
if ($b[G_]) {
$b[G_ . _d] = $this->a->k("f");
} else {
$b[G_ . _d] = $this->a->k("g");
}
$b[K_] = $this->a->g(K_);
if ($b[K_]) {
$b[K_ . _d] = $this->a->k("f");
} else {
$b[K_ . _d] = $this->a->k("g");
}
$b[L_] = $this->a->g(L_);
if ($b[L_]) {
$b[L_ . _d] = $this->a->k("f");
} else {
$b[L_ . _d] = $this->a->k("g");
}
$b[y_] = $this->a->g(y_);
$b[z_] = $this->a->g(z_);
if ($this->a->g(A_)) {
$b[A_ . _d] = $this->a->k("f");
} else {
$b[A_ . _d] = $this->a->k("g");
}
if ($this->a->g(_Q)) {
$b[_Q . _d] = $this->a->k("f");
} else {
$b[_Q . _d] = $this->a->k("g");
}
$b[D_] = $this->a->g(D_);
$b[M_] = $this->a->g(M_);
if ($b[M_]) {
$b[M_ . _d] = $this->a->k("f");
} else {
$b[M_ . _d] = $this->a->k("g");
}
$b[N_] = $this->a->g(N_);
if ($b[N_]) {
$b[N_ . _d] = $this->a->k("f");
} else {
$b[N_ . _d] = $this->a->k("g");
}
$b[_v] = $this->b->c(g_);
$b[_w] = $this->b->c(h_);
$b[_a] = $this->u(ini_get(_a));
$b[_H] = $this->t();
$c = $this->a->k("h");
$c = $this->a->l($c, $b);
return $this->a->m($c, $this->d);
}
private function s($a)
{
if (is_numeric($a)) {
$b[U_] = $a;
$c = $this->a->k("i");
} else {
$d = strtolower(substr($a, strripos($a, ".") + 1));
$e = str_replace(" ", "", str_replace(",", "|", $this->a->g(_s)));
preg_match("~^" . $e . '$~i', $d, $f);
if (isset($f[0])) {
$c = $this->a->k("j");
} else {
$c = $this->a->k("i");
}
if ($d == "htm") {
$b[U_] = _q;
} else {
$b[U_] = $d;
}
}
$c = $this->a->l($c, $b);
return $this->a->m($c, $this->d);
}
private function t()
{
$a = "";
$b = explode(",", $this->a->g(m_));
$c[_y] = m_;
foreach ($b as $d) {
$c[_E] = trim($d);
if ($this->d == $c[_E]) {
$e = $this->a->k("k");
} else {
$e = $this->a->k("l");
}
$f[_F] = $this->a->l($e, $c);
$f[m_] = $c[_E];
$g = $this->a->k("m");
$g = $this->a->l($g, $f);
$a .= $this->a->m($g, $this->d);
}
return $a;
}
private function u($a)
{
$a = strtolower(trim($a));
$b = (int) $a;
switch ($a[strlen($a) - 1]) {
case "m":
return $b * 1048576;
case "k":
return $b * 1024;
case "g":
return $b * 1073741824;
default:
return $b;
}
}
private function v()
{
$a = $this->a->e();
$b = $this->a->d();
if ($a == "/") {
$c[_y] = $this->b->c(k_);
} else {
$c[_y] = substr($a, strrpos(substr($a, 0, -1), "/") + 1, -1);
}
$c[_z] = filemtime($b);
$c[_x] = $a;
$c[_A] = "";
$d = $this->a->k("n");
$d = $this->a->l($d, $c);
return $this->a->m($d, $this->d);
}
private function w($a)
{
$b = $this->a->d() . substr($a, strlen($this->a->e()));
$c = [];
$d = [];
$e = str_replace(" ", "", str_replace(",", "|", $this->a->g(C_)));
if ($f = opendir($b)) {
while (($g = readdir($f)) !== false) {
if ($g != "." && $g != "..") {
$h = [];
$h[_y] = $g;
$h[_z] = filemtime($b . $g);
if (is_file($b . $g)) {
preg_match("~\.(?:" . $e . ')$~i', $g, $i);
if (isset($i[0])) {
$h[_x] =
$this->a->c() .
$this->i() .
substr($a, strlen($this->a->e())) .
$g;
} else {
$h[_x] = $a . $g;
}
$h[_A] = filesize($b . $g);
$d[] = $h;
} elseif (is_dir($b . $g) && !is_link($b . $g)) {
$h[_x] = $a . $g . "/";
$h[_A] = $this->y($h[_x]);
$c[] = $h;
}
}
}
closedir($f);
}
$j = "";
if (count($c)) {
$c = $this->x($c);
$k = $this->a->k("n");
foreach ($c as $l) {
$m = $k;
$j .= $this->a->m($this->a->l($m, $l), $this->d);
}
}
if (count($d)) {
$d = $this->x($d);
$n = $this->a->k("b");
foreach ($d as $o) {
$j .= $this->a->m($this->a->l($n, $o), $this->d);
}
}
if ($b == $this->a->d()) {
$this->c->a("X-b:" . $this->y($a));
}
return $j;
}
private function x($a)
{
$b = [];
$c = [];
foreach ($a as $d) {
$b[] = $d[_y];
}
asort($b);
foreach ($b as $e) {
foreach ($a as $d) {
if ($e == $d[_y]) {
$c[] = $d;
}
};
}
return $c;
}
private function y($a)
{
if ($this->a->g(_Q)) {
$b = $this->a->g(O_);
if (!$b) {
$b = $this->z($this->a->e());
$this->a->h(O_, urlencode(serialize($b)));
} else {
$b = unserialize(urldecode($b));
}
return $b[$a];
} else {
return "";
}
}
private function z($a)
{
$b = $this->a->d() . substr($a, strlen($this->a->e()));
$c = [];
$c[$a] = 0;
if ($d = opendir($b)) {
while (($e = readdir($d)) !== false) {
if ($e != "." && $e != "..") {
if (is_file($b . $e)) {
$c[$a] += filesize($b . $e);
} elseif (is_dir($b . $e . "/") && !is_link($b . $e)) {
$f = $this->z($a . $e . "/");
$c[$a] += $f[$a . $e . "/"];
$c = array_merge($c, $f);
}
}
}
closedir($d);
}
return $c;
}
}
$a = new a();
$b = new b($a->c(l_));
$c = new c(dirname($a->c(i_)) . "/", $a->c(a_));
$d = new d($a, $b, $c);
try {
$d->a();
} catch (Exception $e) {
$d->f($e);
}
$b->g(); ?>
Did this file decode correctly?
Original Code
<?php /* Textolite v2.12s */ ini_set("error_reporting", E_ALL);
ini_set("display_errors", 0);
ini_set("log_errors", 1);
ini_set("error_log", "error.log");
version_compare(PHP_VERSION, "5.2", ">=") ||
exit("PHP " . PHP_VERSION . " is not supported");
define("a_", "document_root");
define("b_", "query_string");
define("c_", "request_uri");
define("d_", "php_self");
define("e_", "http_accept_language");
define("f_", "http_user_agent");
define("g_", "remote_addr");
define("h_", "server_addr");
define("i_", "script_filename");
define("j_", "script_name");
define("k_", "server_name");
define("l_", "server_protocol");
define("m_", "lang");
define("n_", "password");
define("o_", "session");
define("p_", "pass_complexity");
define("q_", "pass_complexity_js");
define("r_", "auth_time");
define("s_", "auth_error_time");
define("t_", "auth_error_list");
define("u_", "auth_error_limit");
define("v_", "auth_lockout_duration");
define("w_", "auth_session_reset");
define("x_", "auth_bot_filter");
define("y_", "code_redraw_delay");
define("z_", "code_undo_limit");
define("A_", "code_highlighting");
define("_s", "visual_ext");
define("B_", "allowed_ext");
define("C_", "editable_ext");
define("D_", "default_file");
define("_Q", "folder_size");
define("E_", "document_root");
define("F_", "url_rewrite");
define("G_", "logout_to_site");
define("K_", "site_scripts");
define("L_", "site_styles");
define("M_", "update_final");
define("N_", "update_beta");
define("O_", "cache");
define("_r", "filelist");
define("P_", "system_url");
define("Q_", "error_limit");
define("R_", "error_count");
define("S_", "redraw_delay");
define("T_", "mode");
define("U_", "type");
define("V_", "base");
define("W_", "code");
define("X_", "title");
define("Y_", "version");
define("Z_", "is_edited");
define("_a", "post_max_size");
define("_b", "upload_max_filesize");
define("_c", "max_file_uploads");
define("_d", "_checkbox");
define("_m", "http_ajax");
define("_n", "source");
define("_o", "token");
define("_p", "sha1");
define("_q", "html");
define("_t", "404");
define("_u", "403");
define("_v", "ip");
define("_w", "sip");
define("_x", "url");
define("_y", "name");
define("_z", "date");
define("_A", "size");
define("_B", "list");
define("_C", "file");
define("_D", "error");
define("_E", "value");
define("_F", "radio");
define("_G", "tmp_name");
define("_H", "language_list");
define("_I", "<script");
define("_J", "<_cript");
define("_K", "</script");
define("_L", "</_cript");
define("_M", "</body>");
define("_N", "<!--~~?");
define("_O", "?~~-->");
define("__", "textolite_");
final class a
{
private $a;
private $b;
public function __construct()
{
$this->a["a"] = $_GET;
$this->a["b"] = $_POST;
$this->a["c"] = $_SERVER;
$this->a["d"] = $_COOKIE;
$this->a["e"] = $_FILES;
}
public function a($a)
{
if (isset($this->b["a"][$a])) {
return $this->b["a"][$a];
} elseif (isset($this->a["a"][$a])) {
return $this->b["a"][$a] = $this->f($this->a["a"][$a], $a);
}
}
public function b($a = false)
{
if ($a) {
if (isset($this->b["b"][$a])) {
return $this->b["b"][$a];
} elseif (isset($this->a["b"][$a])) {
return $this->b["b"][$a] = $this->f($this->a["b"][$a], $a);
}
} elseif (count($this->a["b"])) {
return true;
}
}
public function c($a)
{
if (isset($this->b["c"][$a])) {
return $this->b["c"][$a];
} else {
$b = strtoupper($a);
if (isset($this->a["c"][$b])) {
return $this->b["c"][$a] = $this->f($this->a["c"][$b], $a);
}
}
}
public function d($a)
{
if (isset($this->b["d"][$a])) {
return $this->b["d"][$a];
} elseif (isset($this->a["d"][$a])) {
return $this->b["d"][$a] = $this->f($this->a["d"][$a], $a);
}
}
public function e($a)
{
if (isset($this->a["e"][$a])) {
return $this->a["e"][$a];
}
}
private function f($a, $b)
{
$c = "_" . $b;
if (method_exists($this, $c)) {
return $this->$c($a);
} else {
return $a;
}
}
private function _server_protocol($a)
{
preg_match('~^[a-z]{4,5}/[0-9]\.[0-9]$~i', $a, $b);
if (isset($b[0])) {
return $b[0];
}
}
private function _server_name($a)
{
preg_match('~^[a-z0-9-_.]{2,300}$~i', $a, $b);
if (isset($b[0])) {
return $b[0];
}
}
private function _script_filename($a)
{
$b = str_replace("\\", "/", __FILE__);
if (stripos($b, $this->a["c"][strtoupper(a_)]) === 0) {
return $b;
} else {
return str_replace("\\", "/", $a);
}
}
private function _document_root($a)
{
$a = str_replace("\\", "/", $a);
$b = $this->c(i_);
$c = $this->c(d_);
$d = $this->c(j_);
if (stripos($b, $c) > 0) {
$e = str_ireplace($c, "", $b);
}
if (stripos($b, $d) > 0) {
$f = str_ireplace($d, "", $b);
}
if (isset($e)) {
if (isset($f)) {
if (strlen($e) > strlen($f)) {
$g = $e;
} else {
$g = $f;
}
} else {
$g = $e;
}
} elseif (isset($f)) {
$g = $f;
} else {
$g = $a;
}
if (stripos($b, $a) === 0) {
if (strlen($g) > strlen($a)) {
$a = $g;
}
} else {
$a = $g;
}
if (substr($a, -1) == "/") {
return substr($a, 0, -1);
}
return $a;
}
private function _php_self($a)
{
return str_replace("\\", "/", $a);
}
private function _script_name($a)
{
return str_replace("\\", "/", $a);
}
private function _query_string($a)
{
return str_replace("\\", "/", $a);
}
private function _remote_addr($a)
{
return $this->_ip($a);
}
private function _server_addr($a)
{
return $this->_ip($a);
}
private function _ip($a)
{
preg_match('~^[a-z0-9.:]{1,40}$~i', $a, $b);
if (isset($b[0])) {
return $b[0];
}
}
private function _sha1($a)
{
preg_match('~^[a-z0-9]{40}$~i', $a, $b);
if (isset($b[0])) {
return $b[0];
}
}
}
final class b
{
private $a;
private $b;
private $c;
private $d;
public function __construct($a)
{
$this->a = $a;
$this->a("Content-type:text/html;charset=utf-8");
}
public function a($a)
{
return $this->b[] = $a;
}
public function b($a, $b)
{
return $this->b[] = $this->a . " " . $a . " " . $b;
}
public function c($a)
{
return $this->b[] = "Location:" . $a;
}
public function d(
$a,
$b = false,
$c = false,
$d = false,
$e = false,
$f = false,
$g = false
) {
$h["a"] = $a;
$h["b"] = $b;
$h["c"] = $g;
$h["d"] = (int) $c;
$h["e"] = str_replace("%2F", "/", urlencode($d));
$h["f"] = $e;
$h["g"] = (int) $f;
$this->c[] = $h;
}
public function e($a, $b = false, $c = false)
{
$this->d($a, "", time() - 60 * 60, $b, $c);
}
public function f($a)
{
return $this->d = $a;
}
public function g()
{
if (isset($this->b)) {
foreach ($this->b as $a) {
header($a);
};
}
if (isset($this->c)) {
foreach ($this->c as $b) {
setcookie(
$b["a"],
$b["b"],
$b["d"],
$b["e"],
$b["f"],
$b["g"],
$b["c"]
);
};
}
if (isset($this->d)) {
print $this->d;
}
}
}
final class c
{
const a = "\n";
const b = "lang.ini";
const c = "conf.ini";
private $a;
private $b;
private $c;
private $d;
private $e;
private $f;
public function __construct($a, $b)
{
$this->c = parse_ini_file($a . self::b, true);
$this->d = parse_ini_file($a . self::c, true);
$this->e = [
"j" =>
'<ol><li title="{source_editor}">{type}</li><li title="{visual_editor}">text</li></ol>',
"i" => "<ol><li>{type}</li></ol>",
"h" =>
'<div id="e"><div><div><h1><a href="//textolite.ru/">Textolite</a> v{version}</h1><p>{standard}</p></div>{mode}<ul><li><a title="{files}">{files}</a><div id="f"><ol><li>{file_name}</li><li>{file_size}</li><li>{file_changed}</li><li>{file_menu}</li></ol><ul>{filelist}</ul></div></li><li><a title="{settings}">{settings}</a><div id="g"><fieldset><legend>{auth}</legend><dl><dt title="{new_password}">{new_password}:</dt><dd><input type="password" maxlength="14"><a></a></dd><dt title="{auth_error_limit_desc}">{login_attempts}:</dt><dd data-aa="5"><input type="text" maxlength="2" value="{auth_error_limit}"></dd><dt title="{auth_lockout_duration_desc}">{lockout_duration}:</dt><dd data-aa="1"><input type="text" maxlength="7" value="{auth_lockout_duration}"></dd><dt title="{auth_session_reset_desc}">{session_autoreset}:</dt><dd data-aa="60"><input type="text" maxlength="7" value="{auth_session_reset}"></dd><dd title="{logout_to_site_desc}" data-aa="0"><label>{logout_to_site_checkbox}<em></em>{redirect_to_site}</label></dd></dl></fieldset><fieldset><legend>{visual_editor}</legend><dl><dd title="{site_scripts_desc}" data-aa="1"><label>{site_scripts_checkbox}<em></em>{enable_scripts}</label></dd><dd title="{site_styles_desc}" data-aa="1"><label>{site_styles_checkbox}<em></em>{enable_styles}</label></dd></dl></fieldset><fieldset><legend>{source_editor}</legend><dl><dt title="{code_redraw_delay_desc}">{redraw_delay}:</dt><dd data-aa="200"><input type="text" maxlength="7" value="{code_redraw_delay}"></dd><dt title="{code_undo_limit_desc}">{steps_for_undo}:</dt><dd data-aa="50"><input type="text" maxlength="3" value="{code_undo_limit}"></dd><dd title="{code_highlighting_desc}" data-aa="1"><label>{code_highlighting_checkbox}<em></em>{enable_highlighting}</label></dd></dl></fieldset><fieldset><legend>{file_manager}</legend><dl><dd title="{folder_size_desc}" data-aa="1"><label>{folder_size_checkbox}<em></em>{display_catalog_size}</label></dd></dl></fieldset><fieldset><legend>{system}</legend><dl><dt title="{default_file_desc}">{main_page_or_file}:</dt><dd data-aa="index.html"><input type="text" maxlength="30" value="{default_file}"></dd><dd title="{new_version_notify}" data-aa="1"><label>{update_final_checkbox}<em></em>{new_version_notify}</label></dd><dd title="{beta_version_notify}" data-aa="0"><label>{update_beta_checkbox}<em></em>{beta_version_notify}</label></dd><dt title="{language}">{language}:</dt><dd><ul>{language_list}</ul></dd></dl></fieldset><fieldset><legend>{extended}</legend><dl><dt title="{activate}">{activate}:</dt><dd><input type="text" maxlength="7"></dd><dt><ol><li><span></span><input type="text" disabled><input type="text" disabled><i></i></li></ol><p>{attachment_domain} <strong></strong>. {attachment_notice}</p><p><input type="button" value="{attach}"><input type="button" value="{cancel}"></p></dt></dl></fieldset><p><input type="button" value="{save}" disabled><a title="{restore_settings}"></a></p></div></li></ul><ul><li><input type="button" value="{save}" title="{save}" disabled></li><li><input type="button" value="{logout}" title="{logout}" disabled data-ab="{not_save}"></li></ul><p><samp data-ac="{saving}" data-ad="{saved}" data-ae="{not_saved}" data-af="{reset_session}" data-ag="{access_closed}" data-ah="{login_again}" data-ai="{request_rejected}" data-aj="{request_blocked}" data-ak="{no_response}" data-al="{not_writable}" data-am="{old_browser}" data-an="{new_version}" data-ao="{need_update}" data-ap="{install}" data-aq="{not_install}" data-ar="{download_installer}" data-as="{system_update}" data-at="{update_error}" data-au="{install_complete}" data-av="{attachment_domain}" data-aw="{no_connect}" data-ax="{password_hashing}" data-ay="{pass_complexity}" data-az="{uploading}" data-bb="{uploading_complete}" data-bc="{uploading_error}" data-bd="{extension_error}" data-be="{count_limit}" data-bf="{size_limit}" data-bg="{file_deletion}" data-bh="{file_deleted}" data-bi="{deletion_error}" data-bj="{unknown_relation}" data-bk="{element_busy}" data-bl="{disable_script}" data-bm="{disable}" data-bn="{disabling_scripts}" data-bo="{scripts_disabled}" data-bp="{show_password}" data-bq="{hide_password}" data-br="{post_max_size}" data-bs="{upload_max_filesize}" data-bt="{max_file_uploads}" data-bu="{auth_session_reset}" data-bv="{site_scripts}" data-bw="{site_styles}" data-bx="{logout_to_site}" data-by="{ip}" data-bz="{sip}" data-bA="{system_url}" data-cc="{version}" data-cd="{update_final}" data-ce="{update_beta}"></samp><noscript><samp>{requires_javascript}</samp></noscript><i></i></p></div></div><script src="{system_url}textolite.js?v={version}"></script>',
"a" =>
'<!doctype html><html id="a"><head><title>{auth} - Textolite</title><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="stylesheet" href="{system_url}textolite.css?v={version}"></head><body><fieldset><legend>{auth}</legend><ol data-cf="{error_limit}" data-cg="{error_count}"><li></li></ol><p><samp data-ax="{password_hashing}" data-ch="{password_checking}" data-ci="{access_granted}" data-cj="{access_denied}" data-ak="{no_response}" data-al="{not_writable}" data-bA="{system_url}">{document_root_error}</samp><noscript><samp>{requires_javascript}</samp></noscript><i></i></p><p><span>{password}:</span><input type="password" data-ay="{pass_complexity}" maxlength="14"><a data-bp="{show_password}" data-bq="{hide_password}"></a></p><p><input type="button" value="{login}" disabled></p></fieldset><script src="{system_url}textolite.js?v={version}"></script></body></html>',
"e" =>
'<!doctype html><html id="b"><head><title>{code} - {{code}} - Textolite</title><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="stylesheet" href="{system_url}textolite.css?v={version}"></head><body><samp><span>{code}</span>{{code}}</samp>{panel}</body></html>',
"c" =>
'<!doctype html><html id="d"><head><title>{title} - Textolite</title><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="stylesheet" href="{system_url}textolite.css?v={version}"></head><body><iframe>{no_frames}</iframe>{panel}<script type="text/template" id="h"><base href="{base}"></script><script type="text/template" id="i">[data-textolite-string]{outline:none;font-style:inherit;cursor:text}[data-textolite-focus]{outline:4px solid #f2ca00 !important;outline-offset:8px}[data-textolite-disabled]{outline-color:#f00 !important}</script><script type="text/template" id="j" data-ck="{is_edited}">{source}</script></body></html>',
"d" =>
'<!doctype html><html id="c"><head><title>{title} - Textolite</title><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="stylesheet" href="{system_url}textolite.css?v={version}"></head><body><div><ol data-cl="<li style=height:0px></li>"></ol><pre contenteditable data-cm="{redraw_delay}" data-cn="{code_highlighting}" data-co="{code_undo_limit}"></pre></div>{panel}<script type="text/template" id="j" data-ck="{is_edited}">{source}</script></body></html>',
"n" =>
'<li><ol class="r"><li><a data-cp="{url}">{name}</a></li><li data-cq="{size}"></li><li>{date}</li><li><i title="{add_file}"></i></li></ol><ul></ul></li>',
"b" =>
'<li><ol class="t"><li><a data-cp="{url}">{name}</a></li><li data-cq="{size}"></li><li>{date}</li><li><i title="{delete_file}"></i><i title="{deletion_confirm}"></i><i title="{deletion_cancel}"></i></li></ol></li>',
"m" => '<li title="{{lang}}">{radio}{lang}</li>',
"l" => '<input type="radio" name="{name}" value="{value}">',
"k" => '<input type="radio" name="{name}" value="{value}" checked>',
"g" => '<input type="checkbox">',
"f" => '<input type="checkbox" checked>',
];
$this->a["a"] = $a;
$this->a["b"] = $this->g(a_);
if (!$this->a["b"]) {
$this->a["b"] = $b;
}
$this->a["c"] = str_ireplace($this->a["b"], "", $this->a["a"]);
$this->a["d"] = $this->f($a);
$this->a["e"] = $this->f($this->a["c"]);
}
public function __destruct()
{
if ($this->f) {
$this->i();
}
}
public function a()
{
return $this->a["b"];
}
public function b()
{
return $this->a["a"];
}
public function c($a = false)
{
return $this->a["c"];
}
public function d()
{
return $this->a["d"];
}
public function e()
{
return $this->a["e"];
}
public function f($a)
{
if (substr_count($a, "/") > 2) {
return dirname($a) . "/";
} else {
return "/";
}
}
public function g($a, $b = false)
{
if ($b) {
if (isset($this->d[$b][$a])) {
return $this->d[$b][$a];
}
} elseif (isset($this->d[$a])) {
return $this->d[$a];
}
}
public function h($a, $b, $c = false)
{
if ($c) {
if (isset($this->d[$c])) {
$this->f = true;
return $this->d[$c][$a] = $b;
}
} else {
$this->f = true;
return $this->d[$a] = $b;
}
}
private function i()
{
foreach ($this->d as $a => $b) {
if (!is_array($b)) {
$c[] = $a . " = " . $b . self::a . self::a;
}
}
foreach ($this->d as $a => $b) {
if (is_array($b)) {
$c[] = "[" . $a . "]" . self::a . self::a;
foreach ($b as $d => $e) {
$c[] = "\t" . $d . " = " . $e . self::a;
}
$c[] = self::a;
}
}
if ($f = fopen($this->a["a"] . self::c, "w")) {
flock($f, LOCK_EX);
fwrite($f, implode("", $c));
flock($f, LOCK_UN);
fclose($f);
}
}
public function j()
{
return is_writable($this->a["a"] . self::c);
}
public function k($a)
{
if (isset($this->e[$a])) {
return $this->e[$a];
}
}
public function l($a, $b)
{
foreach ($b as $c => $d) {
$a = str_ireplace("{" . $c . "}", $d, $a);
}
return $a;
}
public function m($a, $b)
{
preg_match_all("~\{([a-z0-9_]{2,30})\}~i", $a, $c);
if ($c[1]) {
$c[1] = array_unique($c[1]);
foreach ($c[1] as $d) {
if ($e = $this->n($d, $b)) {
$a = str_ireplace("{" . $d . "}", $e, $a);
}
}
}
return $a;
}
public function n($a, $b)
{
if (isset($this->c[$b][$a])) {
return $this->c[$b][$a];
}
}
}
final class d
{
const a = "2.12s";
private $a;
private $b;
private $c;
private $d;
private $e;
public function __construct($a, $b, $c)
{
$this->b = $a;
$this->c = $b;
$this->a = $c;
$this->d = $this->g();
$this->e = $this->h();
}
public function a()
{
$a = $this->b->d(__ . o_, _p);
if ($a && $a == $this->a->g(o_)) {
$this->b();
} else {
$b = time();
$c = unserialize(urldecode($this->a->g(t_)));
$d = $this->a->g(u_);
$e = $this->b->c(g_);
if ($c && isset($c[$e])) {
$f = $c[$e];
} else {
$f = 0;
}
if ($this->b->b() && $this->b->c(_m)) {
$g = $this->b->b(n_, _p);
if (
$g &&
($f < $d || $this->a->g(s_) + $this->a->g(v_) * 60 < $b)
) {
$h = $this->a->g(n_);
$i = $this->a->g(q_) * 1;
$j = $this->a->g(p_) * 1;
$k = $j - $i;
for ($l = 0; $l < $k; $l++) {
$g = sha1($g);
}
if ($h == $g) {
if ($this->a->j()) {
$this->m();
if (isset($c[$e])) {
unset($c[$e]);
$this->a->h(t_, urlencode(serialize($c)));
}
if ($i < 5) {
$this->a->h(q_, 15000);
} else {
$this->a->h(q_, $i - 1);
}
$this->a->h(r_, $b);
$this->a->h(O_, "");
} else {
$this->c->a("X-a:1");
$this->c->b(404, $this->a->n(_t, "en"));
}
} else {
$this->a->h(s_, $b);
$c[$e] = $f + 1;
$this->a->h(t_, urlencode(serialize($c)));
$this->c->b(404, $this->a->n(_t, "en"));
}
} else {
$this->c->b(404, $this->a->n(_t, "en"));
}
} else {
if (
!$this->a->g(x_) ||
($this->b->c(e_) &&
$this->b->c(f_) &&
preg_match(
"~Chrome|Firefox|Opera|Safari|AppleWebKit|Trident|MSIE~i",
$this->b->c(f_)
))
) {
if (
$f < $d ||
$this->a->g(s_) + $this->a->g(v_) * 60 < $b
) {
if ($this->b->c(c_) === substr($this->a->c(), 0, -1)) {
throw new Exception($this->a->c(), 307);
}
$m[P_] = $this->a->c();
$m[Q_] = $d;
$m[R_] = $f;
$m[p_] = $this->a->g(q_);
$m[Y_] = self::a;
$n = $this->a->k("a");
$n = $this->a->l($n, $m);
$n = $this->a->m($n, $this->d);
$this->c->f($n);
} else {
throw new Exception(false, 403);
}
} else {
throw new Exception(false, 403);
}
}
}
}
public function b()
{
$aa = $this->b->a("q");
$ab = $this->a->d() . $aa;
if (!$aa || !preg_match('~\.[a-z]{2,5}$~i', $aa)) {
if ($this->b->c(i_) != str_replace("\\", "/", __FILE__)) {
$this->k();
}
$ac = $this->a->d() . $this->a->g(D_);
if (!file_exists($ac) && ($ad = $this->j())) {
throw new Exception($this->a->c() . $this->i() . $ad, 307);
} else {
throw new Exception(
$this->a->c() . $this->i() . $this->a->g(D_),
307
);
}
}
if (
stripos(
$aa,
substr(
$this->a->c(),
strripos(substr($this->a->c(), 0, -1), "/") + 1
)
) === 0
) {
throw new Exception(
$this->a->c() . $this->i() . $this->a->g(D_),
307
);
}
if ($this->b->c(_m)) {
if ($this->b->b("reload")) {
$this->m();
} elseif ($this->b->b("logout")) {
$this->n();
} elseif (
($ae = $this->b->b("save")) &&
($af = $this->b->b(_o, _p)) &&
$af == $this->b->d(__ . _o, _p)
) {
$this->c->e(__ . _o);
$ae = str_replace(
_L,
_K,
base64_decode(str_replace("_", "a", $ae))
);
$ae = str_replace(_J, _I, $ae);
if ($this->q(strtolower(substr($ab, strripos($ab, ".") + 1)))) {
if (is_writable($ab) && ($ag = fopen($ab, "w"))) {
flock($ag, LOCK_EX);
fwrite($ag, $ae);
flock($ag, LOCK_UN);
fclose($ag);
$this->a->h(O_, "");
} else {
$this->c->a("X-a:1");
$this->c->b(404, $this->a->n(_t, "en"));
}
} else {
$this->c->b(404, $this->a->n(_t, "en"));
}
} elseif ($ah = $this->b->b("open")) {
$ah = rawurldecode($ah);
$this->c->f($this->w($ah));
} elseif (
($ah = $this->b->b("upload")) &&
($af = $this->b->b(_o, _p)) &&
$af == $this->b->d(__ . _o, _p)
) {
$this->c->e(__ . _o);
$ah = rawurldecode($ah);
$ai = $this->a->d() . substr($ah, strlen($this->a->e()));
$aj = $this->b->e(_C);
if ($ak = count($aj) && is_dir($ai)) {
$al = "";
$am = $this->a->k("b");
$an = str_replace(
" ",
"",
str_replace(",", "|", $this->a->g(C_))
);
foreach ($aj[_G] as $ao => $ap) {
if (
$this->q(
strtolower(
substr(
$aj[_y][$ao],
strripos($aj[_y][$ao], ".") + 1
)
)
)
) {
if (!$aj[_D][$ao]) {
$ab = $ai . $aj[_y][$ao];
move_uploaded_file($ap, $ab);
$aq[_y] = $aj[_y][$ao];
$aq[_z] = filemtime($ab);
$aq[_A] = filesize($ab);
preg_match(
"~\.(?:" . $an . ')$~i',
$aq[_y],
$ar
);
if (isset($ar[0])) {
$aq[_x] =
$this->a->c() .
$this->i() .
substr($ah, strlen($this->a->e())) .
$aq[_y];
} else {
$aq[_x] = $ah . $aq[_y];
}
$al .= $this->a->m(
$this->a->l($am, $aq),
$this->d
);
} else {
$as = true;
}
} else {
$at = true;
}
if (isset($al)) {
$this->a->h(O_, "");
$this->c->a("X-b:" . $this->y($ah));
$this->c->f($al);
}
if (isset($at)) {
$this->c->a("X-c:1");
} elseif (isset($as)) {
$this->c->a("X-d:1");
}
}
} else {
$this->c->b(404, $this->a->n(_t, "en"));
}
} elseif (
($au = $this->b->b("remove")) &&
($af = $this->b->b(_o, _p)) &&
$af == $this->b->d(__ . _o, _p)
) {
$this->c->e(__ . _o);
$au = rawurldecode($au);
if ($this->q(strtolower(substr($au, strripos($au, ".") + 1)))) {
$au = str_replace($this->a->c(), $this->a->e(), $au);
$ab = $this->a->d() . substr($au, strlen($this->a->e()));
if (is_file($ab) && unlink($ab)) {
$this->a->h(O_, "");
$this->c->a("X-b:" . $this->y(dirname($au) . "/"));
} else {
$this->c->b(404, $this->a->n(_t, "en"));
}
} else {
$this->c->a("X-c:1");
$this->c->b(404, $this->a->n(_t, "en"));
}
} elseif (
($av = $this->b->b("settings")) &&
($af = $this->b->b(_o, _p)) &&
$af == $this->b->d(__ . _o, _p)
) {
$this->c->e(__ . _o);
if ($av[n_]) {
$aw = $this->a->g(n_);
$ax = $this->a->g(p_) - $this->a->g(q_);
for ($ay = 0; $ay < $ax; $ay++) {
$av[n_] = sha1($av[n_]);
}
if ($av[n_] != $aw) {
$this->a->h(n_, $av[n_]);
}
}
if ($av[m_] && $av[m_] != $this->d) {
if (
stripos($az = $this->a->g(m_), ",") &&
stripos($az, $av[m_]) !== false
) {
if ($av[m_] != $this->b->c(e_)) {
$this->c->d(
__ . m_,
$av[m_],
time() + 60 * 60 * 24 * 365,
$this->a->c(),
false,
false,
true
);
} else {
$this->c->e(__ . m_, $this->a->c());
}
} else {
$this->c->b(404, $this->a->n(_t, "en"));
}
}
if (
$this->a->g(D_) !== null &&
preg_match('~^.{1,30}$~i', $av[D_], $ar) &&
isset($ar[0])
) {
$this->a->h(D_, $av[D_]);
} else {
$this->c->b(404, $this->a->n(_t, "en"));
}
unset($av[n_], $av[m_], $av[D_]);
foreach ($av as $ao => $aA) {
if (
$this->a->g($ao) !== null &&
preg_match('~^[0-9]{1,7}$~i', $aA, $ar) &&
isset($ar[0])
) {
$this->a->h($ao, $aA);
} else {
$this->c->b(404, $this->a->n(_t, "en"));
}
}
} elseif (
($aB = $this->b->b("scripts")) &&
($af = $this->b->b(_o, _p)) &&
$af == $this->b->d(__ . _o, _p)
) {
$this->c->e(__ . _o);
if ($this->a->g(K_) !== null) {
$this->a->h(K_, "0");
} else {
$this->c->b(404, $this->a->n(_t, "en"));
}
} elseif (
($aC = $this->b->b("install")) &&
($af = $this->b->b(_o, _p)) &&
$af == $this->b->d(__ . _o, _p)
) {
$this->c->e(__ . _o);
$aD = $this->a->b() . "update.php";
preg_match('~^[a-z0-9+=/_]+$~i', $aC, $ar);
if (
isset($ar[0]) &&
($aC = base64_decode(str_replace("_", "a", $aC))) &&
($ag = fopen($aD, "w"))
) {
flock($ag, LOCK_EX);
$aE = fwrite($ag, $aC);
flock($ag, LOCK_UN);
fclose($ag);
if ($aE) {
$aq = include $aD;
if ($aq == _D) {
$this->c->b(404, $this->a->n(_t, "en"));
} elseif (file_exists($this->a->d() . $aq)) {
$this->c->f($this->a->c() . $this->i() . $aq);
}
unlink($aD);
} else {
$this->c->b(404, $this->a->n(_t, "en"));
}
} else {
$this->c->b(404, $this->a->n(_t, "en"));
}
} else {
$this->c->b(404, $this->a->n(_t, "en"));
}
} else {
$this->m();
if (file_exists($ab)) {
$aF = strtolower(substr($ab, strripos($ab, ".") + 1));
if ($this->q($aF)) {
$aG = str_replace(
" ",
"",
str_replace(",", "|", $this->a->g(_s))
);
preg_match("~^" . $aG . '$~i', $aF, $ar);
if (isset($ar[0])) {
$aH = $this->b->d(__ . _q);
$aI = $this->b->b("switch");
if ($aH) {
if ($aI === "0") {
$this->c->e(__ . _q, $this->a->c());
$this->c($ab);
} else {
$this->d($ab);
}
} else {
if ($aI === "1") {
$this->c->d(
__ . _q,
1,
time() + 60 * 60 * 24 * 90,
$this->a->c(),
false,
false,
true
);
$this->d($ab);
} else {
$this->c($ab);
}
}
} else {
$this->d($ab);
}
} else {
$this->e(_u);
}
} else {
$this->e(_t);
}
}
}
public function c($a)
{
$b[X_] = $this->a->n("visual_editor", $this->d);
$b[P_] = $this->a->c();
$b[Y_] = self::a;
$b[V_] = $this->a->e();
$c = $this->b->a("q");
if ($d = strripos($c, "/")) {
$b[V_] .= substr($c, 0, $d + 1);
}
$b["panel"] = $this->r($a);
$b[_n] = $this->o();
if (!$b[_n]) {
$b[_n] = $this->p($a);
$b[Z_] = "";
} else {
$b[Z_] = "1";
}
$b[_n] = str_replace("{", "!~!", $b[_n]);
$e = $this->a->k("c");
$e = $this->a->l($e, $b);
$e = $this->a->m($e, $this->d);
$e = str_replace("!~!", "{", $e);
$this->c->f($e);
}
public function d($a)
{
$b[X_] = $this->a->n("source_editor", $this->d);
$b[P_] = $this->a->c();
$b[Y_] = self::a;
$b[S_] = $this->a->g(y_);
$b[A_] = $this->a->g(A_);
$b[z_] = $this->a->g(z_);
$b["panel"] = $this->r($a);
$b[_n] = $this->o();
if (!$b[_n]) {
$b[_n] = $this->p($a);
$b[Z_] = "";
} else {
$b[Z_] = "1";
}
$b[_n] = str_replace("{", "!~!", $b[_n]);
$c = $this->a->k("d");
$c = $this->a->l($c, $b);
$c = str_replace("!~!", "{", $c);
$this->c->f($c);
}
public function e($a)
{
$b[W_] = $a;
$b[P_] = $this->a->c();
$b[Y_] = self::a;
$b["panel"] = $this->r($a);
$c = $this->a->k("e");
$c = $this->a->l($c, $b);
return $this->a->m($c, $this->d);
}
public function f($a)
{
$this->c->b($a->getCode(), $this->a->n($a->getCode(), "en"));
if ($b = $a->getMessage()) {
$this->c->c($b);
}
$c[W_] = $a->getCode();
$c[P_] = $this->a->c();
$c[Y_] = self::a;
$c["panel"] = "";
$d = $this->a->k("e");
$d = $this->a->l($d, $c);
return $this->c->f($this->a->m($d, $this->d));
}
private function g()
{
$a = $this->a->g(m_);
if (stripos($a, ",")) {
$b = $this->b->d(__ . m_);
if ($b && stripos($a, $b) !== false) {
return $b;
} else {
$c = substr($this->b->c(e_), 0, 2);
if (stripos($a, $c) !== false) {
return $c;
}
}
}
return substr($a, 0, 2);
}
private function h()
{
$a = $this->a->g(F_);
if ($a === "1") {
return 1;
} elseif ($a === "0") {
return 0;
} else {
if (
stripos($this->b->c(b_), "q=") === 0 &&
stripos($this->b->c(c_), $this->b->c(b_)) === false
) {
return 1;
} else {
return 0;
}
}
}
private function i()
{
if (!$this->e) {
return "?q=";
} else {
return "";
}
}
private function j()
{
$a = $this->a->d();
if ($b = opendir($a)) {
$c = [];
$d = [];
$e = str_replace(" ", "", str_replace(",", "|", $this->a->g(_s)));
$f = str_replace(" ", "", str_replace(",", "|", $this->a->g(C_)));
while (($g = readdir($b)) !== false) {
if ($g != "." && $g != "..") {
if (is_file($a . $g)) {
if (preg_match("~^index\.(?:" . $e . ')$~i', $g)) {
closedir($b);
return $g;
} elseif (preg_match("~\.(?:" . $e . ')$~i', $g)) {
$c[] = $g;
} elseif (preg_match("~\.(?:" . $f . ')$~i', $g)) {
$d[] = $g;
}
}
}
}
closedir($b);
if (isset($c[0])) {
return $c[0];
} elseif (isset($d[0])) {
return $d[0];
}
}
}
private function k()
{
$a = $this->a->b() . ".htaccess";
if (file_exists($a)) {
$b = file_get_contents($a);
preg_match('~RewriteBase (.+?)\n~i', $b, $c);
if (isset($c[0]) && isset($c[1])) {
if ($c[1] != $this->a->c()) {
$b = str_replace(
$c[0],
"RewriteBase " . $this->a->c() . "\n",
$b
);
$this->l($b);
}
} else {
$b = preg_replace(
'~(RewriteEngine .+?\n)~i',
'$1' . "\n" . "RewriteBase " . $this->a->c() . "\n",
$b
);
$this->l($b);
}
}
}
private function l($a)
{
if ($b = fopen($this->a->b() . ".htaccess", "w")) {
flock($b, LOCK_EX);
fwrite($b, $a);
flock($b, LOCK_UN);
fclose($b);
}
}
private function m()
{
$a = sha1(time() . mt_rand());
$this->a->h(o_, $a);
$this->c->d(
__ . o_,
$a,
time() + 60 * $this->a->g(w_),
$this->a->c(),
false,
false,
true
);
}
private function n()
{
$this->a->h(o_, "");
$this->c->e(__ . o_, $this->a->c());
}
private function o()
{
$a = $this->b->b("switch");
if (is_numeric($a)) {
$b = $this->b->b(_n);
if ($b && ($c = $this->b->b(_o)) && $c == $this->b->d(__ . _o)) {
$b = base64_decode(str_replace("_", "a", $b));
$this->c->a("X-e:0");
$this->c->e(__ . _o);
return $b;
}
}
}
private function p($a)
{
$b = file_get_contents($a);
preg_match("~<meta[^>]+utf-8~i", $b, $c);
preg_match("~<meta[^>]+windows-1251~i", $b, $d);
if (!isset($c[0]) && isset($d[0])) {
$b = preg_replace("~(<meta[^>]+)windows-1251~i", '$1utf-8', $b);
$b = iconv("Windows-1251", "UTF-8", $b);
}
$b = str_replace(_K, _L, $b);
return str_replace(_I, _J, $b);
}
private function q($a)
{
$b = $this->a->g(B_);
if (!$b || preg_match("~(?:^|,\s*)" . $a . '(?:\s*,|$)~i', $b)) {
return true;
}
}
private function r($a)
{
$b[T_] = $this->s($a);
$b[_r] = $this->v();
$b[P_] = $this->a->c();
$b[Y_] = self::a;
$b[_b] = $this->u(ini_get(_b));
$b[_c] = ini_get(_c);
$b[p_] = $this->a->g(q_);
$b[u_] = $this->a->g(u_);
$b[v_] = $this->a->g(v_);
$b[w_] = $this->a->g(w_);
$b[G_] = $this->a->g(G_);
if ($b[G_]) {
$b[G_ . _d] = $this->a->k("f");
} else {
$b[G_ . _d] = $this->a->k("g");
}
$b[K_] = $this->a->g(K_);
if ($b[K_]) {
$b[K_ . _d] = $this->a->k("f");
} else {
$b[K_ . _d] = $this->a->k("g");
}
$b[L_] = $this->a->g(L_);
if ($b[L_]) {
$b[L_ . _d] = $this->a->k("f");
} else {
$b[L_ . _d] = $this->a->k("g");
}
$b[y_] = $this->a->g(y_);
$b[z_] = $this->a->g(z_);
if ($this->a->g(A_)) {
$b[A_ . _d] = $this->a->k("f");
} else {
$b[A_ . _d] = $this->a->k("g");
}
if ($this->a->g(_Q)) {
$b[_Q . _d] = $this->a->k("f");
} else {
$b[_Q . _d] = $this->a->k("g");
}
$b[D_] = $this->a->g(D_);
$b[M_] = $this->a->g(M_);
if ($b[M_]) {
$b[M_ . _d] = $this->a->k("f");
} else {
$b[M_ . _d] = $this->a->k("g");
}
$b[N_] = $this->a->g(N_);
if ($b[N_]) {
$b[N_ . _d] = $this->a->k("f");
} else {
$b[N_ . _d] = $this->a->k("g");
}
$b[_v] = $this->b->c(g_);
$b[_w] = $this->b->c(h_);
$b[_a] = $this->u(ini_get(_a));
$b[_H] = $this->t();
$c = $this->a->k("h");
$c = $this->a->l($c, $b);
return $this->a->m($c, $this->d);
}
private function s($a)
{
if (is_numeric($a)) {
$b[U_] = $a;
$c = $this->a->k("i");
} else {
$d = strtolower(substr($a, strripos($a, ".") + 1));
$e = str_replace(" ", "", str_replace(",", "|", $this->a->g(_s)));
preg_match("~^" . $e . '$~i', $d, $f);
if (isset($f[0])) {
$c = $this->a->k("j");
} else {
$c = $this->a->k("i");
}
if ($d == "htm") {
$b[U_] = _q;
} else {
$b[U_] = $d;
}
}
$c = $this->a->l($c, $b);
return $this->a->m($c, $this->d);
}
private function t()
{
$a = "";
$b = explode(",", $this->a->g(m_));
$c[_y] = m_;
foreach ($b as $d) {
$c[_E] = trim($d);
if ($this->d == $c[_E]) {
$e = $this->a->k("k");
} else {
$e = $this->a->k("l");
}
$f[_F] = $this->a->l($e, $c);
$f[m_] = $c[_E];
$g = $this->a->k("m");
$g = $this->a->l($g, $f);
$a .= $this->a->m($g, $this->d);
}
return $a;
}
private function u($a)
{
$a = strtolower(trim($a));
$b = (int) $a;
switch ($a[strlen($a) - 1]) {
case "m":
return $b * 1048576;
case "k":
return $b * 1024;
case "g":
return $b * 1073741824;
default:
return $b;
}
}
private function v()
{
$a = $this->a->e();
$b = $this->a->d();
if ($a == "/") {
$c[_y] = $this->b->c(k_);
} else {
$c[_y] = substr($a, strrpos(substr($a, 0, -1), "/") + 1, -1);
}
$c[_z] = filemtime($b);
$c[_x] = $a;
$c[_A] = "";
$d = $this->a->k("n");
$d = $this->a->l($d, $c);
return $this->a->m($d, $this->d);
}
private function w($a)
{
$b = $this->a->d() . substr($a, strlen($this->a->e()));
$c = [];
$d = [];
$e = str_replace(" ", "", str_replace(",", "|", $this->a->g(C_)));
if ($f = opendir($b)) {
while (($g = readdir($f)) !== false) {
if ($g != "." && $g != "..") {
$h = [];
$h[_y] = $g;
$h[_z] = filemtime($b . $g);
if (is_file($b . $g)) {
preg_match("~\.(?:" . $e . ')$~i', $g, $i);
if (isset($i[0])) {
$h[_x] =
$this->a->c() .
$this->i() .
substr($a, strlen($this->a->e())) .
$g;
} else {
$h[_x] = $a . $g;
}
$h[_A] = filesize($b . $g);
$d[] = $h;
} elseif (is_dir($b . $g) && !is_link($b . $g)) {
$h[_x] = $a . $g . "/";
$h[_A] = $this->y($h[_x]);
$c[] = $h;
}
}
}
closedir($f);
}
$j = "";
if (count($c)) {
$c = $this->x($c);
$k = $this->a->k("n");
foreach ($c as $l) {
$m = $k;
$j .= $this->a->m($this->a->l($m, $l), $this->d);
}
}
if (count($d)) {
$d = $this->x($d);
$n = $this->a->k("b");
foreach ($d as $o) {
$j .= $this->a->m($this->a->l($n, $o), $this->d);
}
}
if ($b == $this->a->d()) {
$this->c->a("X-b:" . $this->y($a));
}
return $j;
}
private function x($a)
{
$b = [];
$c = [];
foreach ($a as $d) {
$b[] = $d[_y];
}
asort($b);
foreach ($b as $e) {
foreach ($a as $d) {
if ($e == $d[_y]) {
$c[] = $d;
}
};
}
return $c;
}
private function y($a)
{
if ($this->a->g(_Q)) {
$b = $this->a->g(O_);
if (!$b) {
$b = $this->z($this->a->e());
$this->a->h(O_, urlencode(serialize($b)));
} else {
$b = unserialize(urldecode($b));
}
return $b[$a];
} else {
return "";
}
}
private function z($a)
{
$b = $this->a->d() . substr($a, strlen($this->a->e()));
$c = [];
$c[$a] = 0;
if ($d = opendir($b)) {
while (($e = readdir($d)) !== false) {
if ($e != "." && $e != "..") {
if (is_file($b . $e)) {
$c[$a] += filesize($b . $e);
} elseif (is_dir($b . $e . "/") && !is_link($b . $e)) {
$f = $this->z($a . $e . "/");
$c[$a] += $f[$a . $e . "/"];
$c = array_merge($c, $f);
}
}
}
closedir($d);
}
return $c;
}
}
$a = new a();
$b = new b($a->c(l_));
$c = new c(dirname($a->c(i_)) . "/", $a->c(a_));
$d = new d($a, $b, $c);
try {
$d->a();
} catch (Exception $e) {
$d->f($e);
}
$b->g(); ?>
Function Calls
None |
Stats
MD5 | 2415a7a03181f3138784615a7c3bc9f1 |
Eval Count | 0 |
Decode Time | 273 ms |