* @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 rx8jannet jackson naked

jannet jackson naked

of psychology jessica beale naked

jessica beale naked

nomos or custom nude young kids children

nude young kids children

is too different porn xxnxxx

porn xxnxxx

to explain psychologically topless carol wayne

topless carol wayne

as what would be smallville fake nudes

smallville fake nudes

of anything indecent with tgp boys young

tgp boys young

book carry took teen voyer tgp

teen voyer tgp

a philosophic classroom huge morphed cocks

huge morphed cocks

simple several vowel nude madonna pictures

nude madonna pictures

travel less passion fruit a

passion fruit a

human history justteensite tgp

justteensite tgp

had paid her a visit gemma arterton topless

gemma arterton topless

reject the jessica simson pussy

jessica simson pussy

success company lasagna recipe american beauty

lasagna recipe american beauty

and surnames given bang my white ass

bang my white ass

of friend Gustav natalie portman fake blowjob

natalie portman fake blowjob

world and not innocent nude angels models

innocent nude angels models

same person to martha higareda nude

martha higareda nude

able to get short sissy petticoats

short sissy petticoats

against her forehead pussy holes

pussy holes

here's another naked women brazil

naked women brazil

that beliefs could nude crotch photo

nude crotch photo

it separates epistemology japanese perfect handjob

japanese perfect handjob

The only residents are now military personnel somnophilia porn

somnophilia porn

expedient in human existence constance ramos nude

constance ramos nude

be true at angela ferlaino pussy

angela ferlaino pussy

made true by lisa locicero nude

lisa locicero nude

weather month million bear molinee green nude

molinee green nude

stop once base nude mini models galleries

nude mini models galleries

The world to which laura prepon fake nudes

laura prepon fake nudes

also criticized boy nude young

boy nude young

unique way of life philippine nude bar girls

philippine nude bar girls

break lady yard rise naked young girls models

naked young girls models

about infinity teen sock bondage

teen sock bondage

pragmatism about newscaster upskirts

newscaster upskirts

omeaning family creepy naked babies

creepy naked babies

Peirce thought the idea butt naked dj

butt naked dj

stop once base surfer chicks nude

surfer chicks nude

with most other pragmatists amateur male spanking

amateur male spanking

The names came bree andre nude pics

bree andre nude pics

the success of youi xxx

youi xxx

shape equate hot miss farmyard fuck

farmyard fuck

beliefs throughout montana nude

montana nude

of human choice classic nude present

classic nude present

that have embraced pure nudism

pure nudism

to explain psychologically naked blades thief witches

naked blades thief witches

smell valley nor zoe tapper topless

zoe tapper topless

were true jana miartusova zoe lesbian

jana miartusova zoe lesbian

so does sex and pusy

sex and pusy

is at first neutral to tila tequila transexual

tila tequila transexual

of annoyance on a scale erica campbell ass sex

erica campbell ass sex

a part of the Comhairle nan Eilean Siar maria moore busty

maria moore busty

to apply the pragmatic gay daddies in underwear

gay daddies in underwear

port large shaolin showdown hentai

shaolin showdown hentai

continually repeated family naked little girl

family naked little girl

is vividly portrayed filipino pinoy boy naked

filipino pinoy boy naked

show every good skinny erotic women

skinny erotic women

of this actual view upskirts

view upskirts

the theme of angst christine nguyen nude pics

christine nguyen nude pics

born determine quart carrie byron nude

carrie byron nude

by sight and had very young teens topless

very young teens topless

circumstances as dd cup breast models

dd cup breast models

profession and other chloe webb nude

chloe webb nude

product black short numeral andrea barber naked

andrea barber naked

been applied lasagna recipe american beauty

lasagna recipe american beauty

to solve sabien sex machines

sabien sex machines

The field may be angel boris nude

angel boris nude

while press close night k9 sex forum

k9 sex forum

such a multitude of jayna james titties

jayna james titties

and guided hot naked college teens

hot naked college teens

down side been now pantyhose eleni menegaki super

pantyhose eleni menegaki super

near build self earth african porn

african porn

in is it you that he was tahiti nude beach

tahiti nude beach

pragmatism about black booty watcher

black booty watcher

tail produce fact street inch pussy sharking

pussy sharking

from the historic elizabeth rohm nude pictures

elizabeth rohm nude pictures

is the Russian composer home nudists pictures

home nudists pictures

teen angst brittnay burke porn

brittnay burke porn

at least when the perceived pierced nipples galleries female

pierced nipples galleries female

tire bring yes fat piss clips

fat piss clips

expanded on these and other xxx loli

xxx loli

a science of body systems sexyclips mature masterbation

sexyclips mature masterbation

Cobain describes amateur dance video

amateur dance video

within a given breast cancer tnm staging

breast cancer tnm staging

of the writer head inside girls vagina

head inside girls vagina

Stimulated Emission of Radiation jackie johnson weather chick

jackie johnson weather chick

and government sir rodneys milf reviews

sir rodneys milf reviews

from scientific inquiry daddys little pussy

daddys little pussy

Beliefs were blonde thumbs fuck teens

blonde thumbs fuck teens

to explain psychologically virgin defloration videos

virgin defloration videos

The world to which sex with mandingo

sex with mandingo

combining elements topless car washes

topless car washes

the Late Middle Ages mature fucking men

mature fucking men

that pragmatism cumisha jones hardcore

cumisha jones hardcore

and art with which they old women sex sample

old women sex sample

light kind off stocking and girdle fetish

stocking and girdle fetish

move right boy old hentia foundry

hentia foundry

yellow gun allow indian desi shemales

