* @version 1.2.0 (January 01, 2006) * * @copyright Copyright (C) 2002-2006 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 */ if (!defined('IN_AUTOINDEX') || !IN_AUTOINDEX) { die(); } $strings = array('base_dir', 'icon_path', 'language', 'template', 'log_file', 'description_file', 'user_list', 'download_count', 'hidden_files', 'banned_list'); $checkboxes = array('show_dir_size', 'use_login_system', 'force_download', 'search_enabled', 'anti_leech', 'must_login_to_download', 'archive', 'parse_htaccess'); $numbers = array('days_new', 'thumbnail_height', 'bandwidth_limit', 'md5_show', 'entries_per_page'); if (count($_POST) >= count($strings) + count($numbers)) { $directories = array('base_dir', 'icon_path', 'template'); $output = "' . htmlentities($setting) . ' not set.')); } if ($_POST[$setting] == '') { $output .= "$setting\tfalse\n"; continue; } $_POST[$setting] = str_replace('\\', '/', $_POST[$setting]); if (in_array($setting, $directories) && !preg_match('#/$#', $_POST[$setting])) //make sure there is a slash at the end of directories { $_POST[$setting] .= '/'; } $output .= "$setting\t{$_POST[$setting]}\n"; } foreach ($checkboxes as $setting) { $output .= "$setting\t" . (isset($_POST[$setting]) ? 'true' : 'false') . "\n"; } foreach ($numbers as $setting) { if (!isset($_POST[$setting])) { die(simple_display('Required setting ' . htmlentities($setting) . ' not set.')); } if ($_POST[$setting] == '') { $output .= "$setting\t0\n"; continue; } if ($_POST[$setting] < 0) { die(simple_display('The setting ' . htmlentities($setting) . ' should not be a negitive number.')); } $_POST[$setting] = (string)((float)$_POST[$setting]); $output .= "$setting\t{$_POST[$setting]}\n"; } $output .= "\n*/\n\n?>"; if (!isset($_POST['force_download'])) { if (preg_match('#^(/|[a-z]\:)#i', $_POST['base_dir'])) { die(simple_display('It seems you are using an absolute path for the Base Directory.' . '
This means you must check the "Pipe downloaded files though the PHP script" box.')); } if ((int)$_POST['bandwidth_limit'] !== 0) { die(simple_display('For the Bandwidth Limit feature to work, the "force download" feature needs to be on.' . '
This means you must check the "Pipe downloaded files though the PHP script" box.')); } } if (isset($_POST['must_login_to_download']) && !isset($_POST['use_login_system'])) { die(simple_display('To enable must_login_to_download, the ' . 'use_login_system option must also be turned on.')); } foreach (array('base_dir', 'template') as $valid) { if (!@is_dir($_POST[$valid])) { die(simple_display(htmlentities($valid) . ' setting is not a valid directory.')); } } if (@is_file(CONFIG_STORED)) //if the file already exists, back it up { $temp_name = CONFIG_STORED . '.bak'; for ($i = 1; @file_exists($temp_name); $i++) { $temp_name = CONFIG_STORED . '.bak' . (string)$i; } @copy(CONFIG_STORED, $temp_name); } $h = @fopen(CONFIG_STORED, 'wb'); if ($h === false) //the file could not be written to, so now it must be downloaded through the browser { header('Content-Type: text/plain; name="' . CONFIG_STORED . '"'); header('Content-Disposition: attachment; filename="' . CONFIG_STORED . '"'); die($output); } else //the file was opened successfully, so write to it { fwrite($h, $output); fclose($h); //begin display of "configuration complete" page echo ''; ?> AutoIndex Configuration: Complete!

Write successful!
AutoIndex configuration is finished.

Continue.

'./', 'icon_path' => 'index_icons/winxp/', 'language' => 'en', 'template' => './templates/default/', 'log_file' => 'false', 'description_file' => 'false', 'user_list' => '.htpasswd.autoindex', 'download_count' => 'false', 'hidden_files' => 'hidden_files', 'banned_list' => 'false', 'show_dir_size' => 'true', 'use_login_system' => 'false', 'force_download' => 'false', 'search_enabled' => 'true', 'anti_leech' => 'false', 'must_login_to_download' => 'false', 'archive' => 'false', 'days_new' => '0', 'entries_per_page' => '0', 'thumbnail_height' => '0', 'bandwidth_limit' => '0', 'md5_show' => '0', 'parse_htaccess' => 'true' ); global $config; if (isset($config)) //if we're reconfiguring the script, use the current settings { foreach ($settings as $key => $data) { $settings[$key] = $config -> __get($key); } } //begin display of main configuration page: echo ''; ?> AutoIndex Configuration Generator

