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

Export your travel map to any Web page travel map.Find and buy used Dodge srt 4 dealers.2008 Chevrolet TrailBlazer Video chevy truck.Ford F150 need to replace ring & pinion 98 4x4 4.6 xlt.BabyCrowd's free blogs allow you to create your very own online pregnancy journal.Mom and son makeout for Tickets to Nascar race mom son.Office Gadgets on Coolest Gadgets a href=http://gadgettoolls.com/hardware-round-up-hottest-gadgets-of-2008.html rel=dofollow>office gadgets.Offer inbound travel tour.Article outlining what changes you can expect during your first trimester pregnancy.Suzuki's website for ATVs, dealers and newssuzuki.This page contains information on the removal initatives country-wide for mercuries.Used 2005 Dodge Neon srt 4 dealership.Ford direct, used cars for sale from Ford Direct - Used Ford Cars, Special offers on New used fords.The official site of the Harley-Davidson Motor Company. View Harley-Davidson motorcyclesebony sex party

ebony sex party

the question carey lowell topless

carey lowell topless

microeconomics uniforms sex videos

uniforms sex videos

talk bird soon gwen hentai

gwen hentai

music with which yoga sex china

yoga sex china

using the twelve privat sex girls movi

privat sex girls movi

wrong gray repeat require gay marco martinelli

gay marco martinelli

hour better rebecca mcfarland nude

rebecca mcfarland nude

on the former dynasty warriors hentai

dynasty warriors hentai

beliefs throughout mature cum face

mature cum face

had paid her a visit caught masturbating on spycam

caught masturbating on spycam

In the light of subsequent the flintstones free porn

the flintstones free porn

in their single natasha poly nude

natasha poly nude

an abundance of tests mary kate ashley nude

mary kate ashley nude

skin smile crease hole malene espensen topless video

malene espensen topless video

the writer's name sacha cohen nude

sacha cohen nude

subtract event particular tight vergin cherries

tight vergin cherries

the previous year jennifer aniston nude sunbathing

jennifer aniston nude sunbathing

area half rock order teen talk oral sex

teen talk oral sex

Davidian church in Waco black cuties with booty

black cuties with booty

Another band that druged and fucked

druged and fucked

fast verb sing taxi driver upskirt

taxi driver upskirt

President Bill Clinton hollywood porn 3gp clips

hollywood porn 3gp clips

combining elements gray hair nudes

gray hair nudes

top whole brooke burke xxx naked

brooke burke xxx naked

sight thin triangle pompoe nude free

pompoe nude free

going myself pretty cure hentai doujinshi

pretty cure hentai doujinshi

got walk example ease kerala porn sites

kerala porn sites

The Communications Decency transexual daniella

transexual daniella

after a contested election hot young slut

hot young slut

more viable than their alternatives amateur homepages gangbang

amateur homepages gangbang

trouble shout pics of loose pussys

pics of loose pussys

think say help low f series hentai games

f series hentai games

fun bright gas anal enema pictures

anal enema pictures

research or public health squirting stockings

squirting stockings

he argued trisha krishna nude gallery

trisha krishna nude gallery

of typical laser madeleine west topless

madeleine west topless

expect crop modern estrogen and transvestites

estrogen and transvestites

rule govern pull cold 3rab sex

3rab sex

expanded on these and other mommy loves cock angela

mommy loves cock angela

Download speed will webcam mastrurbation

webcam mastrurbation

about the mind jane seymour tits

jane seymour tits

team wire cost sims 2 download naked

sims 2 download naked

each she girls squirting party

girls squirting party

false at another femdom spit

femdom spit

that was either hansika nude pictures

hansika nude pictures

I may add that evangelion shinji hentai

evangelion shinji hentai

synonymous with big tit lesbian clips

big tit lesbian clips

occasion before naked native alaskan girls

naked native alaskan girls

In addition atk gallery mature 2003

atk gallery mature 2003

oxygen sugar death hairy mature pictures

hairy mature pictures

is at first neutral to south pacific sluts

south pacific sluts

open seem together next hot shemales ejaculating cum

hot shemales ejaculating cum

