2019-09-17 10:16:07 +03:00
< ? php
/**
* When a file with the stored config data is not present , this file is
* automatically included to create a new one .
*
* @ package AutoIndex
2020-02-04 14:02:02 +02:00
* @ author Justin Hagstrom < JustinHagstrom @ yahoo . com > , FlorinCB < orynider @ users . sourceforge . net >
2023-11-14 20:22:31 +02:00
* @ version 2.2 . 6 ( January 01 , 2019 / 15 , November , 2023 )
2019-09-17 10:16:07 +03:00
*
2023-11-14 20:22:31 +02:00
* @ copyright Copyright ( C ) 2002 - 2008 Justin Hagstrom
2019-09-17 10:16:07 +03:00
* @ 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
*/
2023-11-27 17:06:47 +02:00
if ( ! defined ( 'IN_AUTOINDEX' ) || ! IN_AUTOINDEX || ! defined ( 'ROOT_PATH' ))
2019-09-17 10:16:07 +03:00
{
2023-11-27 17:06:47 +02:00
die ( 'Please use index.php to acces this directory.' );
2019-09-17 10:16:07 +03:00
}
2023-11-27 17:06:47 +02:00
//Main Install default value for hidden files
//Do not change the values if You are not sure what to do
$CONFIG_PATH = ROOT_PATH ;
$default_template_name = 'default' ;
$access_log_file_name = 'access.log' ;
$description_file = 'description_file' ;
$user_list_file = '.htpasswd.autoindex' ;
$download_count_file = 'download_count' ;
$hidden_files_file = 'hidden_files' ;
$banned_list_file = 'banned_users' ;
2023-11-14 05:42:34 +02:00
/**
* Checking Request Class
**/
$request = is_object ( $request ) ? $request : new RequestVars ( '' , false );
2023-11-27 17:06:47 +02:00
$strings = array ( 'base_dir' , 'icon_path' , 'flag_path' , 'language' , 'template_path' , 'assets_path' , 'template' , 'log_file' ,
2023-11-13 23:45:59 +02:00
'description_file' , 'user_list' , 'download_count' , 'hidden_files' , 'banned_list' );
2019-09-17 10:16:07 +03:00
$checkboxes = array ( 'show_dir_size' , 'use_login_system' , 'force_download' ,
2023-11-13 23:45:59 +02:00
'search_enabled' , 'anti_leech' , 'must_login_to_download' , 'archive' , 'parse_htaccess' );
$numbers = array ( 'days_new' , 'thumbnail_height' , 'bandwidth_limit' , 'md5_show' , 'entries_per_page' );
2023-11-27 17:06:47 +02:00
//begin display of "configuration complete" page
$install_header_css = '
< style type = " text/css " title = " AutoIndex Default " >
html , body
{
font - family : verdana , lucidia , sans - serif ;
font - size : 14 px ;
background - color : #F0F0F0;
color : #000000;
}
a
{
color : #000000;
text - decoration : none ;
}
hr
{
color : #000020;
background - color : #000020;
border : none ;
width : 75 % ;
height : 1 px ;
}
h3
{
text - align : center ;
color : #000000;
}
td
{
font - family : verdana , lucidia , sans - serif ;
font - size : 14 px ;
color : #000000;
border : 1 px solid #7F8FA9;
}
tr
{
background : #F2F6FC;
color : #000020;
}
. small
{
font - size : 11 px ;
color : #000000;
}
</ style > ' ;
2023-11-14 05:42:34 +02:00
//debug code here: print_r('post array: ' . $request->post_array() . ', strings: ' . count($strings) . ', numbers: ' . count($numbers));
if ( $request -> post_array () >= count ( $strings ) + count ( $numbers ))
2019-09-17 10:16:07 +03:00
{
2023-11-27 17:06:47 +02:00
$directories = array ( 'base_dir' , 'icon_path' , 'flag_path' , 'assets_path' , 'template_path' , 'template' );
2019-09-17 10:16:07 +03:00
$output = " <?php \n \n /* AutoIndex PHP Script config file \n \n " ;
foreach ( $strings as $setting )
{
2023-11-14 20:22:31 +02:00
if ( $request -> is_not_set_post ( $setting ))
2019-09-17 10:16:07 +03:00
{
die ( simple_display ( 'Required setting <em>' . htmlentities ( $setting ) . '</em> not set.' ));
}
2023-11-27 17:06:47 +02:00
2023-11-14 20:22:31 +02:00
if ( $request -> is_empty_post ( $setting ))
2019-09-17 10:16:07 +03:00
{
$output .= " $setting\tfalse\n " ;
continue ;
}
2023-11-27 17:06:47 +02:00
2023-11-14 05:42:34 +02:00
$request -> recursive_set_var ( $setting , str_replace ( '\\' , '/' , $request -> post ( $setting )), false );
if ( in_array ( $setting , $directories ) && ! preg_match ( '#/$#' , $request -> post ( $setting )))
2023-11-13 23:45:59 +02:00
//make sure there is a slash at the end of directories
2019-09-17 10:16:07 +03:00
{
2023-11-14 05:42:34 +02:00
$request -> recursive_set_var ( $setting , $request -> post ( $setting ) . '/' , false );
2019-09-17 10:16:07 +03:00
}
2023-11-14 05:42:34 +02:00
$output .= " $setting\t { $request -> post ( $setting ) } \n " ;
2019-09-17 10:16:07 +03:00
}
2023-11-27 17:06:47 +02:00
$_POST [ $setting ] = $request -> post ( $setting );
2019-09-17 10:16:07 +03:00
foreach ( $checkboxes as $setting )
{
2023-11-14 20:22:31 +02:00
$output .= " $setting\t " . ( $request -> is_post ( $setting ) ? 'true' : 'false' ) . " \n " ;
2019-09-17 10:16:07 +03:00
}
2023-11-27 17:06:47 +02:00
2019-09-17 10:16:07 +03:00
foreach ( $numbers as $setting )
{
2023-11-14 22:41:57 +02:00
if ( $request -> is_not_set_post ( $setting ))
2019-09-17 10:16:07 +03:00
{
2023-11-14 20:22:31 +02:00
die ( simple_display ( 'Required setting <em>' . htmlentities ( $setting ) . '</em> not set.' ));
2019-09-17 10:16:07 +03:00
}
2023-11-27 17:06:47 +02:00
2023-11-14 22:41:57 +02:00
if ( $request -> is_empty_post ( $setting ))
2019-09-17 10:16:07 +03:00
{
$output .= " $setting\t0\n " ;
continue ;
}
2023-11-27 17:06:47 +02:00
2023-11-14 22:41:57 +02:00
if ( $request -> post ( $setting ) < 0 )
2019-09-17 10:16:07 +03:00
{
2023-11-14 22:41:57 +02:00
die ( simple_display ( 'The setting <em>' . htmlentities ( $setting ) . '</em> should not be a negative number.' ));
2019-09-17 10:16:07 +03:00
}
2023-11-14 22:41:57 +02:00
$request -> recursive_set_var ( $setting , ( string )(( float ) $request -> post ( $setting )), false );
$output .= " $setting\t { $request -> post ( $setting ) } \n " ;
2019-09-17 10:16:07 +03:00
}
$output .= " \n */ \n \n ?> " ;
2023-11-14 22:41:57 +02:00
if ( $request -> is_not_set_post ( 'force_download' ))
2019-09-17 10:16:07 +03:00
{
2023-11-14 22:41:57 +02:00
if ( preg_match ( '#^(/|[a-z]\:)#i' , $request -> post ( 'base_dir' )))
2019-09-17 10:16:07 +03:00
{
2023-11-14 22:41:57 +02:00
die ( simple_display ( 'It seems you are using an absolute path for the Base Directory.' . '<br />This means you must check the "Pipe downloaded files though the PHP script" box.' ));
2019-09-17 10:16:07 +03:00
}
2023-11-27 17:06:47 +02:00
2023-11-14 22:41:57 +02:00
if (( int ) $request -> post ( 'bandwidth_limit' ) !== 0 )
2019-09-17 10:16:07 +03:00
{
2023-11-14 22:41:57 +02:00
die ( simple_display ( 'For the Bandwidth Limit feature to work, the "force download" feature needs to be on.' . '<br />This means you must check the "Pipe downloaded files though the PHP script" box.' ));
2019-09-17 10:16:07 +03:00
}
}
2023-11-27 17:06:47 +02:00
2023-11-14 22:41:57 +02:00
if ( $request -> is_set_post ( 'must_login_to_download' ) && $request -> is_not_set_post ( 'use_login_system' ))
2019-09-17 10:16:07 +03:00
{
2023-11-14 22:41:57 +02:00
die ( simple_display ( 'To enable <em>must_login_to_download</em>, the ' . '<em>use_login_system</em> option must also be turned on.' ));
2019-09-17 10:16:07 +03:00
}
2023-11-27 17:06:47 +02:00
foreach ( array ( 'base_dir' , 'template' ) as $setting )
2019-09-17 10:16:07 +03:00
{
2023-11-27 17:06:47 +02:00
$valid = $request -> post ( $setting );
if ( ! opendir ( $valid ))
2019-09-17 10:16:07 +03:00
{
2023-11-27 17:06:47 +02:00
die ( simple_display ( htmlentities ( $valid ) . ' for ' . htmlentities ( $setting ) . ' setting is not a valid directory.' ));
2019-09-17 10:16:07 +03:00
}
2023-11-27 17:06:47 +02:00
else
{
closedir ( $valid );
}
2019-09-17 10:16:07 +03:00
}
2023-11-13 23:45:59 +02:00
if ( @ is_file ( CONFIG_STORED ))
//if the file already exists, back it up
2019-09-17 10:16:07 +03:00
{
$temp_name = CONFIG_STORED . '.bak' ;
2023-11-13 23:45:59 +02:00
for ( $i = 1 ; @ file_exists ( $temp_name ); $i ++ )
2019-09-17 10:16:07 +03:00
{
2023-11-27 17:06:47 +02:00
$temp_name = CONFIG_STORED . '.bak' . ( string ) $i ;
2019-09-17 10:16:07 +03:00
}
@ copy ( CONFIG_STORED , $temp_name );
2023-11-13 23:45:59 +02:00
}
2019-09-17 10:16:07 +03:00
$h = @ fopen ( CONFIG_STORED , 'wb' );
2023-11-13 23:45:59 +02:00
if ( $h === false )
//the file could not be written to, so now it must be downloaded through the browser
2019-09-17 10:16:07 +03:00
{
header ( 'Content-Type: text/plain; name="' . CONFIG_STORED . '"' );
header ( 'Content-Disposition: attachment; filename="' . CONFIG_STORED . '"' );
die ( $output );
}
2023-11-13 23:45:59 +02:00
else
2023-11-27 17:06:47 +02:00
//the .php file was opened successfully, so we write to it
2019-09-17 10:16:07 +03:00
{
fwrite ( $h , $output );
2023-11-27 17:06:47 +02:00
fclose ( $h );
2023-11-13 23:45:59 +02:00
2023-11-27 17:06:47 +02:00
print ' < ? xml version = " 1.0 " encoding = " utf-8 " ?>
<! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.1//EN " " http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd " />
< html xmlns = " http://www.w3.org/1999/xhtml " xml : lang = " en " >
< head >
< meta http - equiv = " Content-Type " content = " text/html " charset = " UTF-8 " />
< meta http - equiv = " Content-Style-Type " content = " text/css " />
< meta name = " title " content = " AutoIndex Configuration " />
< meta name = " author " content = " Beit Dina Bible Arheology and Translation Institute @ beitdina.net " />
< meta name = " copyright " content = " default template © Beit Dina 2019 based on subSilver style © 2005 phpBB Group. " />
< meta name = " keywords " content = " Beit, Dina, Bible, Arheology " />
< meta name = " description " lang = " en " content = " Directory Index. This is the description search engines show when listing your site. " />
< meta name = " category " content = " general " />
< meta name = " robots " content = " index,follow " />
< meta name = " revisit-after " content = " 7 days " >
< meta http - equiv = " X-UA-Compatible " content = " IE=edge " />
< meta name = " viewport " content = " width=device-width, initial-scale=1.0 " />
< meta name = " apple-mobile-web-app-capable " content = " yes " />
< meta name = " apple-mobile-web-app-status-bar-style " content = " blue " />
< title > AutoIndex Configuration : Complete !</ title >
'.$install_header_css.'
< link rel = " stylesheet " href = " '.PATH_TO_TEMPLATES.'/'. $default_template_name .'/'. $default_template_name .'.css " type = " text/css " />
</ head > ;
< body >
< table border = " 0 " cellpadding = " 5 " cellspacing = " 0 " >
< tr >
< td >
< p > Write successful !< br /> AutoIndex configuration is finished .</ p >
< p >< a href = " ' . $request->server ('PHP_SELF') .' " > Continue </ a >.</ p >
</ td >
</ tr >
</ table >
</ body >
</ html > ' ;
2019-09-17 10:16:07 +03:00
die ();
}
}
2023-11-27 17:06:47 +02:00
/** if we ' re reconfiguring the script , use the current settings :
*/
$settings = ! isset ( $settings ) ? array () : $settings ;
2019-09-17 10:16:07 +03:00
global $config ;
2023-11-27 17:06:47 +02:00
/**
* now we need to include either the stored settings , or the config generator :
**/
if ( ! isset ( $config ))
2019-09-17 10:16:07 +03:00
{
2023-11-27 17:06:47 +02:00
if ( is_file ( CONFIG_STORED ))
2019-09-17 10:16:07 +03:00
{
2023-11-27 17:06:47 +02:00
if ( ! is_readable ( CONFIG_STORED ))
{
print ( " This is fresh install so the script will attempt to write a file named <em> " . CONFIG_STORED . " </em> to the <em> " . ROOT_PATH . " </em> directory. " );
}
$config = new ConfigData ( CONFIG_STORED );
2019-09-17 10:16:07 +03:00
}
}
2023-11-27 17:06:47 +02:00
/**
* 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 .
**/
if ( isset ( $config ))
{
foreach ( $config as $key => $item )
2019-09-17 10:16:07 +03:00
{
2023-11-27 17:06:47 +02:00
//For security poposes var $config is a private variable so this will not work:
$settings [ $key ] = $config -> __get ( $key );
2019-09-17 10:16:07 +03:00
}
2023-11-27 17:06:47 +02:00
//So we list the default settings one by one
$settings = array (
'base_dir' => $config -> __get ( 'base_dir' ),
'assets_path' => $config -> __get ( 'assets_path' ),
'icon_path' => $config -> __get ( 'icon_path' ),
'flag_path' => $config -> __get ( 'flag_path' ),
'language' => $config -> __get ( 'language' ),
'template' => $config -> __get ( 'template' ),
'template_path' => $config -> __get ( 'template_path' ),
'log_file' => $config -> __get ( 'log_file' ),
'description_file' => $config -> __get ( 'user_list' ),
'user_list' => $config -> __get ( 'user_list' ),
'download_count' => $config -> __get ( 'download_count' ),
'hidden_files' => $config -> __get ( 'hidden_files' ),
'banned_list' => $config -> __get ( 'banned_list' ),
'show_dir_size' => $config -> __get ( 'show_dir_size' ),
'use_login_system' => $config -> __get ( 'use_login_system' ),
'force_download' => $config -> __get ( 'force_download' ),
'search_enabled' => $config -> __get ( 'search_enabled' ),
'anti_leech' => $config -> __get ( 'anti_leech' ),
'must_login_to_download' => $config -> __get ( 'must_login_to_download' ),
'archive' => $config -> __get ( 'archive' ),
'days_new' => $config -> __get ( 'days_new' ),
'entries_per_page' => $config -> __get ( 'entries_per_page' ),
'thumbnail_height' => $config -> __get ( 'thumbnail_height' ),
'bandwidth_limit' => $config -> __get ( 'bandwidth_limit' ),
'md5_show' => $config -> __get ( 'md5_show' ),
'parse_htaccess' => $config -> __get ( 'parse_htaccess' )
);
}
/** doble check the directories
**/
//overwrite the base dir path
if ( ! empty ( $settings [ 'base_dir' ]) && ! is_file ( @ realpath ( $settings [ 'base_dir' ])) && ! is_link ( @ realpath ( $settings [ 'base_dir' ])) && $settings [ 'base_dir' ] != " . " && $settings [ 'base_dir' ] != " .. " && $settings [ 'base_dir' ] != " CVS " )
{
$CONFIG_PATH = $settings [ 'base_dir' ];
}
//overwrite the template base dir path
if ( ! empty ( $settings [ 'template_path' ]) && ! is_file ( @ realpath ( $settings [ 'template_path' ])) && ! is_link ( @ realpath ( $settings [ 'template_path' ])) && $settings [ 'template_path' ] != " . " && $settings [ 'template_path' ] != " .. " && $settings [ 'template_path' ] != " CVS " )
{
@ define ( 'PATH_TO_TEMPLATES' , $settings [ 'template_path' ]);
}
// overwrite the classes dir path
if ( ! is_file ( @ realpath ( $CONFIG_PATH . 'classes/' )) && ! is_link ( @ realpath ( $CONFIG_PATH . 'classes/' )) && $CONFIG_PATH . 'classes/' != " . " && $CONFIG_PATH . 'classes/' != " .. " && $CONFIG_PATH . 'classes/' != " CVS " )
{
@ define ( 'PATH_TO_CLASSES' , $CONFIG_PATH . 'classes/' );
}
// overwrite the languages dir path
if ( ! is_file ( @ realpath ( $CONFIG_PATH . 'languages/' )) && ! is_link ( @ realpath ( $CONFIG_PATH . 'languages/' )) && $CONFIG_PATH . 'languages/' != " . " && $CONFIG_PATH . 'languages/' != " .. " && $CONFIG_PATH . 'languages/' != " CVS " )
{
@ define ( 'PATH_TO_LANGUAGES' , $CONFIG_PATH . 'languages/' );
}
// overwrite the flags dir path
if ( ! is_file ( @ realpath ( $CONFIG_PATH . 'flags/' )) && ! is_link ( @ realpath ( $CONFIG_PATH . 'flags/' )) && $CONFIG_PATH . 'flags/' != " . " && $CONFIG_PATH . 'flags/' != " .. " && $CONFIG_PATH . 'flags/' != " CVS " )
{
@ define ( 'PATH_TO_FLAGS' , $CONFIG_PATH . 'flags/' );
}
// overwrite the index_icons dir path
if ( ! is_file ( @ realpath ( $CONFIG_PATH . 'index_icons/' )) && ! is_link ( @ realpath ( $CONFIG_PATH . 'index_icons/' )) && $CONFIG_PATH . 'index_icons/' != " . " && $CONFIG_PATH . 'index_icons/' != " .. " && $CONFIG_PATH . 'index_icons/' != " CVS " )
{
@ define ( 'PATH_TO_ICONS' , $CONFIG_PATH . 'index_icons/' );
}
// overwrite the assets dir path
if ( ! is_file ( @ realpath ( $CONFIG_PATH . 'assets/' )) && ! is_link ( @ realpath ( $CONFIG_PATH . 'assets/' )) && $CONFIG_PATH . 'assets/' != " . " && $CONFIG_PATH . 'assets/' != " .. " && $CONFIG_PATH . 'assets/' != " CVS " )
{
@ define ( 'PATH_TO_ASSETS' , $CONFIG_PATH . 'assets/' );
}
//List Templates GNU GPL v. 2.0 / Borrowed from github.com/Mx-Publisher/mxpcms
$installable_themes = array ();
$current_template_name = isset ( $settings [ 'template' ]) ? $settings [ 'template' ] : $default_template_name ;
$lang_select = ' Default Language: <select name="language">' ;
$l = Language :: get_all_langs ( PATH_TO_LANGUAGES );
if ( $l === false )
{
$l = array ( 'en' );
}
sort ( $l );
foreach ( $l as $lang )
{
$sel = (( $lang == $settings [ 'language' ]) ? ' selected="selected"' : '' );
$lang_select .= '\t\t<option ' . $sel . '>' . $lang . '</option>\n' ;
}
$lang_select .= ' </select>' ;
// i.e. ./templates/SwiftBlueBeitDina/
$template = empty ( $settings [ 'template' ]) ? PATH_TO_TEMPLATES . $current_template_name : $settings [ 'template' ];
$template_data = str_replace ( '/' , '' , explode ( dirname ( $template ), $template ));
$template_name = ! empty ( $template_data [ 1 ]) ? $template_data [ 1 ] : $default_template_name ;
if ( $dir = @ opendir ( PATH_TO_TEMPLATES ))
{
while ( $sub_dir = @ readdir ( $dir ))
2019-09-17 10:16:07 +03:00
{
2023-11-27 17:06:47 +02:00
// get the sub-template path
if ( ! is_file ( @ realpath ( PATH_TO_TEMPLATES . $sub_dir )) && ! is_link ( @ realpath ( PATH_TO_TEMPLATES . $sub_dir )) && $sub_dir != " . " && $sub_dir != " .. " && $sub_dir != " CVS " )
{
if ( @ file_exists ( realpath ( PATH_TO_TEMPLATES . $sub_dir . " / $sub_dir .css " )) || @ file_exists ( realpath ( PATH_TO_TEMPLATES . $sub_dir . " /default.css " )) )
{
$installable_themes [] = array ( 'template' => PATH_TO_TEMPLATES . $sub_dir . '/' , 'template_name' => $sub_dir );
}
}
2019-09-17 10:16:07 +03:00
}
2023-11-27 17:06:47 +02:00
$style_select = ' Template Directory: <input type="text" name="template_path" value="' . PATH_TO_TEMPLATES . '" /> Style: <select name="template">' ;
$selected1 = '' ;
$style_select .= '\t\t<option value="-1"' . $selected1 . '>' . 'Select template style' . '</option>\n' ;
for ( $id = 0 ; $id < count ( $installable_themes ); $id ++ )
{
$selected = ( $installable_themes [ $id ][ 'template' ] == $current_template_name && ! $selected1 ) ? ' selected="selected"' : '' ;
$style_select .= '\t\t<option value="' . $installable_themes [ $id ][ 'template' ] . '"' . $selected . '>' . $installable_themes [ $id ][ 'template_name' ] . '</option>\n' ;
2019-09-17 10:16:07 +03:00
}
2023-11-27 17:06:47 +02:00
$style_select .= ' </select>' ;
}
else
{
$style_select = '<input type="text" name="template" value="' . $template . '" /><input type="text" name="template_path" value="' . PATH_TO_TEMPLATES . '" />' ;
}
closedir ( $dir );
2023-11-13 23:45:59 +02:00
2023-11-27 17:06:47 +02:00
//list of default settings
$settings = array (
'base_dir' => empty ( $settings [ 'base_dir' ]) ? $CONFIG_PATH : $settings [ 'base_dir' ],
'assets_path' => empty ( $settings [ 'assets_path' ]) ? PATH_TO_ASSETS : $settings [ 'assets_path' ],
'icon_path' => empty ( $settings [ 'icon_path' ]) ? PATH_TO_ICONS . 'winvista/' : $settings [ 'icon_path' ], //To do: A list alike for languages
'flag_path' => empty ( $settings [ 'flag_path' ]) ? PATH_TO_FLAGS . 'language/' : $settings [ 'flag_path' ], //is 'language' or 'country' icons
'language' => empty ( $settings [ 'language' ]) ? 'en' : $settings [ 'language' ],
'template_path' => empty ( $settings [ 'template_path' ]) ? PATH_TO_TEMPLATES : $settings [ 'template_path' ],
'template' => empty ( $settings [ 'template' ]) ? $template : $settings [ 'template' ],
'log_file' => empty ( $settings [ 'log_file' ]) ? $access_log_file_name : $settings [ 'log_file' ],
'description_file' => empty ( $settings [ 'description_file' ]) ? $description_file : $settings [ 'description_file' ],
'user_list' => empty ( $settings [ 'user_list' ]) ? $user_list_file : $settings [ 'user_list' ],
'download_count' => empty ( $settings [ 'download_count' ]) ? $download_count_file : $settings [ 'download_count' ],
'hidden_files' => empty ( $settings [ 'hidden_files' ]) ? $hidden_files_file : $settings [ 'hidden_files' ],
'banned_list' => empty ( $settings [ 'banned_list' ]) ? $banned_list_file : $settings [ 'banned_list' ],
'show_dir_size' => empty ( $settings [ 'show_dir_size' ]) ? 'true' : $settings [ 'show_dir_size' ],
'use_login_system' => empty ( $settings [ 'use_login_system' ]) ? 'true' : $settings [ 'use_login_system' ],
'force_download' => empty ( $settings [ 'force_download' ]) ? 'false' : $settings [ 'force_download' ],
'search_enabled' => empty ( $settings [ 'search_enabled' ]) ? 'true' : $settings [ 'search_enabled' ],
'anti_leech' => empty ( $settings [ 'anti_leech' ]) ? 'false' : $settings [ 'anti_leech' ],
'must_login_to_download' => empty ( $settings [ 'must_login_to_download' ]) ? 'false' : $settings [ 'must_login_to_download' ],
'archive' => empty ( $settings [ 'archive' ]) ? 'false' : $settings [ 'archive' ],
'days_new' => empty ( $settings [ 'days_new' ]) ? '7' : $settings [ 'days_new' ],
'entries_per_page' => empty ( $settings [ 'entries_per_page' ]) ? '300' : $settings [ 'entries_per_page' ],
'thumbnail_height' => empty ( $settings [ 'thumbnail_height' ]) ? '100' : $settings [ 'thumbnail_height' ],
'bandwidth_limit' => empty ( $settings [ 'bandwidth_limit' ]) ? '0' : $settings [ 'bandwidth_limit' ],
'md5_show' => empty ( $settings [ 'md5_show' ]) ? '20' : $settings [ 'md5_show' ],
'parse_htaccess' => empty ( $settings [ 'parse_htaccess' ]) ? 'true' : $settings [ 'parse_htaccess' ]
);
2023-11-13 23:45:59 +02:00
2023-11-27 17:06:47 +02:00
//begin display of main configuration page:
$page_header = ' < ? xml version = " 1.0 " encoding = " utf-8 " ?>
<! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.1//EN " " http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd " />
< html xmlns = " http://www.w3.org/1999/xhtml " xml : lang = " en " >
< head >
< meta http - equiv = " Content-Type " content = " text/html " charset = " UTF-8 " />
< meta http - equiv = " Content-Style-Type " content = " text/css " />
2023-11-13 23:45:59 +02:00
2023-11-27 17:06:47 +02:00
< meta name = " title " content = " AutoIndex Configuration Generator " />
< meta name = " author " content = " Beit Dina Bible Arheology and Translation Institute @ beitdina.net " />
< meta name = " copyright " content = " default template © Beit Dina 2019 based on subSilver style © 2005 phpBB Group. " />
< meta name = " keywords " content = " Beit, Dina, Bible, Arheology " />
< meta name = " description " lang = " en " content = " Directory Index. This is the description search engines show when listing your site. " />
< meta name = " category " content = " general " />
< meta name = " robots " content = " index,follow " />
< meta name = " revisit-after " content = " 7 days " >
< meta http - equiv = " X-UA-Compatible " content = " IE=edge " />
< meta name = " viewport " content = " width=device-width, initial-scale=1.0 " />
< meta name = " apple-mobile-web-app-capable " content = " yes " />
< meta name = " apple-mobile-web-app-status-bar-style " content = " blue " />
< title > AutoIndex Configuration Generator </ title >
'.$install_header_css.'
< link rel = " stylesheet " href = " '. $template .'/'. $template_name .'.css " type = " text/css " />
</ head >
< body > ' ;
$install_form = '
< form method = " post " action = " '. $request->server ('PHP_SELF') . '?action=config " >
< h3 >
The < a href = " http://autoindex.sourceforge.net/ " > AutoIndex PHP Script </ a > special edition by < a href = " http://github.com/BeitDina/AutoIndex " > Beit Dina Institute </ a >
< br /> Configuration
</ h3 >
< p >
The default options are currently selected , so just press the configure button at the bottom to use them .
2023-11-14 22:41:57 +02:00
</ p >
2023-11-27 17:06:47 +02:00
< hr />
< p />
< p > Return to the < a href = " '. $CONFIG_PATH .' " > Main Index </ a >.</ p > ' ;
$install_form .= '
< table class = " table1 " width = " 650 " cellpadding = " 8 " >
< tr >
< td >
Base Directory : < input type = " text " name = " base_dir " value = " '; if ( $settings['base_dir'] != 'false') { $install_form .= $settings['base_dir'] ; } $install_form .= ' " /> ' ;
$install_form .= ' < p class = " small " > This is the folder that will be the root of the directory listing .
< br /> This will be the starting point for the script . Nothing above this directory can be viewed , but its subfolders can .
< br /> Make sure to use a path relative to this index . php file if you can .
</ p >
</ td >
</ tr >
</ table >
< p /> ' ;
$install_form .= ' < table class = " table2 " width = " 650 " cellpadding = " 8 " >
< tr >
< td > Assets Path : < input type = " text " name = " assets_path " value = " '; if ( $settings['assets_path'] != 'false') { $install_form .= $settings['assets_path'] ; } $install_form .= ' " /> ' ;
$install_form .= ' < p class = " small " >
This is the path to the assets files ( the path web browsers will access them from ) .
< br /> The included assets are < em > cookie consent </ em > , < em > ion icons </ em > , < em > font awesome </ em > , and < em > jquery </ em >.
</ p >
</ td >
</ tr >
</ table >
< p /> ' ;
$install_form .= ' < table width = " 650 " cellpadding = " 8 " >
< tr >
2023-11-14 22:41:57 +02:00
< td >
2023-11-27 17:06:47 +02:00
Icon Path : < input type = " text " name = " icon_path " value = " '; if ( $settings['icon_path'] != 'false') { $install_form .= $settings['icon_path'] ; } $install_form .= ' " /> ' ;
$install_form .= '
2023-11-14 22:41:57 +02:00
< p class = " small " >
2023-11-27 17:06:47 +02:00
This is the path to the icon image files ( the path web browsers will access them from ) .
< br /> The included icon sets are < em > apache </ em > , < em > kde </ em > , < em > osx </ em > , and < em > winxp </ em >.
2023-11-14 22:41:57 +02:00
< br /> You can leave it blank to not show icons .
</ p >
</ td >
2023-11-27 17:06:47 +02:00
</ tr >
</ table >
< p /> ' ;
$install_form .= ' < table width = " 650 " cellpadding = " 8 " >
< tr >
< td >
Flag Path : < input type = " text " name = " flag_path " value = " '; if ( $settings['flag_path'] != 'false') { $install_form .= $settings['flag_path'] ; } $install_form .= ' " /> ' ;
$install_form .= '
< p class = " small " >
This is the path to the flag image files ( the path web browsers will access them from ) .
< br /> The included icon sets are < em > country </ em > , < em > language </ em >.
< br /> You can leave it blank to not show icons .
</ p >
</ td >
</ tr >
</ table >
< p /> ' ;
$install_form .= ' < table width = " 650 " cellpadding = " 8 " >
< tr >
< td >
< input type = " checkbox " name = " show_dir_size " value = " true " '; if ($settings[' show_dir_size '] != ' false ') { $install_form .= ' checked = " checked " '; } $install_form .= ' /> Show Directory Size ' ;
$install_form .= '
< p class = " small " >
If this box is checked , the total size of directories will be shown under size ( all the folder\ ' s contents will be added up ) .
< br /> Otherwise , it will display " [dir] " under size .
< br /> NOTE : If you are trying to index many files ( meaning a few thousand ), you will notice a speed improvement with this turned off .
</ p >
</ td >
</ tr >
</ table >
< p /> ' ;
$install_form .= '
< table width = " 650 " cellpadding = " 8 " >
2023-11-14 22:41:57 +02:00
< tr >
< td >
2023-11-27 17:06:47 +02:00
< input type = " checkbox " name = " search_enabled " value = " true " '; if ($settings[' search_enabled '] != ' false ') { $install_form .= ' checked = " checked " '; } $install_form .= ' /> Enable Searching ' ;
$install_form .= '
2023-11-14 22:41:57 +02:00
< p class = " small " >
2023-11-27 17:06:47 +02:00
If this box is checked , people will be able to search for a file or folder by its filename .
< br /> It will search the folder you are currently in , and all subfolders .
< br /> Searching is not case sensitive .
2023-11-14 22:41:57 +02:00
</ p >
</ td >
</ tr >
2023-11-27 17:06:47 +02:00
</ table >
< p /> ' ;
$install_form .= '
< table width = " 650 " cellpadding = " 8 " >
< tr >
< td >
'.$style_select.'
< p class = " small " >
This is the path where the *. tpl template files are located ( relative to this index . php file ) .
</ p >
</ td >
</ tr >
</ table >
< p /> ' ;
$install_form .= ' < table width = " 650 " cellpadding = " 8 " >
< tr >
< td >
< input type = " checkbox " name = " use_login_system " value = " true " '; if ($settings[' use_login_system '] != ' false ') { $install_form .= ' checked = " checked " '; } $install_form .= ' /> Enable Login System
< br />< input type = " checkbox " name = " must_login_to_download " value = " true " '; if ($settings[' must_login_to_download '] != ' false ') { $install_form .= ' checked = " checked " '; } $install_form .= ' /> Users must login to view / download
< br /> User List : < input type = " text " name = " user_list " value = " '; if ( $settings['user_list'] != 'false') { $install_form .= $settings['user_list'] ; } $install_form .= ' " />
< p class = " small " >
User List contains the path to the text file where the usernames and encrypted passwords are stored .
< br /> Make sure the file is chmod\ ' ed so PHP can read and write to it .
< br /> ( User List is only needed if the login system is enabled . )
< br />
< br /> The default accounts are :
< br />< code > username : admin </ code >
< br />< code > password : admin </ code >
< br />
< br />< code > username : user </ code >
< br />< code > password : user </ code >
< br />
< br /> Be sure to create new accounts , then delete these default ones if you enable the login system !
</ p >
</ td >
</ tr >
</ table >
< p /> ' ;
$install_form .= ' < table width = " 650 " cellpadding = " 8 " >
< tr >
< td >
Age for " New " Icon : < input type = " text " name = " days_new " size = " 3 " value = " '; if ( $settings['days_new'] != 'false') { $install_form .= $settings['days_new'] ; } $install_form .= ' " /> days
< p class = " small " >
This contains the number of days old a file can be and still have [ New ] written next to it .
< br /> If it is set to 0 , this feature will be disabled .
</ p >
</ td >
</ tr >
</ table >
< p /> ' ;
$install_form .= ' < table width = " 650 " cellpadding = " 8 " >
< tr >
< td >
Number of file entires per page : < input type = " text " name = " entries_per_page " size = " 3 " value = " '; if ( $settings['entries_per_page'] != 'false') { $install_form .= $settings['entries_per_page'] ; } $install_form .= ' " />
< p class = " small " >
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 < code > Previous </ code > and < code > Next </ code > buttons .
< br /> If it is set to 0 , everything will be displayed on one page .
</ p >
</ td >
</ tr >
</ table >
< p /> ' ;
$install_form .= ' < table width = " 650 " cellpadding = " 8 " >
< tr >
< td >
Image Thumbnail Height : < input type = " text " name = " thumbnail_height " size = " 3 " value = " '; if ( $settings['thumbnail_height'] != 'false') { $install_form .= $settings['thumbnail_height'] ; } $install_form .= ' " /> pixels
< p class = " small " >
This is a feature that will show thumbnails next to images . ( NOTE : GDlib 2.0 . 1 or higher is required )
< br /> Setting it to 0 will disable this feature , and setting it to any other number will set the size of the thumbnail .
< br /> ( 100 is a good setting to start with . )
</ p >
</ td >
</ tr >
</ table >
< p /> ' ;
$install_form .= ' < table width = " 650 " cellpadding = " 8 " >
< tr >
2023-11-14 22:41:57 +02:00
< td >
2023-11-27 17:06:47 +02:00
< input type = " checkbox " name = " force_download " value = " true " '; if ($settings[' force_download '] != ' false ') { $install_form .= ' checked = " checked " '; } $install_form .= ' /> Pipe downloaded files though the PHP script
< p > Bandwidth Limit : < input type = " text " name = " bandwidth_limit " size = " 3 " value = " '; if ( $settings['bandwidth_limit'] != 'false') { $install_form .= $settings['bandwidth_limit'] ; } $install_form .= ' " /> KB / s </ p >
2023-11-14 22:41:57 +02:00
< p class = " small " >
2023-11-27 17:06:47 +02:00
This contains the max download speed for files . The above checkbox needs to be checked for this to work .
< br /> If it is set to 0 , the script will not limit download speed .
2023-11-14 22:41:57 +02:00
</ p >
</ td >
2023-11-27 17:06:47 +02:00
</ tr >
</ table >
< p /> ' ;
$install_form .= ' < table width = " 650 " cellpadding = " 8 " >
< tr >
< td >
< p >< input type = " checkbox " name = " anti_leech " value = " true " '; if ($settings[' anti_leech '] != ' false ') { $install_form .= ' checked = " checked " '; } $install_form .= ' /> Anti - Leech </ p >
< p class = " small " >
When downloading a file , this will check to make sure the referrer the browser sends matches the website\ ' s URL .
< br /> Since some people turn off referrer sending in their browser , this option is not recommended .
</ p >
</ td >
</ tr >
</ table >
< p /> ' ;
$install_form .= ' < table width = " 650 " cellpadding = " 8 " >
< tr >
< td >
< p >
The following items contain the path and filename to the file where the data for that feature will be stored .
< br /> Leave it blank to turn off that feature .
</ p >
< p > Hidden Files List : < input type = " text " name = " hidden_files " value = " '; if ( $settings['hidden_files'] != 'false') { $install_form .= $settings['hidden_files'] ; } $install_form .= ' " />
< br />< span class = " small " >
Any file or folder matched to an item in this list will be kept hidden .
< br /> The contents of the list are editable when you login as an admin .
</ span >
</ p >
2023-11-14 22:41:57 +02:00
2023-11-27 17:06:47 +02:00
< p > Access Log File : < input type = " text " name = " log_file " value = " '; if ( $settings['log_file'] != 'false') { $install_form .= $settings['log_file'] ; } $install_form .= ' " />
< br />< span class = " small " >
The file to write the access log .
< br /> If this is enabled , you will be able to view the contents of the logfile
< br /> and generate statistics when you login as an admin .
</ span ></ p >
2023-11-14 22:41:57 +02:00
2023-11-27 17:06:47 +02:00
< p > File / Folder Description File : < input type = " text " name = " description_file " value = " '; if ( $settings['description_file'] != 'false') { $install_form .= $settings['description_file'] ; } $install_form .= ' " />
< br />< span class = " small " >
The file to write the file descriptions to .
< br /> File / Folder descriptions are editable when you login as an admin .
</ span ></ p >
2023-11-14 22:41:57 +02:00
2023-11-27 17:06:47 +02:00
< p > Download Count File : < input type = " text " name = " download_count " value = " '; if (!empty( $settings['download_count'] ) && ( $settings['download_count'] != 'false')) { $install_form .= $settings['download_count'] ; } else { $install_form .= $download_count_file ; } $install_form .= ' " />
< br />< span class = " small " >
The file to write the file download counts to .
< br /> The count is automatically increased when a file is downloaded .
</ span ></ p >
2023-11-14 22:41:57 +02:00
2023-11-27 17:06:47 +02:00
< p > Banned User List : < input type = " text " name = " banned_list " value = " '; if (!empty( $settings['banned_list'] ) && ( $settings['banned_list'] != 'false')) { $install_form .= $settings['banned_list'] ; } else { $install_form .= $banned_list_file ; } $install_form .= ' " />
< br />< span class = " small " >
The file to write IP addresses and hostnames that are blocked from accessing this script .
< br /> The contents of the list are editable when you login as an admin .
</ span ></ p >
</ td >
</ tr >
</ table >
< p /> ' ;
$install_form .= ' < table width = " 650 " cellpadding = " 8 " >
< tr >
< td >
< input type = " checkbox " name = " archive " value = " true " '; if ($settings[' archive '] != ' false ') { $install_form .= ' checked = " checked " '; } $install_form .= ' /> Allow folder archive downloading
< p class = " small " >
If this box is checked , users will be able to download the folder\ ' s contents as a tar archive file .
</ p >
</ td >
</ tr >
</ table >
< p /> ' ;
$install_form .= ' < table width = " 650 " cellpadding = " 8 " >
< tr >
< td >
< input type = " checkbox " name = " parse_htaccess " value = " true " '; if ($settings[' parse_htaccess '] != ' false ') { $install_form .= ' checked = " checked " '; } $install_form .= ' /> Parse . htaccess files
< p class = " small " >
If this box is checked , . htaccess files will be parsed and used by AutoIndex .
</ p >
</ td >
</ tr >
</ table >
< p /> ' ;
$install_form .= ' < table width = " 650 " cellpadding = " 8 " >
< tr >
< td >
< p > MD5 calculation max size : < input type = " text " name = " md5_show " size = " 3 " value = " '; if ( $settings['md5_show'] != 'false') { $install_form .= $settings['md5_show'] ; } $install_form .= ' " /> MB </ p >
< p class = " small " >
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 ) .
< br /> ( 10 is a good setting to start with . )
</ p >
</ td >
</ tr >
</ table >
< p /> ' ;
$install_form .= '
< table width = " 650 " cellpadding = " 8 " >
< tr >
< td > ' . $lang_select . '
< p class = " small " >
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 .
</ p >
</ td >
</ tr >
</ table >
< p />
< hr />
< p /> ' ;
$install_form .= ' < p >
< input type = " submit " value = " Configure " />
</ p >
< p >
When you press < em > Configure </ em > , the script will attempt to write the config data to the file .
< br /> 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 .
< br /> ( It should be named < em > '. CONFIG_STORED . ' </ em > and put in the same folder as < em > index . php </ em > )
</ p >
</ form >
<!--
Powered by AutoIndex PHP Script ( version ' . VERSION . ' )
Copyright ( C ) 2002 - 2007 Justin Hagstrom
http :// autoindex . sourceforge . net
Page generated in ' . round((microtime(true) - START_TIME) * 1000, 1) . ' milliseconds .
-->
</ body >
</ html > ' ;
print ( $page_header . $install_form );
?>