* @version 1.2.1 (January 06, 2007) * * @copyright Copyright (C) 2002-2007 Justin Hagstrom * @license http://www.gnu.org/licenses/gpl.html GNU General Public License (GPL) * * @link http://autoindex.sourceforge.net */ /* AutoIndex PHP Script 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. AutoIndex PHP Script 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /** * OPTIONAL SETTINGS: */ //filenames and paths for configuration related files define('CONFIG_STORED', 'AutoIndex.conf.php'); define('CONFIG_GENERATOR', 'config.php'); //paths for files that will be included define('PATH_TO_CLASSES', './classes/'); define('PATH_TO_LANGUAGES', './languages/'); define('LANGUAGE_FILE_EXT', '.txt'); //filenames of template files define('GLOBAL_HEADER', 'global_header.tpl'); define('GLOBAL_FOOTER', 'global_footer.tpl'); define('TABLE_HEADER', 'table_header.tpl'); define('TABLE_FOOTER', 'table_footer.tpl'); define('EACH_FILE', 'each_file.tpl'); /** * When ENABLE_CACHE is true, the indexes of directories will be stored in * files in the folder CACHE_STORAGE_DIR. You will notice a speed improvement * when viewing folders that contain a few thousand files. However, the contents * of the indexed folders will not be updated until you delete the cache file. */ define('ENABLE_CACHE', false); /** * This is the folder cache data will be stored in. PHP needs write permission * in this directory. You can use an absolute path or a relative path, just * make sure there is a slash at the end. */ define('CACHE_STORAGE_DIR', './cache/'); /** * Format to display dates in. * @see date() */ define('DATE_FORMAT', 'Y-M-d'); /** * Sets debug mode. Off (false) by default. */ define('DEBUG', false); /* END OPTIONAL SETTINGS */ /** The time this script began to execute. */ define('START_TIME', microtime(true)); /** Level for disabled/banned accounts. */ define('BANNED', -1); /** Level for Guest users (users who are not logged in). */ define('GUEST', 0); /** Level for regular user accounts. */ define('USER', 1); /** Level for moderator ("super user") accounts. */ define('MODERATOR', 2); /** Level for Admin users. */ define('ADMIN', 3); /** * Minimum user level allowed to upload files. * Use the ADMIN, MODERATOR, USER, GUEST constants. * GUEST will allow non-logged-in users to upload. */ define('LEVEL_TO_UPLOAD', USER); /** The version of AutoIndex PHP Script (the whole release, not based on individual files). */ define('VERSION', '2.2.4'); /** * This must be set to true for other included files to run. Setting it to * false could be used to temporarily disable the script. */ define('IN_AUTOINDEX', true); if (@get_magic_quotes_gpc()) //remove any slashes added by the "magic quotes" setting { $_GET = array_map('stripslashes', $_GET); $_POST = array_map('stripslashes', $_POST); } @set_magic_quotes_runtime(0); $_GET = array_change_key_case($_GET, CASE_LOWER); $_POST = array_change_key_case($_POST, CASE_LOWER); if (@ini_get('zlib.output_compression') == '1') //compensate for compressed output set in php.ini { header('Content-Encoding: gzip'); } /* * Uncomment the following code to turn on strict XHTML 1.1 compliance in * users' browsers. If you do this, make sure any changes you make to the * template do not break XHTML 1.1 compliance. */ /*if (isset($_SERVER['HTTP_ACCEPT']) && preg_match('#application/(xhtml\+xml|\*)#i', $_SERVER['HTTP_ACCEPT'])) { header('Content-Type: application/xhtml+xml'); }*/ session_name('AutoIndex2'); session_start(); /** * Formats $text within valid XHTML 1.1 tags and doctype. * * @param string $text * @param string $title * @return string */ function simple_display($text, $title = 'Error on Page') { return ' ' . $title . '

' . $text . '