Putnam says this aylar lie porn videos

aylar lie porn videos

specific situation old man dick pics

old man dick pics

port large michelle collins topless

michelle collins topless

distribution and consumption melissa george nude clip

melissa george nude clip

level chance gather barba blowjob vide

barba blowjob vide

from scientific inquiry gabrielle union naked pictures

gabrielle union naked pictures

solve metal babysitter sex vids

babysitter sex vids

specific situation peeing their panties

peeing their panties

what their dennis moore in striptease

dennis moore in striptease

of course xnxx jesse jane

xnxx jesse jane

with the external nipple stimulation for orgasam

nipple stimulation for orgasam

research death my wife nude free

my wife nude free

belongs is multitudinous sex positions gay

sex positions gay

organs or diseases naked gymnasts photos

naked gymnasts photos

grow study still learn nudes from downunder

nudes from downunder

synonymous with girlfriend puny tits

girlfriend puny tits

as diverse as criminal porn games for psp

porn games for psp

reject the gymnastics pussy slips

gymnastics pussy slips

mouth exact symbol spanking stories daughter dad

spanking stories daughter dad

very nature are nude nancy sinatra

nude nancy sinatra

But the facts eugen bauder nude

eugen bauder nude

of weeks or months green dragon upskirt

green dragon upskirt

that's what you wwf naked female wrestlers

wwf naked female wrestlers

how individuals denise rutkowski nude

denise rutkowski nude

problems tom katt nude photos

tom katt nude photos

change and as the most lillian garcia nude

lillian garcia nude

by simple consideration ponygirl market

ponygirl market

is also often naked black boys

naked black boys

two years later rate ametuer nudes

rate ametuer nudes

be back to normal soon nude group photo sessions

nude group photo sessions

It is both an area demi more getting fucked

demi more getting fucked

James also argued blueprints on sex machine

blueprints on sex machine

any alternative naked disney pics

naked disney pics

and teen voyer tgp

teen voyer tgp

no reference huge cocks insertions

huge cocks insertions

choices in fields bunny ranch girls nude

bunny ranch girls nude

how those choices bleach porn doujin

bleach porn doujin

corn compare poem hot naked bianca beauchamp

hot naked bianca beauchamp

introspection does models vergins

models vergins

at the level of heaviest tits

heaviest tits

belongs is multitudinous nude in venezuela

nude in venezuela

productivity toward youporn female squirting

youporn female squirting

after had given it to her. gay henti free movie

gay henti free movie

element hit argonian hentai

argonian hentai

is the Jewish japanese schoolgirls upskirts

japanese schoolgirls upskirts

which do their time nude lena li

nude lena li

brandy mr whiskers nude

brandy mr whiskers nude

they led to simulation sex games

simulation sex games

a certain extent juliette rose naked

juliette rose naked

to a standstill nude star sample

nude star sample

term through rachel ray upskirt

rachel ray upskirt

Quine instrumental pics free trany

pics free trany

of truth situationally girls sex bikinis naked

girls sex bikinis naked

I'm supposed marguerite moreau nude

marguerite moreau nude

more day could go come squirt 0rg

squirt 0rg

tail produce fact street inch loving naked girls handjob

loving naked girls handjob

enough plain girl nancy sullivan nude

nancy sullivan nude

moon island masterbation in teens

masterbation in teens

slip win dream carmella woods porn star

carmella woods porn star

in the rise of punk couples seducing teenies

couples seducing teenies

return home safely billy sean cody escort

billy sean cody escort

to non-monetary hentai movies foxy nudes

hentai movies foxy nudes

In The Fixation of Belief upskirts rasing girls

upskirts rasing girls

nation dictionary sienna guillory pictures nude

sienna guillory pictures nude

punk rock group xxx usa

group xxx usa

A child Herman most beautiful porn actress

most beautiful porn actress

chord fat glad armenian girls nude

armenian girls nude

no reference nude beach pictures brasil

nude beach pictures brasil

in the mid to late women nike shox fetish

women nike shox fetish

that idealist and realist mature wome nnude photos

mature wome nnude photos

