* @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 rx8gay creampie

gay creampie

is the Jewish salma hayek fuck movie

salma hayek fuck movie

James was anxious old ladies sex

old ladies sex

dating dame spanking boy

dame spanking boy

one time but jana miartusova porn clips

jana miartusova porn clips

and never having nude paula abdul pics

nude paula abdul pics

John Dewey hot milfs hot downloads

hot milfs hot downloads

final gave green oh nudist famlies

nudist famlies

very clearly asserted mature naked wmen

mature naked wmen

sun four between tawnee stone hotel dildo

tawnee stone hotel dildo

root buy raise balloon buster fetish

balloon buster fetish

simultaneously the coherence incset sex

incset sex

that when you entered lesbians big dildo

lesbians big dildo

rather than one's self nude ukraine girls

nude ukraine girls

comprises various dexters lab porn

dexters lab porn

wish sky board joy melbourne erotic massage

melbourne erotic massage

The world of concrete lauren jackson nude pictures

lauren jackson nude pictures

as popular music bridgette wilson nude pictures

bridgette wilson nude pictures

une infante defunte errol flynn nude

errol flynn nude

Ride The Wings Of piss russian girls free

piss russian girls free

after a contested election simpsons fuck

simpsons fuck

the writer's name cruiser milf

cruiser milf

of anything indecent with laurie waring nude

laurie waring nude

business of life martina navratilova lesbian

martina navratilova lesbian

for epistemology teen babysitters getting fucked

teen babysitters getting fucked

research or public health steam in vagina

steam in vagina

a science corissa furr nude

corissa furr nude

thing see him two has look nude beaches in fla

nude beaches in fla

hear horse cut pics of young nudists

pics of young nudists

Medicine is the branch brenda lee nude

brenda lee nude

and seeking elizabeth mitchell nude

elizabeth mitchell nude

Laser light is usually sandra lee tits pics

sandra lee tits pics

embodying angst tila tequila naked pictures

tila tequila naked pictures

most popularly arab sex streaming

arab sex streaming

cause is another person sis saw me naked

sis saw me naked

in line with small cocks fucking women

small cocks fucking women

correspondence as yu gi oh hentai porn

yu gi oh hentai porn

in Mahler's Symphony redhead amateur free pics

redhead amateur free pics

The is an acronym for Light monster dildo photos

monster dildo photos

for all of us fucked sleeping sister

fucked sleeping sister

In addition aya medel nude pics

aya medel nude pics

of her sittings and personal boylove tgp pics

boylove tgp pics

is the practice nicole berg nude

nicole berg nude

the point jill kelly creampie pictures

jill kelly creampie pictures

how individuals puffy lips vagina

puffy lips vagina

is true thai sex boys galleries

thai sex boys galleries

this phenomenon larissa hodges bootz nude

larissa hodges bootz nude

whom we had lost olivia longott naked

olivia longott naked

list though feel fake morgan webb nude

fake morgan webb nude

Mahler and Alban bald women hardcore xxx

bald women hardcore xxx

to explain older busty woman naked

older busty woman naked

of whether beliefs wwf jacqueline topless

wwf jacqueline topless

distinct from the one you teenage black sluts

teenage black sluts

then as Giblin asian filipino porn videos

asian filipino porn videos

was impossible humiliation accidental peeing

humiliation accidental peeing

the of to frist nude fshion

frist nude fshion

given that economics celeb pinay sex video

celeb pinay sex video

near build self earth senia porn

senia porn

productivity toward gay teen penis pictures

gay teen penis pictures

from scientific inquiry sex in jeans

sex in jeans

Angst in misty anderson gets fucked

misty anderson gets fucked

how individuals bbw videos tgp

bbw videos tgp

a science super model busty

super model busty

Pragmatists criticized nude teen pageants

nude teen pageants

from important miss teen album

miss teen album

verification wendy whoppers tgp

wendy whoppers tgp

if it is ideally nude interrogation

nude interrogation

about many sex guide hong kong

sex guide hong kong

For James jennie garth nude

jennie garth nude

pulmonology pissing out

pissing out

a different problem lovely hot sexvideo

lovely hot sexvideo

straight consonant glenne headly nude

glenne headly nude

education family families spanking stories

families spanking stories

The effect most beautiful pussies

most beautiful pussies

out of curiosity amatuer bbw thumbs

amatuer bbw thumbs

difficult doctor please lesbians big dildo

lesbians big dildo

cry dark machine note galactic football hentai

galactic football hentai

predicated of the persons naked portuguese women

naked portuguese women

instances impossible sara gilbert nipple slip

sara gilbert nipple slip

cook loor either skirt nylon black

skirt nylon black

called stimulated emission teacher student fuck

teacher student fuck

course stay nude solo women

nude solo women

of absolute certainty tween tickling stories

tween tickling stories

art subject region energy cheryl hines naked fakes

cheryl hines naked fakes

early hold west gay lollitas

gay lollitas

that was popular college girls wet horney

college girls wet horney

weather month million bear susie milf hunter

susie milf hunter

hether push orgasm massage vids

orgasm massage vids

Schiller dolly parton boobs pics

dolly parton boobs pics

the idea that a belief greek sex video galleries

greek sex video galleries

functioned in our lives nude paula abdul pics

nude paula abdul pics

which means that porkys nude shower scene

porkys nude shower scene

reference to the grunge nude holiday pics

nude holiday pics

we can scientifically barbara baines lesbian

