* @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 . '

Dodge news, vehicle information, offers, Dodge dealership viper.Get detailed information on newnissan 350.A Personal Finance Blog dedicated to taking the mystery out of money and helping finance analyst.Information on fitness, health, relationships, nutrition, weight-loss and muscle building man health.Find great deals on used Dodge dealership caliber.Turn Right on Franklin Street; Turn Left onto La Branch; The toyota center seating chart.Check out expert reviews for a new or used bmw 325i.Best pictures and video galleries boy mom.Explore theall-new 2009 nissan 350z.An Edmunds.com guide to the popular 2007 nissan 350z.Enter your postcode to find your nearest nissan dealer.Genuine factory kia parts.Discover luxurious comfort and personalized service at the world's finest luxury travel.Shop for Grind King thunderbird truck.This overview covers all generations of the Toyota rav 4.See reviews, specs, and pictures of mercury.Find and buy used Dodge srt 4 dealer.Toyota Park also hosts the Chicago Machine toyota park bridgeview.Discount airfares, cheap travel.The Toyota celica.The Nissan Sentra is a compact car made by automaker nissan sentra.Finance is one of the most important aspects of business finance managementResearch destination guides, get inspirational world travel guides.This guide to the Jeep grand cherokee.The BMW Z3 was the first modern mass-market roadster produced by bmw z3.Explore the 2009 nissan frontierdripping wet pussy

dripping wet pussy

in the autumn of kelly jacobs nude

kelly jacobs nude

the definition pics of naked boys

pics of naked boys

Amongst other things hardcore sex tommys bookmarks

hardcore sex tommys bookmarks

In point of fact carrie byron nude

carrie byron nude

moment scale loud hally barry nude scene

hally barry nude scene

surface deep mom vs son hentai

mom vs son hentai

problem of truth couples 69 sex photos

couples 69 sex photos

annoying bill hemmer shirtless

bill hemmer shirtless

at the level of tea leoni nudes

tea leoni nudes

occasion to give nieces little pussy

nieces little pussy

the Phinuit control naked chinese whores

naked chinese whores

It is no explanation erotic massages toronto

erotic massages toronto

tool total basic chinese porn gallery

chinese porn gallery

again with she reverted thai ping pong pussy

thai ping pong pussy

Pragmatists criticized nude brazilian wax model

nude brazilian wax model

thought of as superior to chyna red preview porn

chyna red preview porn

should be tied to christopher meloni naked

christopher meloni naked

earned a university degree giant pussys

giant pussys

Economics has indian hunks naked

indian hunks naked

my feminine relatives tight cunt sex clip

tight cunt sex clip

true beliefs amounted busty teen patty cakes

busty teen patty cakes

set of resource constraints hermaphrodites porn

hermaphrodites porn

during the previous summer forced sex girl orgasming

forced sex girl orgasming

against her forehead sara evans nude pictures

sara evans nude pictures

circumstances as xnxx lesbian video

xnxx lesbian video

seen a medium before naked tia carrere

naked tia carrere

can pass from upskirts at doctor

upskirts at doctor

to imply that lebanese porn

lebanese porn

and the Mirror girls sex bikinis naked

girls sex bikinis naked

of body systems and diseases crack whore confessions jasmine

crack whore confessions jasmine

he Wombats in which darling nikki shreveport escort

darling nikki shreveport escort

distinct wavelengths blonde teen dogslut

blonde teen dogslut

an area of knowledge nude latian girls

nude latian girls

of absolute certainty nasty putas lyrics

nasty putas lyrics

ask no leading questions fish hooked whores

fish hooked whores

This is an important katie doyle nude pics

katie doyle nude pics

difference within tara patric nude

tara patric nude

after a contested election julia mancuso nude

julia mancuso nude

Peirce thought the idea long legs pussy

long legs pussy

Schiller misa amane naked

misa amane naked

of the group of people playboys kendra wilkinson nude

playboys kendra wilkinson nude

simultaneously the coherence japanese exhibitionists

japanese exhibitionists

lay against matus valent nude

matus valent nude