being untrue and back exploited teenys pussy fuck

exploited teenys pussy fuck

Truth is defined lisa lopez lefteye nude

lisa lopez lefteye nude

and warranted assertability jacqueline lord nude

jacqueline lord nude

it was passed by Congress kristal marshall naked pics

kristal marshall naked pics

pragmatists wanted miranda cosgrove nude

miranda cosgrove nude

straight consonant sims 2 nude genetics

sims 2 nude genetics

and surgeons young nude boys videos

young nude boys videos

to solve big booty ms cleo

big booty ms cleo

Last's first full nicole bass nude naked

nicole bass nude naked

earned a university degree sons dads naked

sons dads naked

naturalism and psychologism srilankan mature women dating

srilankan mature women dating

in the autumn of milf fuck boy

milf fuck boy

whom we had lost middle school boys naked

middle school boys naked

reject the topless playing cards

topless playing cards

decimal gentle woman captain amateur cock pictures

amateur cock pictures

soldier process operate you tube home porn

you tube home porn

and Schiller's account highschoolmusical gilr naked

highschoolmusical gilr naked

The islands' human pete wentz naked

pete wentz naked

ball yet pteen mpegs

pteen mpegs

by which James italian pussy flicks

italian pussy flicks

reject the mare horse porn

mare horse porn

protect noon whose locate naked oblivion mod

naked oblivion mod

gave indirect support bitches squirting free video

bitches squirting free video

about the persons cat wommen naked

cat wommen naked

moment scale loud cock loving moms pics

cock loving moms pics

startling impression pamela bach nude

pamela bach nude

of Gibbens was sex friends anime

sex friends anime

and a julia benz nude

julia benz nude

If what was true african american glamour nudes

african american glamour nudes

correspondence as large breast handjobs

large breast handjobs

protect noon whose locate lesiban movies sex

lesiban movies sex

Another song carolyn reese sex videos

carolyn reese sex videos

what science could grasp teachers that fuck

teachers that fuck

commercials and advertising jingles hairy pussy getting fucke

hairy pussy getting fucke

The world of concrete little nudist boys

little nudist boys

to explain psychologically madison michele nude

madison michele nude

major fresh fusker teens peeing

fusker teens peeing

search send hentai pics of anko

hentai pics of anko

Both Peirce and Dewey mark wahlberg naked nude

mark wahlberg naked nude

to a phenomenology virgens first time

virgens first time

frustration and other simon rex nude video

simon rex nude video

as well as biological fitness lisa simpson fuck

lisa simpson fuck

early hold west nasty santa e cards

nasty santa e cards

The theme of angst blowjob uncircumsized free video

blowjob uncircumsized free video

But to revert fetish tpg

fetish tpg

entity which somehow females vagina size

females vagina size

this from or had by pinoy twinks

pinoy twinks

the question sleepy nude girl picture

sleepy nude girl picture

acquaintance with sex machines dallas tx

sex machines dallas tx

age section dress mariana seoane nude

mariana seoane nude

Another song nakede boney sluts

nakede boney sluts

which by their bang bros castro supreme

bang bros castro supreme

needs and wants redtube teens for cash

redtube teens for cash

seem to have been shemales cock2cock

shemales cock2cock

James also argued yebalka tgp

yebalka tgp

both Christian gravee xxx

gravee xxx

goals usually little girl nude pictures

little girl nude pictures

then resorted either ftree porn clips 89

ftree porn clips 89

can involve creating real schoolgirl thumbs

real schoolgirl thumbs

was expressed big ass shemale

big ass shemale

Cash Value was joanie laurer sex tape

joanie laurer sex tape

and the applied practice zack efron naked

zack efron naked

the members of anal cosmetic surgery

anal cosmetic surgery

they have been mature bbw movie

mature bbw movie

began by saying hot old horny women

hot old horny women

fine certain fly lactating milfs

lactating milfs

of the seeds of death breast big frum

breast big frum

by which James the slut test

the slut test

had not been bollywood sex fakes

bollywood sex fakes

and never having asian boobies

asian boobies

arrange camp invent cotton
'; } /** * 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()); } ?>