<?php // $Header: /cvsroot/phpldapadmin/phpldapadmin/index.php,v 1.32 2005/02/26 12:35:05 wurley Exp $ /** * @package phpLDAPadmin */ /******************************************* <pre> If you are seeing this in your browser, PHP is not installed on your web server!!! </pre> *******************************************/ require './common.php'; if( ! file_exists(realpath( 'config.php' )) ) { ?> <html> <head> <title>phpLDAPadmin - <?php echo pla_version(); ?></title> <link rel="stylesheet" href="style.css" /> </head> <body> <h3 class="title">Configure phpLDAPadmin</h1> <br /> <br /> <center> <?php echo $lang['need_to_configure']; ?> </center> </body> </html> <?php } elseif( check_config() ) { require './config.php'; echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="no-NO"> <head><title>phpLDAPadmin - <?php echo pla_version(); ?></title></head> <frameset cols="<?php echo $tree_width; ?>,*"> <frame src="tree.php" name="left_frame" id="left_frame" /> <frame src="welcome.php" name="right_frame" id="right_frame" /> </frameset> </html> <?php } /* * Makes sure that the config file is properly setup and * that your install of PHP can handle LDAP stuff. * TODO: Check ALL config elements for correctness in syntax * TODO: Make sure all required config stuff is defined. */ function check_config() { global $lang; /* Make sure their PHP version is current enough */ if( strcmp( phpversion(), REQUIRED_PHP_VERSION ) < 0 ) { pla_error( "phpLDAPadmin requires PHP version 4.1.0 or greater. You are using " . phpversion() ); } /* Make sure this PHP install has LDAP support */ if( ! extension_loaded( 'ldap' ) ) { pla_error( "Your install of PHP appears to be missing LDAP support. Please install " . "LDAP support before using phpLDAPadmin. (Don't forget to restart your web server afterwards)" ); return false; } /* Make sure the config file is readable */ if( ! is_readable( realpath( 'config.php' ) ) ) { pla_error( "The config file 'config.php' is not readable. Please check its permissions." ); return false; } // Make sure their session save path is writable, if they are using a file system session module, that is. if( 0 == strcasecmp( "Files", session_module_name() && ! is_writable( realpath( session_save_path() ) ) ) ) { pla_error( "Your PHP session configuration is incorrect. Please check the value of session.save_path in your php.ini to ensure that the directory specified there exists and is writable. The current setting of \"". session_save_path() . "\" is un-writable by the web server." ); return false; } /* check for syntax errors in config.php */ // capture the result of including the file with output buffering ob_start(); include './config.php'; $str = ob_get_contents(); ob_end_clean(); if( $str && false !== strpos( $str, 'error' ) ) { $str = strip_tags( $str ); $matches = array(); preg_match( "/on line (\d+)/", $str, $matches ); $line_num = $matches[1]; $file = file( 'config.php' ); ?> <html> <head> <title>phpLDAPadmin Config File Error</title> <link rel="stylesheet" href="style.css" /> </head> <body> <h3 class="title">Config file error</h3> <h3 class="subtitle">Syntax error on line <?php echo $line_num; ?></h3> <center> Looks like your config file has a syntax error on line <?php echo $line_num; ?>. Here is a snippet around that line <br /> <br /> <div style="text-align: left; margin-left: 80px; margin-right: 80px; border: 1px solid black; padding: 10px;"> <tt> <?php for( $i=$line_num-9; $i<$line_num+5; $i++ ) { if( $i+1 == $line_num ) echo "<div style=\"color:red;background:#fdd\">"; if( $i < 0 ) continue; echo "<b>" . ($i+1) . "</b>: " . htmlspecialchars($file[ $i ]) . "<br />"; if( $i+1 == $line_num ) echo "</div>"; } ?> </tt> </div> <br /> Hint: Sometimes these errors are caused by lines <b>preceding</b> the line reported. </body> </html> <?php return false; } /* check the existence of the servers array */ require './config.php'; if( ! isset( $servers ) || ! is_array( $servers ) || count( $servers ) == 0 ) { pla_error( "Your config.php is missing the \$servers array or the \$servers array is empty. Please see the sample file config.php.example ", false ); return false; } /* Make sure there is at least one server in the array */ $count = 0; foreach( $servers as $i => $server ) if( isset( $server['host'] ) ) $count++; if( $count == 0 ) { pla_error( "None of the " . count($servers) . " servers in your \$servers configuration is active in config.php. At least one of your servers must set the 'host' directive. Example: <br><pre>\$servers['host'] = \"ldap.example.com\";<br></pre> phpLDAPadmin cannot proceed util you correct this.", false ); return false; } // Check that 'base' is present on all serve entries foreach( $servers as $id => $server ) { if( isset( $server['host'] ) && isset( $server['name'] ) ) isset( $server['base'] ) or pla_error ( "Your configuration has an error. You omitted the 'base' directive on server number $id. Your server entry must have a 'base' directive even if it's empty ('')." ); } // Check each of the servers in the servers array foreach( $servers as $id => $server ) { if( isset( $server['host'] ) ) { // Make sure they specified an auth_type if( ! isset( $server['auth_type'] ) ) { pla_error( "Your configuration has an error. You omitted the 'auth_type' directive on server number $id 'auth_type' must be set, and it must be one of 'config', 'cookie', or 'session'.", false ); return false; } // Make sure they specified a correct auth_type if( ! in_array( $server['auth_type'], array( 'config', 'cookie', 'session' ) ) ) { global $lang; pla_error( sprintf( $lang['error_auth_type_config'], htmlspecialchars( $server['auth_type'] ) ) ); return false; } } } return true; } ?>