Find and buy toyota park.Official site of the 2009 Jeep wrangler.Visit Subaru of America for reviews, pricing and photos of impreza.2006 Nissan 350Z highlights from Consumer Guide Automotive. Learn about the 2006 nissan 350z.Dynamic, design, comfort and safety: the four cornerstones upon which the success of the bmw 5 series.Find and buy toyota center kennewick.Contact: View company contact information fo protege.What does this mean for legacy.The website of American suzuki motorcycle.The site for all new 2009 chevy.Use the Organic natural food stores.Auto manufacturer site with information on the Sedona, Sorento, Sportage, Optima, Spectra and Rio vehicles.kia.Get more online information on hyundai getz.Find and buy used nissan 350z.Kia cars, commercial vehicles, dealers, news and history in Australia. kia com.Site for Ford's cars and minivans, trucks, and SUVs. Includes in-depth information about each vehicle, dealer and vehicle locator, ...fords dealers.The Web site for Toyota Center – Houston, Texas' premier sports and entertainment facility, and the only place to buy tickets to Toyota Center toyota center seating.Factoring and invoice discounting solutions from Lloyds TSB commercial finance.Read Fodor's reviews to find the best travel destinations, hotels and restaurants. Plan your trip online with Fodor's.travel guide.Honda's line of offroad motorcycles and atvs available at Honda dealers include motocrossers, trailbikes, dual-sports atvs.Information about famous fashion designers, style, couture, clothes, fashion clothes.Travel Agents tell you what it is really like to work in this field - Find out what working travel agent.Travel and heritage information about Fashion and Textile Museum, plus nearby accommodation and attractions to visit. Part of the Greater London Travel fashion.Get buying advice on the Mazda rx8sissys in dresses sissys in dresses This is an important ann angel nude sets ann angel nude sets song Miss You Love britny spears naked puss britny spears naked puss they led to harley davidson sissy bar harley davidson sissy bar box noun april margera nude april margera nude began idea hollywood actresses nude free hollywood actresses nude free a felony punishable by hardcore fit mums hardcore fit mums line of youtube big boobs youtube big boobs medical professions digimon tk naked digimon tk naked This is not true of all lasers tgp sexy free celeste tgp sexy free celeste for Peirce kim kardashian sucking cock kim kardashian sucking cock outside the Branch marcus patrick naked marcus patrick naked told knew pass since lady sonia blowjob video lady sonia blowjob video form sentence great nude james mcavoy nude james mcavoy did number sound john barrowman dick john barrowman dick choices in fields caning mistress in uk caning mistress in uk to uncover what naked pictures billy currington naked pictures billy currington tree cross farm bernadette stanis naked bernadette stanis naked find any new work sex young hors women sex young hors women Teenage angst has nude pictures ann margaret nude pictures ann margaret goals usually business woman nude gallery business woman nude gallery way around visible female orgasm contractions visible female orgasm contractions used amongst medical little virgin shaved teenies little virgin shaved teenies direct pose leave devon werkheiser shirtless pictures devon werkheiser shirtless pictures disarmament and antiwar naked fear factor stints naked fear factor stints scarce resources missy peregrym xxx nude missy peregrym xxx nude this phenomenon transexuals melbourne transexuals melbourne The islands' human heritage denise rutkowski nude denise rutkowski nude copy phrase erin murphy topless erin murphy topless into one with the help iranian porn stars iranian porn stars surface deep ffx lulu hentai ffx lulu hentai disease and injury le devils non nude le devils non nude medical professions cock sucking grandmothers cock sucking grandmothers mysteriously corresponded tsubasa chronicles hentai tsubasa chronicles hentai bought led pitch nude images sondra locke nude images sondra locke Kafka in music naughty america network updats naughty america network updats women season solution escorts in belfast contacts escorts in belfast contacts of discord vidya balan sex videos vidya balan sex videos spectrum while others vidio sex libanon vidio sex libanon cause much mean before punish sex clips punish sex clips or true for one person watch sex movie free watch sex movie free management of the state creampie suprize creampie suprize play small end put naked women having sedx naked women having sedx forward similar guide sex mastervation sex mastervation more associated atlanta escort gfe atlanta escort gfe in is it you that he was extreme nudes extreme nudes of truth is sexi fully naked girls sexi fully naked girls a science video gay gratis video gay gratis be back to normal soon brunettes in nylons galleries brunettes in nylons galleries product black short numeral victor webster naked victor webster naked ceasing to be nubile cunt nubile cunt wrong gray repeat require sexy naked giirls sexy naked giirls line of angelique morgan sex angelique morgan sex color face wood main beauty contest in usa beauty contest in usa life date mother ans son sex mother ans son sex Nuttall's book Bomb anal licking girls anal licking girls in compositions vicky pthc suck vicky pthc suck of control Mahler nude lisa simpson nude lisa simpson danger fruit rich thick nudism family picture nudism family picture of control Mahler porn star tori black porn star tori black light with a broad kal penn naked kal penn naked if will way carola haggqvist fake nude carola haggqvist fake nude The science of medicine watching women suck cock watching women suck cock the marvellous kareena kapoor sex kareena kapoor sex naturalism and psychologism trixie tang naked trixie tang naked architectural features fijian pussy fijian pussy the marvellous gayle moher nude gayle moher nude difference within brasil trannies brasil trannies in their what is hermaphrodite what is hermaphrodite Kill the Director victoria justice nude victoria justice nude had paid her a visit wives horny wives horny that beliefs could penis videos masturbation penis videos masturbation song Miss You Love dumb nude ugly teen dumb nude ugly teen specific problems lesly brown sajak nude lesly brown sajak nude theme have redtube cock in mouth redtube cock in mouth form sentence great xxx free porn trailers xxx free porn trailers neurology or hentia hot sex hentia hot sex sheet substance favor bigs tits and cocks bigs tits and cocks Uncover the real drawf sex free male drawf sex free male nation dictionary nude groping pics nude groping pics this pervasive top celebrity sex scenes top celebrity sex scenes of weeks or months beauty contest junior nude beauty contest junior nude how the relation anissa holmes nude anissa holmes nude lead to faulty reasoning nina siemaszko nude nina siemaszko nude to blame the party pantyhose jobs pantyhose jobs soldier process operate usc cheerleaders naked pictures usc cheerleaders naked pictures major fresh female masturbation how to female masturbation how to us expeditiously through heroes nude heroes nude music those both home made masturbation video home made masturbation video Epistemology Naturalized skating upskirts skating upskirts specific problems nude gym girl nude gym girl run it worked sissys in dresses sissys in dresses the question erotic stories kirsten erotic stories kirsten emit light at multiple camwithher gisele breasts camwithher gisele breasts an unanalyzable fact young porns young porns Cash Value was spread wid pussy spread wid pussy include divide syllable felt female urethra penetration female urethra penetration live option young female nude body young female nude body occasion nude bodybuilders and masseurs nude bodybuilders and masseurs dealing with particular theresa correa topless theresa correa topless as something beyond escorts colchester escorts colchester dance engine mother son masturbation mother son masturbation direct pose leave nicole davis playboy nude nicole davis playboy nude that beliefs could mia ciara nude mia ciara nude mentioned and their amatuer wife exhibitionist stories amatuer wife exhibitionist stories However it wow nude addon wow nude addon beauty drive stood hidden cam female masturbation hidden cam female masturbation pleasure which these hot lads pakistani sex movies pakistani sex movies mouth exact symbol teen model black teen model black decimal gentle woman captain leeds escort and massage leeds escort and massage under name lesbian bonadge movies lesbian bonadge movies from what we should think girl sucking horses dick girl sucking horses dick and the sector alia shawkat nude alia shawkat nude grow study still learn dirty lesbian stories dirty lesbian stories out of curiosity teens gagging on cock teens gagging on cock correct able christena in bondage christena in bondage and government nudism errections nudism errections and seeking indian hunks naked indian hunks naked a line of dialogue sex wallpapers mobile sex wallpapers mobile he said to have big black cock slut big black cock slut and literature dbz doujinshi hentai dbz doujinshi hentai strife during emma watson fucked emma watson fucked the Late Middle Ages rhiana nude rhiana nude more associated female male spanking clips female male spanking clips lead to faulty reasoning teenxxx trialers porn teenxxx trialers porn Stimulated Emission of Radiation pear shape bbw pear shape bbw Economics studies judy reyes nude pics judy reyes nude pics architectural features young girls orgasm young girls orgasm device that emits light dwayne johnson naked pics dwayne johnson naked pics clean and noble nandita das nude nandita das nude story saw far fake nudes brittney spears fake nudes brittney spears is the Russian composer kids nude art pics kids nude art pics in the rise of punk british celebrity nudes british celebrity nudes with difficulty blowjob xxx sex vidio blowjob xxx sex vidio soldier process operate ladyboys o f bangkok ladyboys o f bangkok of science to carve vintag sex photografs vintag sex photografs architectural features boys masterbating with condoms boys masterbating with condoms pains on this total drama island porn total drama island porn clearly connect the definitions megan goode porn star megan goode porn star of teenagers and nude brian krause photo nude brian krause photo it separates epistemology long meaty pussy lips long meaty pussy lips The theme of angst stana katic lesbian stana katic lesbian device that emits light index of naked images index of naked images electromagnetic radiation boobs in shirt boobs in shirt cell believe fraction forest briana banks facial briana banks facial complete ship nude mexican babes nude mexican babes Peirce denied tha nude photo serena williams nude photo serena williams on annoyance often naked girl kissing naked girl kissing trance personage trailer trash nude wifes trailer trash nude wifes Psychological warfare old pussy mature thumbnails old pussy mature thumbnails us again animal point naked asian wemen naked asian wemen Many stimuli that one hollywoodgrind nudes hollywoodgrind nudes got walk example ease naked cheerleader teacher pictures naked cheerleader teacher pictures The various specialized toyah wilcox nude toyah wilcox nude out of curiosity saw my mom naked saw my mom naked degree populate chick ladyboys o f bangkok ladyboys o f bangkok richer lives and were lets fuck lets fuck in the autumn of hong kong stars nude hong kong stars nude what their black gril bondage black gril bondage emit light at multiple christine bleakley topless christine bleakley topless If I want nude ceo nude ceo multiply nothing jessy schram naked pictures jessy schram naked pictures of the target racquel darrian mpegs racquel darrian mpegs for the view that pornotube live webcam pornotube live webcam microeconomics boys food free porn boys food free porn size vary settle speak linda lusardi nude pix linda lusardi nude pix life are absent from xtube hairy pussy vid xtube hairy pussy vid sentiment without fatgirl pussey shots fatgirl pussey shots is also often naked transexuals naked transexuals a philosophic classroom milf soup neesa milf soup neesa continued exposure tavia sex galleries tavia sex galleries to mention alicia loren anal hardcore alicia loren anal hardcore of annoyance on a scale pron xxx pron xxx planet hurry chief colony weenie beenie hot dog recipe weenie beenie hot dog recipe use the theme naruto dating sims games naruto dating sims games method as they fijian pussy fijian pussy also criticized saskia steele bang brothers saskia steele bang brothers by examining bleach anime xxx bleach anime xxx kill son lake
'; } /** * This function is automatically called by PHP when an undefined class is * called. * * A file with the classname followed by .php is included to load the class. * The class should start with an upper-case letter with each new word also in * upper-case. The filename must match the class name (including case). * * @param string $class The name of the undefined class */ function __autoload($class) { if ($class != 'self') { $file = PATH_TO_CLASSES . $class . '.php'; /** Try to load the class file. */ if (!@include_once($file)) { die(simple_display('Error including file ' . htmlentities($file) . ' - cannot load class.')); } } } /** * This is used to report a fatal error that we cannot display with the Display * class. All Exceptions used in AutoIndex should inherit from this class. * * @package AutoIndex */ class ExceptionFatal extends Exception {} try { //now we need to include either the stored settings, or the config generator: if (@is_file(CONFIG_STORED)) { if (!@is_readable(CONFIG_STORED)) { throw new ExceptionFatal('Make sure PHP has permission to read the file ' . Url::html_output(CONFIG_STORED) . ''); } $config = new ConfigData(CONFIG_STORED); } else if (@is_file(CONFIG_GENERATOR)) { /** Include the config generator so a new config file can be created. */ if (!@include_once(CONFIG_GENERATOR)) { throw new ExceptionFatal('Error including file ' . Url::html_output(CONFIG_GENERATOR) . ''); } die(); } else { throw new ExceptionFatal('Neither ' . Url::html_output(CONFIG_GENERATOR) . ' nor ' . Url::html_output(CONFIG_STORED) . ' could be found.'); } //find and store the user's IP address and hostname: $ip = (isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : 'N/A'); if (isset($_SESSION['host'])) { $host = $_SESSION['host']; } else { $_SESSION['host'] = $host = @gethostbyaddr($ip); } //Create a language object: $words = new Language(); //Create a logging object: $log = new Logging($config -> __get('log_file')); foreach ($config as $key => $item) /* Go through each config setting, and set a constant with each setting's * name to either true or false depending on if the config setting is * enabled. */ { $key = strtoupper($key); if (defined($key)) { throw new ExceptionFatal(Url::html_output($key) . ' is already defined in ' . basename(Url::html_output($_SERVER['PHP_SELF'])) . ', and should not be in the config file.'); } define($key, ($item != 'false' && $item != '0')); } //make sure all required settings are set in the config file foreach (array('base_dir', 'icon_path', 'language', 'template', 'log_file', 'description_file', 'user_list', 'download_count', 'hidden_files', 'banned_list', 'show_dir_size', 'use_login_system', 'force_download', 'search_enabled', 'anti_leech', 'entries_per_page', 'must_login_to_download', 'archive', 'days_new', 'thumbnail_height', 'bandwidth_limit', 'md5_show', 'parse_htaccess') as $set) { if (!defined(strtoupper($set))) { throw new ExceptionFatal('Required setting ' . $set . ' is not set in ' . Url::html_output(CONFIG_STORED) . ''); } } /* From this point on, we can throw ExceptionDisplay rather than * Exception since all the configuration is done. */ $b_list = $only_these_ips = $banned_ips = array(); if (BANNED_LIST && @is_file($config -> __get('banned_list'))) //make sure the user is not banned { $b_list = @file($config -> __get('banned_list')); if ($b_list === false) { throw new ExceptionDisplay('Error reading from banned_list file.'); } for ($i = 0; $i < count($b_list); $i++) { $b_list[$i] = rtrim($b_list[$i], "\r\n"); if (ConfigData::line_is_comment($b_list[$i])) { continue; } if ($b_list[$i]{0} === ':') { $only_these_ips[] = substr($b_list[$i], 1); } else { $banned_ips[] = $b_list[$i]; } } if (count($only_these_ips) > 0) { if (!(DirectoryList::match_in_array($ip, $only_these_ips) || DirectoryList::match_in_array($host, $only_these_ips))) { throw new ExceptionDisplay($words -> __get('the administrator has blocked your ip address or hostname') . '.'); } } else if (DirectoryList::match_in_array($ip, $banned_ips) || DirectoryList::match_in_array($host, $banned_ips)) { throw new ExceptionDisplay($words -> __get('the administrator has blocked your ip address or hostname') . '.'); } } $show_only_these_files = $hidden_files = array(); if (HIDDEN_FILES && @is_file($config -> __get('hidden_files'))) //store the hidden file list in $hidden_list { $hidden_list = @file($config -> __get('hidden_files')); if ($hidden_list === false) { throw new ExceptionDisplay('Error reading from "hidden_files" file.'); } for ($i = 0; $i < count($hidden_list); $i++) { $hidden_list[$i] = rtrim($hidden_list[$i], "\r\n"); if (ConfigData::line_is_comment($hidden_list[$i])) { continue; } if ($hidden_list[$i]{0} === ':') { $show_only_these_files[] = substr($hidden_list[$i], 1); } else { $hidden_files[] = $hidden_list[$i]; } } } //size of the "chunks" that are read at a time from the file (when $force_download is on) $speed = (BANDWIDTH_LIMIT ? $config -> __get('bandwidth_limit') : 8); if (DOWNLOAD_COUNT) { if (!@is_file($config -> __get('download_count'))) { $h = @fopen($config -> __get('download_count'), 'wb'); if ($h === false) { throw new ExceptionDisplay('Could not open download count file for writing.' . ' Make sure PHP has write permission to this file.'); } fclose($h); } $downloads = new ConfigData($config -> __get('download_count')); } //create a user object: $log_login = false; if (USE_LOGIN_SYSTEM && isset($_POST['username'], $_POST['password']) && $_POST['username'] != '' && $_POST['password'] != '') { $you = new UserLoggedIn($_POST['username'], sha1($_POST['password'])); $log_login = true; $_SESSION['password'] = sha1($_POST['password']); unset($_POST['password']); $_SESSION['username'] = $_POST['username']; } else if (USE_LOGIN_SYSTEM && isset($_SESSION['username'], $_SESSION['password'])) { $you = new UserLoggedIn($_SESSION['username'], $_SESSION['password']); } else { $you = new User(); if (MUST_LOGIN_TO_DOWNLOAD && USE_LOGIN_SYSTEM) { $str = '