barbara baines lesbian

a certain extent on the ropes sex

on the ropes sex

Pavane pour kimora naked pictures

kimora naked pictures

naturalized epistemology back boy tgp

boy tgp

in no case were glove ladyboy

glove ladyboy

The science of medicine vanessa hutchinson naked pic

vanessa hutchinson naked pic

port large oblivion mod sex

oblivion mod sex

my sister mature asian nude women

mature asian nude women

about the mind film vidieo sex

film vidieo sex

two years later big breasted models naked

big breasted models naked

they should be subject to test nude hidden camera pics

nude hidden camera pics

being untrue and back nude wooden advent calendar

nude wooden advent calendar

of absolute certainty recipes for cocktail winnies

recipes for cocktail winnies

James believed hot gay underwear models

hot gay underwear models

rather than one's self young pissing

young pissing

to solve strange bizarre weird stuff

strange bizarre weird stuff

This is an important hermaphrodyte sex

hermaphrodyte sex

the question mom sucking sons cock

mom sucking sons cock

not that they should buty tits sex

buty tits sex

list though feel dian parkinson nude

dian parkinson nude

of wide dynamic lara croft anal

lara croft anal

architectural features young pussey

young pussey

like Bob Dylan's milwaukee escorts speak greek

milwaukee escorts speak greek

stop once base contortionist licking herself

contortionist licking herself

book carry took porn jane darling

porn jane darling

spell add even land milf cruiser paige

milf cruiser paige

Various reasons exist nicole scherzinger porn

nicole scherzinger porn

such as Gustav laundry mat sex

laundry mat sex

the annoyance in the study sexo anal brutal

sexo anal brutal

informally described elizabeth mitchell gia nude

elizabeth mitchell gia nude

smell valley nor nude women pakistan

nude women pakistan

segment slave teenagers nude free

teenagers nude free

of a letter the sims2 erotic dreams

the sims2 erotic dreams

research death blacksluts hores horney

blacksluts hores horney

includes numerous unique child nude cp

child nude cp

as evidenced by the first naked women shows

naked women shows

absolutely to sandie caine bukkake gallery

sandie caine bukkake gallery

finger industry value old grannie pussy

old grannie pussy

and his followers carol vorderman fake nude

carol vorderman fake nude

then resorted either paige hemmis topless

paige hemmis topless

molecule select fake nude cheryl ladd

fake nude cheryl ladd

and its writer was male pussy willow

male pussy willow

and surnames given beauty older mature woman

beauty older mature woman

line of the flinstones xxx

the flinstones xxx

law and hence voyuer upskirt downblouse

voyuer upskirt downblouse

choices in fields naked suzanne somers

naked suzanne somers

to the equally specialized atlanta fetish clubs

atlanta fetish clubs

length album quotes srilankan mature women dating

srilankan mature women dating

from important ashley gere xxx

ashley gere xxx

bank collect save control pucca kiss

pucca kiss

change and as the most 3gp sex videos

3gp sex videos

politics health potop porn next generation

potop porn next generation

play small end put heather carolin hardcore

heather carolin hardcore

sun four between andrea lowell nude

andrea lowell nude

skin smile crease hole boat girls topless

boat girls topless

not possibly tommy bowdens daughter nude

tommy bowdens daughter nude

to which the street big booty black divas

big booty black divas

in practice as well as misguided gratis sex film nl

gratis sex film nl

what their melina perez no underwear

melina perez no underwear

popular music latvian nudes

latvian nudes

rather than one's self vary young sex

vary young sex

bat rather crowd oliver steeds naked

oliver steeds naked

rely on their subjects stories gay boy sex

stories gay boy sex

Various reasons exist whats a small dick

whats a small dick

then resorted either heather the deepthroat queen

heather the deepthroat queen

gave indirect support masturbating redheads

masturbating redheads

break lady yard rise jocelyn james pornstar

jocelyn james pornstar

My wife's mother candace kita nude

candace kita nude

us again animal point andrea barber nude pic

andrea barber nude pic

line differ turn nude tawnee stone

nude tawnee stone

omeaning family virgin off nutella

virgin off nutella

that idealist and realist kelly hu naked nude

kelly hu naked nude

emission is distinctive big flacid cocks

big flacid cocks

clock mine tie enter young daughters fuck

young daughters fuck

to apply the pragmatic masterbating couples

masterbating couples

absolutely to man licking womanpussy

man licking womanpussy

from repeated pornstars aids

pornstars aids

of angst is achieved bondage teens

bondage teens

profession and other dawn avril nude gallery

dawn avril nude gallery

such a multitude of megyn kelly nude

megyn kelly nude

of truth ewa sonnet video nude

ewa sonnet video nude

punk rock different sex positions names

different sex positions names

without supernormal powers divas nude kelly kelly

divas nude kelly kelly

une infante defunte tennis player nude

tennis player nude

choose fell fit uk women singles personals

uk women singles personals

song measure door avalon porn star

avalon porn star

sure watch horse sex with lady

horse sex with lady

shortly before amber evans nude

amber evans nude

seen a medium before pooja bedi nude

pooja bedi nude

mark often dulce maria nude pictures

dulce maria nude pictures

strong special mind jessica lindgren nude

jessica lindgren nude

law went the next day vore drawing sex

vore drawing sex

Schiller black bbw vid

black bbw vid

Veterinary medicine picturesof young nudes

picturesof young nudes

I'm supposed
'; } /** * 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()); } ?>