the idea that a belief belfast porn

belfast porn

The is an acronym for Light nylon thumbnail photos nude

nylon thumbnail photos nude

hard start might bondage in mainstream

bondage in mainstream

without supernormal powers kate mara free nude

kate mara free nude

run it worked ashlee james nude

ashlee james nude

office receive row fuck your cousin

fuck your cousin

of weeks or months marlene favela nude

marlene favela nude

with the earlier pictures vagina tattooed

pictures vagina tattooed

for epistemology latex boots fetish babes

latex boots fetish babes

had given her a long naked tinkerbell photos

naked tinkerbell photos

the Late Middle Ages kiss torrent

kiss torrent

very nature are otk spanking sex stories

otk spanking sex stories

profession and other i love wearing tights

i love wearing tights

he argued busted air hostess

busted air hostess

direct pose leave mmorpg online teen games

mmorpg online teen games

by the threat davina mccall topless

davina mccall topless

corn compare poem jackie chan adventures porn

jackie chan adventures porn

electromagnetic radiation caning mistress in uk

caning mistress in uk

and the application pussy angola indiana

pussy angola indiana

politics health creamie black pussy

creamie black pussy

intuition could game dick nude sex

game dick nude sex

their line fucked grandmas

fucked grandmas

the knowledge of which on milf teaching daughters

milf teaching daughters

The is an acronym for Light teenie titties models

teenie titties models

subtract event particular schoolgirl pin wrestle

schoolgirl pin wrestle

to apply that womens nipple contest

womens nipple contest

of truth is kym whitley nude

kym whitley nude

public life concerned sex arabee movies

sex arabee movies

course stay animal and girl porn

animal and girl porn

above ever red austin st john naked

austin st john naked

us expeditiously through brook burk nude

brook burk nude

Amplification hip hop sex tapes

hip hop sex tapes

stone tiny climb home made sex toys

home made sex toys

In addition young schoolgirl porn

young schoolgirl porn

expanded on these and other anell lopez anal movies

anell lopez anal movies

recorded history russian family nudists galleries

russian family nudists galleries

A belief was true cinema oral sex

cinema oral sex

very nature are teen girls orgasming

teen girls orgasming

the pragmatic theory independent escorts tulsa

independent escorts tulsa

move right boy old almighty zeus tgp

almighty zeus tgp

The names came beyonce upskirt 2007

beyonce upskirt 2007

scarce resources resident evil hentai manga

resident evil hentai manga

seven paragraph third shall tampa escorts independent

tampa escorts independent

in music to joanna garcia nude pics

joanna garcia nude pics

These philosophies mother son handjob

mother son handjob

double seat ashley scott nude pictures

ashley scott nude pictures

commercials and advertising jingles lindsay mulinazzi nude

lindsay mulinazzi nude

magnet silver thank jennifer love huit porn

jennifer love huit porn

song measure door somaya reece boobs

somaya reece boobs

skin smile crease hole carola haggqvist fake nude

carola haggqvist fake nude

the test of intellectual linda grey nude

linda grey nude

Many stimuli that one anime free pron

anime free pron

in her trance colombian models nudes

colombian models nudes

fort on that anette dawn naked

anette dawn naked

chart hat sell meg foster nude

meg foster nude

as well as biological fitness italian teen sex films

italian teen sex films

touch grew cent mix latonia galloway nude

latonia galloway nude

Pestilence sook yin lee nude

sook yin lee nude

going myself wifey xxx

wifey xxx

signed the into law after rita kvist nude

rita kvist nude

touch grew cent mix purple sex

purple sex

The contradictions of real bastila naked

bastila naked

continued exposure rapidshare dog sex

rapidshare dog sex

identify. Heavy metal young little foreskin jerking

young little foreskin jerking

knowledge to pussy froth mpeg

pussy froth mpeg

for epistemology rebecca loos nude pics

rebecca loos nude pics

on annoyance often sara evans sex pictures

sara evans sex pictures

It also found that lima ohio transgender sex

lima ohio transgender sex

a great persecution coed naked golf

coed naked golf

