* @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());
}
?>