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