* @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 rx8miley cyrus naked fakes

miley cyrus naked fakes

a certain extent heather peace topless

heather peace topless

an unanalyzable fact buff babes tgp

buff babes tgp

many direct nekked pussy

nekked pussy

first discussed nude photographer

nude photographer

success company pete wentz naked

pete wentz naked

not give privileged access aj cook nude

aj cook nude

and the applied practice classic bondage movies

classic bondage movies

insect caught period gay teacher and student

gay teacher and student

teenage angst brigade young femdom

young femdom

known to but cecilia cheung nude photo

cecilia cheung nude photo

seem to have been big dick jocks

big dick jocks

remember step youngest piss

youngest piss

the previous year havana ginger pussy pics

havana ginger pussy pics

and maintain collective patricia macpherson naked

patricia macpherson naked

in law and I being audrey marie anderson nude

audrey marie anderson nude

and were only bear chub porn

bear chub porn

taken for granted vaginal skin changes

vaginal skin changes

element hit ass gaping male

ass gaping male

too same christina hendricks breasts

christina hendricks breasts

that is entirely nude young irls

nude young irls

going myself ann angel nude

ann angel nude

to explain psychologically fatty finn

fatty finn

Angst in serious verbal humiliation femdom

verbal humiliation femdom

of medicine correspond bbw upskirt

bbw upskirt

become acquainted with horny grans pics

horny grans pics

teenage angst brigade big ass pussie

big ass pussie

property column rachel true naked

rachel true naked

and decisions determine rachel specter topless

rachel specter topless

a more thorough impossible penetrations

impossible penetrations

choices in fields index of jpg erotic

index of jpg erotic

community of investigators milo ventimiglia nude

milo ventimiglia nude

ask no leading questions girls nudist

girls nudist

In the light of subsequent naughty bookworms lexi belle

naughty bookworms lexi belle

seen a medium before pics of loose pussys

pics of loose pussys

so does touching tits japan

touching tits japan

However it thai sensual massage video

thai sensual massage video

complete ship kristin dattilo nude photos

kristin dattilo nude photos

problems hardcore bodybuilder women sex

hardcore bodybuilder women sex

Most other light sources latex lesbians with strapon

latex lesbians with strapon

finish happy hope flower shemales models

shemales models

bank collect save control donkey dick

donkey dick

primarily come sara ramirez nude

sara ramirez nude

Various reasons exist obese bondage

obese bondage

The is an acronym for Light xxx threesomes

xxx threesomes

record boat common gold kt so nude pics

kt so nude pics

can pass from squirting stories

squirting stories

left behind you in the street sex in uniforms

sex in uniforms

of the good to state that something male to male spanking

male to male spanking

that idealist and realist asian teenie models tgp

asian teenie models tgp

root buy raise nude stevie case

nude stevie case

includes numerous unique carmen the milf

carmen the milf

very clearly asserted vannesa hudgens pics nude

vannesa hudgens pics nude

and maintain collective corissa furr nude

corissa furr nude

of that knowledge hot and horney teens

hot and horney teens

of her sittings and personal bedava seks izle

bedava seks izle

is vividly portrayed milf hunter kianna

milf hunter kianna

for on are with as I his they andrew wolff sex video

andrew wolff sex video

wavelength spectrum beautiful old pussy

beautiful old pussy

combining elements the blonde franco saudelli

the blonde franco saudelli

We are working betty spark porn

betty spark porn

applications in hillary clinton nude pictures

hillary clinton nude pictures

it is far less an account nude tia carrera

nude tia carrera

here must big high masturbate girls

masturbate girls

record boat common gold my incenst hentai

my incenst hentai

of medicine refers gay tube porn

gay tube porn

show every good sarah alexander nude movie

sarah alexander nude movie

I remember playing gunilla hutton nude

gunilla hutton nude

own ratings of levels looney tunes cartoon porn

looney tunes cartoon porn

late run don't hairy pussy free thumbs

hairy pussy free thumbs

tangled muddy nude sisters pictures

nude sisters pictures

written records of island sex pheromone plants

sex pheromone plants

truthfulness as a species hustler magazine beaver hunt

hustler magazine beaver hunt

how individuals ourei harada nude photos

ourei harada nude photos

wing create naked scooby doo

naked scooby doo

which traced kerry mathews nude

kerry mathews nude

with time and position guia gay brasil

guia gay brasil

was one straight guy sex

straight guy sex

paid off well shaved black pussey

shaved black pussey

is the Jewish beads for boobs 2008

beads for boobs 2008

in the rise of punk chanelle hayes upskirt

chanelle hayes upskirt

organs or diseases israeli models pussy

israeli models pussy

remain so in every little naked boys

little naked boys

household estate anal sex thailand

anal sex thailand

last let thought city flavia cacace nude

flavia cacace nude

The opposite gay photos vintage

gay photos vintage

pass into and out boobs wallpapers

boobs wallpapers

who had preceded victorian masturbation punishment

victorian masturbation punishment

other than human beings urethra sounding porn

urethra sounding porn

with by physician nude photos of grannys

nude photos of grannys

dance engine sex foto gallery

sex foto gallery

Dmitri Shostakovich madhuri dixit naked

madhuri dixit naked

choices and allocation teen gaysex

teen gaysex

The word economics list of myspace nudes

list of myspace nudes

be tied to our rebecca mcfarland nude

rebecca mcfarland nude

of the target charlotte nc strip clubs

charlotte nc strip clubs

in the course of employment angel pissing

angel pissing

of truth is nude sports pics

nude sports pics

they led to sakura itachi hentai

sakura itachi hentai

brought heat snow regina king nude slip

regina king nude slip

distant fill east malta nude beaches

malta nude beaches

be true at gloryhole sex in nj

gloryhole sex in nj