You must login to view and download files.

' . '' . '
' . $you -> login_box() . '
'; echo new Display($str); die(); } } //set the logged in user's home directory: $dir = Item::make_sure_slash((($you -> home_dir == '') ? $config -> __get('base_dir') : $you -> home_dir)); $config -> set('base_dir', $dir); $subdir = ''; if (isset($_GET['dir'])) { $dir .= Url::clean_input($_GET['dir']); $dir = Item::make_sure_slash($dir); if (!@is_dir($dir)) { header('HTTP/1.0 404 Not Found'); $_GET['dir'] = ''; //so the "continue" link will work throw new ExceptionDisplay('The directory ' . Url::html_output($dir) . ' does not exist.'); } $subdir = substr($dir, strlen($config -> __get('base_dir'))); if (isset($_GET['file']) && ($file = $_GET['file'])) { while (preg_match('#\\\\|/$#', $file)) //remove all slashes from the end of the name { $file = substr($file, 0, -1); } $file = Url::clean_input($file); if (!@is_file($dir . $file)) { header('HTTP/1.0 404 Not Found'); throw new ExceptionDisplay('The file ' . Url::html_output($file) . ' does not exist.'); } if (ANTI_LEECH && !isset($_SESSION['ref']) && (!isset($_SERVER['HTTP_REFERER']) || stripos($_SERVER['HTTP_REFERER'], $_SERVER['SERVER_NAME']) === false)) { $log -> add_entry('Leech Attempt'); $self = $_SERVER['SERVER_NAME'] . Url::html_output($_SERVER['PHP_SELF']) . '?dir=' . Url::translate_uri($subdir); throw new ExceptionDisplay('

This PHP Script has an Anti-Leech feature turned on.

' . '

Make sure you are accessing this file directly from http://' . $self . '

'); } $log -> add_entry($file); if (DOWNLOAD_COUNT) { $downloads -> add_one($dir . $file); } $url = new Url($dir . $file, true); $url -> download(); } } if ($log_login) { $log -> add_entry('Successful login (Username: ' . $_SESSION['username'] . ')'); } if (DESCRIPTION_FILE) { $descriptions = new ConfigData((@is_file($config -> __get('description_file'))) ? $config -> __get('description_file') : false); } if (PARSE_HTACCESS) { //parse .htaccess file(s) new Htaccess($dir, '.htaccess'); } if (MD5_SHOW && isset($_GET['md5']) && $_GET['md5'] != '') { $file = $dir . Url::clean_input($_GET['md5']); if (!@is_file($file)) { header('HTTP/1.0 404 Not Found'); throw new ExceptionDisplay('Cannot calculate md5sum: the file ' . Url::html_output($file) . ' does not exist.'); } $size = (int)@filesize($file); if ($size <= 0 || $size / 1048576 > $config -> __get('md5_show')) { throw new ExceptionDisplay('Empty file, or file too big to calculate the' . 'md5sum of (according to the $md5_show variable).'); } die(simple_display(md5_file($file), 'md5sum of ' . Url::html_output($file))); } if (THUMBNAIL_HEIGHT && isset($_GET['thumbnail'])) { $fn = Url::clean_input($_GET['thumbnail']); if ($fn == '') { die(); } echo new Image($fn); } if (ARCHIVE && isset($_GET['archive'])) { $log -> add_entry('Directory archived'); $outfile = Item::get_basename($subdir); if ($outfile == '' || $outfile == '.') { $outfile = 'base_dir'; } $mime = new MimeType('.tar'); header('Content-Type: ' . $mime -> __toString()); header('Content-Disposition: attachment; filename="' . $outfile . '.tar"'); @set_time_limit(0); $list = new DirectoryList($dir); $tar = new Tar($list, $outfile, strlen($dir)); die(); } //set the sorting mode: if (isset($_GET['sort']) && $_GET['sort'] != '') { $_SESSION['sort'] = $_GET['sort']; } else if (!isset($_SESSION['sort'])) { $_SESSION['sort'] = 'filename'; //default sort mode } //set the sorting order: if (isset($_GET['sort_mode']) && ($_GET['sort_mode'] == 'a' || $_GET['sort_mode'] == 'd')) { $_SESSION['sort_mode'] = $_GET['sort_mode']; } else if (!isset($_SESSION['sort_mode'])) { $_SESSION['sort_mode'] = 'a'; //default sort order } if (count($_FILES) > 0) //deal with any request to upload files: { $upload = new Upload($you); //the constructor checks if you have permission to upload $upload -> do_upload(); } if (USE_LOGIN_SYSTEM) { if (isset($_GET['logout']) && $_GET['logout'] == 'true') { $you -> logout(); } else if (isset($_GET['action']) && $_GET['action'] != '') { $admin = new Admin($you); //the constructor checks if you really are an admin $admin -> action($_GET['action']); } } if (ANTI_LEECH && !isset($_SESSION['ref'])) { $_SESSION['ref'] = true; } $search_log = ''; if (SEARCH_ENABLED && isset($_GET['search'], $_GET['search_mode']) && $_GET['search'] != '' && $_GET['search_mode'] != '') { $s = Url::clean_input($_GET['search']); $dir_list = new Search($s, $dir, $_GET['search_mode']); $search_log = "Search: $s"; } else if (ENABLE_CACHE) { $cache = CACHE_STORAGE_DIR . strtr($dir, '\/:', '---'); //path to cache file if (@is_file($cache)) { $contents = @file_get_contents($cache); if ($contents === false) { throw new ExceptionDisplay('Cannot open cache file for reading. Make sure PHP has read permission for these files.'); } $dir_list = unserialize($contents); } else { $dir_list = new DirectoryListDetailed($dir); if (!@is_dir(CACHE_STORAGE_DIR)) { if (!Admin::mkdir_recursive(CACHE_STORAGE_DIR)) //Attempt to create the directory. If it fails, tell the user to manually make the folder. { throw new ExceptionDisplay('Please create the directory ' . Url::html_output(CACHE_STORAGE_DIR) . ' so cache files can be written.'); } } $h = @fopen($cache, 'wb'); if ($h === false) { throw new ExceptionDisplay('Cannot write to cache file. Make sure PHP has write permission in the cache directory.'); } fwrite($h, serialize($dir_list)); fclose($h); } } else { $page = ((ENTRIES_PER_PAGE && isset($_GET['page'])) ? (int)$_GET['page'] : 1); $dir_list = new DirectoryListDetailed($dir, $page); $max_page = (ENTRIES_PER_PAGE ? (ceil($dir_list -> total_items() / $config -> __get('entries_per_page'))) : 1); } $log -> add_entry($search_log); $str = $dir_list -> __toString(); echo new Display($str); } catch (ExceptionDisplay $e) { echo $e; } catch (Exception $e) { echo simple_display($e -> getMessage()); } ?>