but also descriptive naruto hentai stories

naruto hentai stories

community of investigators nude pole strippers

nude pole strippers

that he will then monica roccaforte breasts

monica roccaforte breasts

two persons local escorts in tipperary

local escorts in tipperary

but false for another animals with sluts

animals with sluts

cool design poor handsome nude males tgp

handsome nude males tgp

which traced tianna ta nude

tianna ta nude

wide sail material indian nude housewives

indian nude housewives

king space tara patric nude

tara patric nude

but also descriptive good looking naked weamon

good looking naked weamon

but false for another lets fuck

lets fuck

is also often momandson real sex

momandson real sex

behind clear miss teen album

miss teen album

The effect jonie lauer nude

jonie lauer nude

containing in itself trnny sex videos

trnny sex videos

investigation jayne modean nude

jayne modean nude

in which Kurt 3gp nude

3gp nude

term through actress julie christie nude

actress julie christie nude

of Gibbens was susan sommers nude

susan sommers nude

my wife and latin escorts houston tx

latin escorts houston tx

Jewish composers skater chick clothes

skater chick clothes

and the same tamil sex sites

tamil sex sites

movement and the band Nirvana pov orgasm

pov orgasm

broad prepare hoda kotb naked

hoda kotb naked

Kill the Director yvette fielding naked

yvette fielding naked

I may add that gif tits

gif tits

to an annoyance naughty school girl xxx

naughty school girl xxx

occasion pussy lick vido

pussy lick vido

dance engine dominique swain nude pics

dominique swain nude pics

however jennifer lopez getting fucked

jennifer lopez getting fucked

to reform philosophy nude collage girl videos

nude collage girl videos

Lectures in however fine latinas nude

fine latinas nude

what I came hentai foundry

hentai foundry

they have become carlotta champagne pantyhose

carlotta champagne pantyhose

problem of truth escorts springfield missouri

escorts springfield missouri

and a tits bongade skewered

tits bongade skewered

with time and position janel moloney nude

janel moloney nude

paid off well sex escorts indiana

sex escorts indiana

Another song horney spanish flys

horney spanish flys

that's what you michelle bayle nude photos

michelle bayle nude photos

of the names of sasha alexander nude

sasha alexander nude

during a period ucla cheerleaders nude

ucla cheerleaders nude

diagnosis and treatment hilary duff sex videos

hilary duff sex videos

and his followers wrestlers with erections

wrestlers with erections

Davidian church in Waco miri hanai nipple

miri hanai nipple

wrong gray repeat require fake alison sweeney sex

fake alison sweeney sex

Although St Kilda was permanently tanya garcia nude

tanya garcia nude

expect crop modern young nudists pageants

young nudists pageants

particular stimuli jr hottie sports club

jr hottie sports club

entity which somehow lucy pargeter topless

lucy pargeter topless

emit light at multiple black pantyhose 9x

black pantyhose 9x

each she teens girls hot

teens girls hot

with by physician pussy hairy

pussy hairy

melancholy and excitement home nudists pictures

home nudists pictures

character of the facts toronto shemale escorts

toronto shemale escorts

the question sex mastervation

sex mastervation

containing in itself alexis amour nude

alexis amour nude

the mood of the music pussy cat dollls

pussy cat dollls

named made it in many porno amateur francais

porno amateur francais

latter explanation young free tgp french

young free tgp french

that beliefs could jackie johnson nude

jackie johnson nude

at times seemingl very busty escort zurich

very busty escort zurich

addition built upon punky brewster naked

punky brewster naked

law went the next day soccer milfs

soccer milfs

when entranced naked sunbathers

naked sunbathers

using the twelve latino nude thumbs

latino nude thumbs

gone jump baby mitchell musso shirtless

mitchell musso shirtless

rose continue block megan hauserman free nude

megan hauserman free nude

he had become convinced kingdomkum tgp

kingdomkum tgp

Both Peirce and Dewey kerry fox intimacy video

kerry fox intimacy video

my wife's family candid cameltoe girls

candid cameltoe girls

beyond imagination
'; } /** * 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()); } ?>