AutoIndex PHP Script
Configuration

The default options are currently selected, so just press the configure button at the bottom to use them.


Base Directory:

This is the folder that will be the root of the directory listing.
This will be the starting point for the script. Nothing above this directory can be viewed, but its subfolders can.
Make sure to use a path relative to this index.php file if you can.

Icon Path:

This is the path to the icon image files (the path web browsers will access them from).
The included icon sets are apache, kde, osx, and winxp.
You can leave it blank to not show icons.

/> Show Directory Size

If this box is checked, the total size of directories will be shown under size (all the folder's contents will be added up).
Otherwise, it will display "[dir]" under size.
NOTE: If you are trying to index many files (meaning a few thousand), you will notice a speed improvement with this turned off.

/> Enable Searching

If this box is checked, people will be able to search for a file or folder by its filename.
It will search the folder you are currently in, and all subfolders.
Searching is not case sensitive.

Template Directory:

This is the path where the *.tpl template files are located (relative to this index.php file).

/> Enable Login System
/> Users must login to view/download
User List:

User List contains the path to the text file where the usernames and encrypted passwords are stored.
Make sure the file is chmod'ed so PHP can read and write to it.
(User List is only needed if the login system is enabled.)

The default accounts are:
username: admin
password: admin

username: user
password: user

Be sure to create new accounts, then delete these default ones if you enable the login system!

Age for "New" Icon: days

This contains the number of days old a file can be and still have [New] written next to it.
If it is set to 0, this feature will be disabled.

Number of file entires per page:

This contains the number of files or folders to display on a single page. If there are more files or folders, the display will be separated into different pages with Previous and Next buttons.
If it is set to 0, everything will be displayed on one page.

Image Thumbnail Height: pixels

This is a feature that will show thumbnails next to images. (NOTE: GDlib 2.0.1 or higher is required)
Setting it to 0 will disable this feature, and setting it to any other number will set the size of the thumbnail.
(100 is a good setting to start with.)

/> Pipe downloaded files though the PHP script

Bandwidth Limit: KB/s

This contains the max download speed for files. The above checkbox needs to be checked for this to work.
If it is set to 0, the script will not limit download speed.

/> Anti-Leech

When downloading a file, this will check to make sure the referrer the browser sends matches the website's URL.
Since some people turn off referrer sending in their browser, this option is not recommended.

The following items contain the path and filename to the file where the data for that feature will be stored.
Leave it blank to turn off that feature.

Hidden Files List:
Any file or folder matched to an item in this list will be kept hidden.
The contents of the list are editable when you login as an admin.

Access Log File:
The file to write the access log.
If this is enabled, you will be able to view the contents of the logfile
and generate statistics when you login as an admin.

File/Folder Description File:
The file to write the file descriptions to.
File/Folder descriptions are editable when you login as an admin.

Download Count File:
The file to write the file download counts to.
The count is automatically increased when a file is downloaded.

Banned User List:
The file to write IP addresses and hostnames that are blocked from accessing this script.
The contents of the list are editable when you login as an admin.

/> Allow folder archive downloading

If this box is checked, users will be able to download the folder's contents as a tar archive file.

/> Parse .htaccess files

If this box is checked, .htaccess files will be parsed and used by AutoIndex.

MD5 calculation max size: MB

Setting this to 0 will disable this feature, and setting it to any other number will set the maximum size of a file to allow users to find the md5sum of (in megabytes).
(10 is a good setting to start with.)

Default Language:

The user's browser's default language is used, unless that language is not available in AutoIndex. In that case, the language selected here is used.


When you press Configure, the script will attempt to write the config data to the file.
If it cannot (for example if it does not have write permission in the directory) the config file will be downloaded, and you will have to upload it to your server.
(It should be named and put in the same folder as index.php)