X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Fconfigtest.php;h=b3f0307d82a31d8fa5e0f205643a31bba34da904;hb=bb7173fa78e0dc070a57ceaef0bc454aec61bb60;hp=e9d946c40ac7ebd563115afb198adcddbec2fb4f;hpb=30967a1e09679c395b31929cbdb1a0e88b13f01e;p=squirrelmail.git diff --git a/src/configtest.php b/src/configtest.php index e9d946c4..b3f0307d 100644 --- a/src/configtest.php +++ b/src/configtest.php @@ -1,4 +1,5 @@ '.$IND.'ERROR: ' .$str. "

\n"; @@ -70,9 +74,11 @@ if(!in_array('strings.php', $included)) { /* checking PHP specs */ -echo '

SquirrelMail version: '.$version.'
'. - 'Config file version: '.$config_version . '
'. - 'Config file last modified: '.date ('d F Y H:i:s', filemtime(SM_PATH . 'config/config.php')).'

'; +echo "

\n\n" . + '\n" . + '\n
SquirrelMail version:" . $version . "
Config file version:' . $config_version . "
Config file last modified:' . + date ('d F Y H:i:s', filemtime(SM_PATH . 'config/config.php')) . + "
\n

\n\n"; echo "Checking PHP configuration...
\n"; @@ -80,7 +86,7 @@ if(!check_php_version(4,1,0)) { do_err('Insufficient PHP version: '. PHP_VERSION . '! Minimum required: 4.1.0'); } -echo $IND . 'PHP version '.PHP_VERSION.' OK.
'; +echo $IND . 'PHP version ' . PHP_VERSION . " OK.
\n"; $php_exts = array('session','pcre'); $diff = array_diff($php_exts, get_loaded_extensions()); @@ -88,7 +94,7 @@ if(count($diff)) { do_err('Required PHP extensions missing: '.implode(', ',$diff) ); } -echo $IND . 'PHP extensions OK.
'; +echo $IND . "PHP extensions OK.
\n"; /* checking paths */ @@ -180,31 +186,33 @@ if($useSendmail) { $errorNumber, $errorString); if(!$stream) { do_err("Error connecting to SMTP server \"$smtpServerAddress:$smtpPort\".". - "Server error: ($errorNumber) $errorString"); + "Server error: ($errorNumber) ".htmlspecialchars($errorString)); } // check for SMTP code; should be 2xx to allow us access $smtpline = fgets($stream, 1024); if(((int) $smtpline{0}) > 3) { - do_err("Error connecting to SMTP server. Server error: ".$smtpline); + do_err("Error connecting to SMTP server. Server error: ". + htmlspecialchars($smtpline)); } fputs($stream, 'QUIT'); fclose($stream); - echo $IND . 'SMTP server OK ('.trim($smtpline).")
\n"; + echo $IND . 'SMTP server OK ('. + trim(htmlspecialchars($smtpline)).")
\n"; /* POP before SMTP */ if($pop_before_smtp) { $stream = fsockopen($smtpServerAddress, 110, $err_no, $err_str); if (!$stream) { - do_err("Error connecting to POP Server ($smtpServerAddress:110)" - . " $err_no : $err_str"); + do_err("Error connecting to POP Server ($smtpServerAddress:110) " + . $err_no . ' : ' . htmlspecialchars($err_str)); } $tmp = fgets($stream, 1024); if (substr($tmp, 0, 3) != '+OK') { do_err("Error connecting to POP Server ($smtpServerAddress:110)" - . ' '.$tmp); + . ' '.htmlspecialchars($tmp)); } fputs($stream, 'QUIT'); fclose($stream); @@ -212,26 +220,51 @@ if($useSendmail) { } } +/** + * Check the IMAP server + */ echo "Checking IMAP service....
\n"; +/** Can we open a connection? */ $stream = fsockopen( ($use_imap_tls?'tls://':'').$imapServerAddress, $imapPort, $errorNumber, $errorString); if(!$stream) { do_err("Error connecting to IMAP server \"$imapServerAddress:$imapPort\".". - "Server error: ($errorNumber) $errorString"); + "Server error: ($errorNumber) ". + htmlspecialchars($errorString)); } +/** Is the first response 'OK'? */ $imapline = fgets($stream, 1024); if(substr($imapline, 0,4) != '* OK') { - do_err('Error connecting to IMAP server. Server error: '.$imapline); + do_err('Error connecting to IMAP server. Server error: '. + htmlspecialchars($imapline)); } -fputs($stream, '001 LOGOUT'); -fclose($stream); +echo $IND . 'IMAP server ready ('. + htmlspecialchars(trim($imapline)).")
\n"; -echo $IND . 'IMAP server OK ('.trim($imapline).")
\n"; +/** Check capabilities */ +fputs($stream, "A001 CAPABILITY\r\n"); +$capline = fgets($stream, 1024); -echo "Checking internationalization (i18n) settings:
\n"; +echo $IND . 'Capabilities: '.htmlspecialchars($capline)."
\n"; + +if($imap_auth_mech == 'login' && stristr($capline, 'LOGINDISABLED') !== FALSE) { + do_err('Your server doesn\'t allow plaintext logins. '. + 'Try enabling another authentication mechanism like CRAM-MD5, DIGEST-MD5 or TLS-encryption '. + 'in the SquirrelMail configuration.', FALSE); +} +if($use_imap_tls && stristr($capline, 'STARTTLS') === FALSE) { + do_err('You have enabled TLS encryption in the config, but the server does not '. + 'report STARTTLS capability. TLS is probably not supported.', FALSE); +} + +/** OK, close connection */ +fputs($stream, "A002 LOGOUT\r\n"); +fclose($stream); + +echo "Checking internationalization (i18n) settings...
\n"; echo "$IND gettext - "; if (function_exists('gettext')) { echo "Gettext functions are available. You must have appropriate system locales compiled.
\n"; @@ -267,7 +300,7 @@ echo "$IND timezone - "; if ( (!ini_get('safe_mode')) || !strcmp(ini_get('safe_mode_allowed_env_vars'),'') || preg_match('/^([\w_]+,)*TZ/', ini_get('safe_mode_allowed_env_vars')) ) { - echo "Webmail users can change their time zone settings.
\n"; + echo "Webmail users can change their time zone settings.
\n"; } else { echo "Webmail users can't change their time zone settings.
\n"; } @@ -276,54 +309,104 @@ if ( (!ini_get('safe_mode')) || // Pear DB tests echo "Checking database functions...
\n"; if($addrbook_dsn || $prefs_dsn || $addrbook_global_dsn) { - @include_once('DB.php'); - if (class_exists('DB')) { - echo "$IND PHP Pear DB support is present.
\n"; - $db_functions=array( - 'dbase' => 'dbase_open', - 'fbsql' => 'fbsql_connect', - 'interbase' => 'ibase_connect', - 'informix' => 'ifx_connect', - 'msql' => 'msql_connect', - 'mssql' => 'mssql_connect', - 'mysql' => 'mysql_connect', - 'mysqli' => 'mysqli_connect', - 'oci8' => 'ocilogon', - 'odbc' => 'odbc_connect', - 'pgsql' => 'pgsql_connect', - 'sqlite' => 'sqlite_open', - 'sybase' => 'sybase_connect' - ); - - $dsns = array(); - if($prefs_dsn) $dsns['preferences'] = $prefs_dsn; - if($addrbook_dsn) $dsns['addressbook'] = $addrbook_dsn; - if($addrbook_global_dsn) $dsns['global addressbook'] = $addrbook_global_dsn; - - foreach($dsns as $type => $dsn) { - $dbtype = array_shift(explode(':', $dsn)); - if(isset($db_functions[$dbtype]) && function_exists($db_functions[$dbtype])) { - echo "$IND$dbtype database support present.
\n"; - - // now, test this interface: - - $dbh = DB::connect($dsn, true); - if (DB::isError($dbh)) { - do_err('Database error: '. DB::errorMessage($dbh) . ' in ' .$type .' DSN.'); - } - $dbh->disconnect(); - echo "$IND$type database connect successful.
\n"; - - } else { - do_err($db.' database support not present!'); - } + @include_once('DB.php'); + if (class_exists('DB')) { + echo "$IND PHP Pear DB support is present.
\n"; + $db_functions=array( + 'dbase' => 'dbase_open', + 'fbsql' => 'fbsql_connect', + 'interbase' => 'ibase_connect', + 'informix' => 'ifx_connect', + 'msql' => 'msql_connect', + 'mssql' => 'mssql_connect', + 'mysql' => 'mysql_connect', + 'mysqli' => 'mysqli_connect', + 'oci8' => 'ocilogon', + 'odbc' => 'odbc_connect', + 'pgsql' => 'pgsql_connect', + 'sqlite' => 'sqlite_open', + 'sybase' => 'sybase_connect' + ); + + $dsns = array(); + if($prefs_dsn) { + $dsns['preferences'] = $prefs_dsn; + } + if($addrbook_dsn) { + $dsns['addressbook'] = $addrbook_dsn; + } + if($addrbook_global_dsn) { + $dsns['global addressbook'] = $addrbook_global_dsn; + } + + foreach($dsns as $type => $dsn) { + $dbtype = array_shift(explode(':', $dsn)); + if(isset($db_functions[$dbtype]) && function_exists($db_functions[$dbtype])) { + echo "$IND$dbtype database support present.
\n"; + + // now, test this interface: + + $dbh = DB::connect($dsn, true); + if (DB::isError($dbh)) { + do_err('Database error: '. htmlspecialchars(DB::errorMessage($dbh)) . + ' in ' .$type .' DSN.'); + } + $dbh->disconnect(); + echo "$IND$type database connect successful.
\n"; + + } else { + do_err($db.' database support not present!'); } - } else { - do_err('Required PHP Pear DB support is not available.');; - } + } + } else { + do_err('Required PHP PEAR DB support is not available. Is PEAR installed and is the + include path set correctly to find DB.php? The include path is now: + "' . ini_get('include_path') . '".'); + } } else { echo $IND."not using database functionality.
\n"; } + +// LDAP DB tests +echo "Checking LDAP functions...
\n"; +if( empty($ldap_server) ) { + echo $IND."not using LDAP functionality.
\n"; +} else { + if ( !function_exists(ldap_connect) ) { + do_err('Required LDAP support is not available.'); + } else { + echo "$IND LDAP support present.
\n"; + foreach ( $ldap_server as $param ) { + + $linkid = ldap_connect($param['host'], (empty($param['port']) ? 389 : $param['port']) ); + + if ( $linkid ) { + echo "$IND LDAP connect to ".$param['host']." successful: ".$linkid."
\n"; + + if ( !empty($param['protocol']) && + !ldap_set_option($linkid, LDAP_OPT_PROTOCOL_VERSION, $param['protocol']) ) { + do_err('Unable to set LDAP protocol'); + } + + if ( empty($param['binddn']) ) { + $bind = ldap_bind($linkid); + } else { + $bind = ldap_bind($param['binddn'], $param['bindpw']); + } + + if ( $bind ) { + echo "$IND LDAP Bind Successful
"; + } else { + do_err('Unable to Bind to LDAP Server'); + } + + ldap_close($linkid); + } else { + do_err('Connection to LDAP failed'); + } + } + } +} ?>

Congratulations, your SquirrelMail setup looks fine to me!

@@ -332,3 +415,6 @@ if($addrbook_dsn || $prefs_dsn || $addrbook_global_dsn) { +