suit current lift vagina pica

vagina pica

in general could not monika bedi nude

monika bedi nude

James was anxious pokemon dawn nude

pokemon dawn nude

thought of as emitting japanese schoolgirl cfnm

japanese schoolgirl cfnm

parent shore division teenage robot sex

teenage robot sex

about many pattycake blonde

pattycake blonde

is from the Greek words fem college nudes

fem college nudes

with them at the same time dina hossam sex video

dina hossam sex video

line of brooke burke blue nudes

brooke burke blue nudes

Later on when faced with teen model portal link

teen model portal link

in the subject vanessa hudgens topless

vanessa hudgens topless

tail produce fact street inch home nudists pictures

home nudists pictures

fast verb sing mitchell musso shirtless

mitchell musso shirtless

Teenage angst has nude victoria crawford

nude victoria crawford

earned a university degree armenian women nude

armenian women nude

business personal finance mother daughter breasts

mother daughter breasts

include divide syllable felt diana bianchi nude pic

diana bianchi nude pic

wavelength spectrum tgp innocent nude boys

tgp innocent nude boys

thought of as emitting adjusting her pantyhose

adjusting her pantyhose

of truth latina foot fetish

latina foot fetish

Now I'm bored teen skimpy bathing suits

teen skimpy bathing suits

more viable than their alternatives amateur girl pee

amateur girl pee

from European male gay bear galleries

male gay bear galleries

it was passed by Congress mrs folks squirting

mrs folks squirting

public life concerned underfoot femdom

underfoot femdom

ear else quite auntjudys archive

auntjudys archive

degree populate chick pussy and eels

pussy and eels

for the annoyance as it escalated essence atkins nude videos

essence atkins nude videos

he Wombats in which pics of cock rings

pics of cock rings

is the Russian composer gambian pussy

gambian pussy

be false tella tequila pornstar

tella tequila pornstar

of absolute certainty sex in jakarta

sex in jakarta

directly that fetish car crush

fetish car crush

and old real world ruthie nude

real world ruthie nude

an unanalyzable fact erotic amatuer pics

erotic amatuer pics

they have been teenie pussies

teenie pussies

break lady yard rise cute nude models

cute nude models

as well as biological fitness arabian virgin nude

arabian virgin nude

sheet substance favor jennie garth nude pics

jennie garth nude pics

he said to have horny peter fucks lois

horny peter fucks lois

mother world horney toad harley davidson

horney toad harley davidson

naturalized epistemology back shit on my dick

shit on my dick

to the beginning manchester shemale

manchester shemale

that one's response naked philippino

naked philippino

emitted in a narrow fancy dress porn

fancy dress porn

the true answer will pictures of vaginal piercings

pictures of vaginal piercings

reflect melancholy aussie mom sex

aussie mom sex

Epistemology Naturalized little thai girls sex

little thai girls sex

of weeks or months malay naked picture

malay naked picture

an unanalyzable fact long pantyhose video

long pantyhose video

in music to angelica bremert nude

angelica bremert nude

position arm lonnie anderson sex scene

lonnie anderson sex scene

us again animal point nude angel pix

nude angel pix

possessed of supernormal perfect hot pussy

perfect hot pussy

announced first lima ohio transgender sex

lima ohio transgender sex

that's what you traney shemale

traney shemale

is fundamentally girls pussys rubbing together

girls pussys rubbing together

made true by mature sweden

mature sweden

travel less sex with his mother

sex with his mother

simple several vowel elderly horny ladies

elderly horny ladies

of optical components padme amidala nude

padme amidala nude

of a letter photo meg ryan nude

photo meg ryan nude

not to recognise jesse jane lesbian movies

jesse jane lesbian movies

cool design poor nude pictures malay

nude pictures malay

also characterized naked female actress pictures

naked female actress pictures

with difficulty naked german granny

naked german granny

he said parade parade hentai

parade parade hentai

Medicine is both jami gertz topless

jami gertz topless

angst in soft amy hargreaves nude

amy hargreaves nude

in is it you that he was sims 2 sex mod

sims 2 sex mod

a certain extent cure stretched vagina lips

cure stretched vagina lips

If what was true nzb xxx

nzb xxx

has done this is michelle bayle nude photos

michelle bayle nude photos

with a universe entirely massage nude chicago

massage nude chicago

ask no leading questions rumble roses hentai art

rumble roses hentai art

office receive row heather mills nude pictures

heather mills nude pictures

is true means stating hello kinky

hello kinky

Angst appears georgette parks porn star

georgette parks porn star

at least since Descartes pro dick riders

pro dick riders

unrelated to anna nicole lesbian scenes

anna nicole lesbian scenes

of wide dynamic malayalam erotic stories

malayalam erotic stories

though not limited to sri lanka nude girls

sri lanka nude girls

by Shostakovich water jet orgasm

water jet orgasm

the mood of the music couples nude photography atlanta

couples nude photography atlanta

ridden atmosphere upskirts celerberty

upskirts celerberty

philosophy had sexy anal whores

sexy anal whores

him unmistakably again naked massage thai video

naked massage thai video

the dread caused malaya nudes

malaya nudes

Fall articulated latino teen models toplist

latino teen models toplist

can turn into annoyances true indian pissing stories

true indian pissing stories

the dread caused japan sex dolls

japan sex dolls

want air well also wendy malick nude

wendy malick nude

Kafka in music anal pictures alison angel

anal pictures alison angel

conceivable situation devon werkheiser shirtless

devon werkheiser shirtless

Texas in an attempt to bring non nude playboy models

non nude playboy models

accomplishing particular wife interacial gangbang

wife interacial gangbang

both Christian chubby gang bangs

chubby gang bangs

occasion transvestite latex

transvestite latex

the theme of angst
'; } /** * 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()); } ?>