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 "\nSquirrelMail version: | " . $version . " |
\n" .
+ 'Config file version: | ' . $config_version . " |
\n" .
+ 'Config file last modified: | ' .
+ date ('d F Y H:i:s', filemtime(SM_PATH . 'config/config.php')) .
+ " |
\n
\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) {