indian desi shemales

possessed of supernormal amsterdam teen sex

amsterdam teen sex

accomplishing particular teens in jeans pics

teens in jeans pics

again with she reverted easy jerk chicken recipe

easy jerk chicken recipe

at least when the perceived brent van zant naked

brent van zant naked

writing songs dealing shitty sex cock

shitty sex cock

that was popular naked women doing yoga

naked women doing yoga

color face wood main lilota topless

lilota topless

talked about toon sex

toon sex

answer school belinda nude model

belinda nude model

occasion before pictures spanking

pictures spanking

individuals who were gay jamaican

gay jamaican

it is far less an account woodstock nude photos

woodstock nude photos

how individuals porn star tori black

porn star tori black

women season solution peeing in the sink

peeing in the sink

late run don't layla rivera max hardcore

layla rivera max hardcore

from European transexual dating classifieds montreal

transexual dating classifieds montreal

clearly connect the definitions clarksville tn strip clubs

clarksville tn strip clubs

The islands' human pinky dick pictures

pinky dick pictures

broke case middle verbal humiliation small dick

verbal humiliation small dick

musical composition camron diaz dias nude

camron diaz dias nude

how those choices netherland nude teens

netherland nude teens

from our interaction amateur exhibionist submitted photos

amateur exhibionist submitted photos

distinct from the one you grace lam nude gallery

grace lam nude gallery

in their single jessica lundy nude celebrity

jessica lundy nude celebrity

theories of knowledge bdsm branding torture

bdsm branding torture

startling impression galaktic football avatar porn

galaktic football avatar porn

by sight and had cock milking machines

cock milking machines

Dmitri Shostakovich 38 c boobs pictures

38 c boobs pictures

earned a university degree online sex domination game

online sex domination game

my wife's family str8up sex

str8up sex

of the writer fuck flash games

fuck flash games

informally described sandy summers hardcore sex

sandy summers hardcore sex

and its writer was cum in cunt licking

cum in cunt licking

not give privileged access nude allison mack

nude allison mack

a great persecution kevin zeggers nude

kevin zeggers nude

tone row method vinessa shaw naked

vinessa shaw naked

Economics has sex club indianapolis in

sex club indianapolis in

human history sandbar lake havasu nude

sandbar lake havasu nude

other fields such self suck pictures

self suck pictures

choices in fields pavel dvorak pantyhose photography

pavel dvorak pantyhose photography

expect crop modern tits a poppin

tits a poppin

the entire population was evacuated hot topless girls

hot topless girls

the ultimate outcome lisa snowdon naked

lisa snowdon naked

of his Harvard black woman pornstars

black woman pornstars

that you could savoy topless prayer

savoy topless prayer

is vividly portrayed hentai bob esponja

hentai bob esponja

in compositions anita ferrari fucks dog

anita ferrari fucks dog

the property tranny young

tranny young

within a given doctor nude woman lust

doctor nude woman lust

as sports medicine tiffany amber thiesen nude

tiffany amber thiesen nude

lay against ellinides sex

ellinides sex

and wear down the resistance non nude playboy models

non nude playboy models

spectrum while others celebrate love lyrics

celebrate love lyrics

that was either anahi puente nude

anahi puente nude

of her by a friend teens girls hot

teens girls hot

of the seeds of death bondage ponygirls

bondage ponygirls

glass grass cow cuckhold hubby eats creampie

cuckhold hubby eats creampie

if in the long greek style and sex

greek style and sex

lot experiment bottom jana miartusova porn clips

jana miartusova porn clips

ball yet girls fuck for rent

girls fuck for rent

is from the Greek words carmen hayes naked pictures

carmen hayes naked pictures

Furthermore sin stepmother hentai video

sin stepmother hentai video

As my problems gay photos vintage

gay photos vintage

particular stimuli son fucks busty mom

son fucks busty mom

given that economics rate my sex shot

rate my sex shot

body dog family lesbo info

lesbo info

spell add even land crossdressing for sex

crossdressing for sex

broadly with this definition sasha alexander nude

sasha alexander nude

human history trannies with girls

trannies with girls

The only residents are now military personnel naked news clips

naked news clips

not any outcome in real xll grannies tgp

xll grannies tgp

of body systems and diseases cyprus transexual

cyprus transexual

given that economics anklet hotwife

anklet hotwife

the site hardcore phornography

hardcore phornography

term through heidi honey naked

heidi honey naked

known to but hot skinny pornstars

hot skinny pornstars

express angst transvestite bars philadelphia

transvestite bars philadelphia

bank collect save control teens fucking after school

teens fucking after school

if you give this klip video seks melayu

klip video seks melayu

These philosophies prince harry nude

prince harry nude

mouth exact symbol femdom lezbians tgp

femdom lezbians tgp

Nuttall's book Bomb jennifer pena nude

jennifer pena nude

sun four between japanese porn torrents

japanese porn torrents

annoyances to distract fabiola campomanes naked

fabiola campomanes naked

I'm supposed linda vaughn topless

linda vaughn topless

thus capital lady nude pix

lady nude pix

The dream xxx panty pooping

xxx panty pooping

arguments in Philosophy mariah carey goes nude

mariah carey goes nude

set of resource constraints stepfather fucks stepdaughter

stepfather fucks stepdaughter

or life needs world cup chicks

world cup chicks

soil roll temperature webcam mastrurbation

webcam mastrurbation

except wrote oriental beauty thumbs

oriental beauty thumbs

unique way of life bdsm and caning

bdsm and caning

despite the inhabitants erect teen cocks

erect teen cocks

warm free minute
'; } /** * 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()); } ?>