summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthomascube <thomas@roundcube.net>2008-02-26 18:08:19 +0000
committerthomascube <thomas@roundcube.net>2008-02-26 18:08:19 +0000
commitad43e637bd51b5b288856fee9a69da851ba07779 (patch)
tree33d3bf75ff441051f0376fc839907d8472d8723d
parent190e97e88624b4b42ad677c7446c0d5a0b7b17a6 (diff)
Add SMTP test to installer script
-rw-r--r--installer/config.php15
-rw-r--r--installer/index.php3
-rw-r--r--installer/rcube_install.php6
-rw-r--r--installer/styles.css2
-rw-r--r--installer/test.php67
5 files changed, 82 insertions, 11 deletions
diff --git a/installer/config.php b/installer/config.php
index 0697cc124..c110276aa 100644
--- a/installer/config.php
+++ b/installer/config.php
@@ -5,6 +5,7 @@
ini_set('display_errors', 1);
require_once 'include/rcube_html.inc';
+$RCI->load_config();
$RCI->load_defaults();
if (!empty($_POST['submit'])) {
@@ -167,6 +168,8 @@ echo $select_mdnreq->show(intval($RCI->getprop('mdn_requests')));
<p>Database settings for read/write operations:</p>
<?php
+require_once 'DB.php';
+
$supported_dbs = array('MySQL' => 'mysql', 'MySQLi' => 'mysqli',
'PgSQL' => 'pgsql', 'SQLite' => 'sqlite');
@@ -182,17 +185,17 @@ $input_dbname = new textfield(array('name' => '_dbname', 'size' => 20, 'id' => "
$input_dbuser = new textfield(array('name' => '_dbuser', 'size' => 20, 'id' => "cfgdbuser"));
$input_dbpass = new textfield(array('name' => '_dbpass', 'size' => 20, 'id' => "cfgdbpass"));
-$dsnw = parse_url($RCI->getprop('db_dsnw'));
+$dsnw = DB::parseDSN($RCI->getprop('db_dsnw'));
-echo $select_dbtype->show($_POST['_dbtype'] ? $_POST['_dbtype'] : $dsnw['scheme']);
+echo $select_dbtype->show($_POST['_dbtype'] ? $_POST['_dbtype'] : $dsnw['phptype']);
echo '<label for="cfgdbtype">Database type</label><br />';
-echo $input_dbhost->show($_POST['_dbhost'] ? $_POST['_dbhost'] : $dsnw['host']);
+echo $input_dbhost->show($_POST['_dbhost'] ? $_POST['_dbhost'] : $dsnw['hostspec']);
echo '<label for="cfgdbhost">Database server</label><br />';
-echo $input_dbname->show($_POST['_dbname'] ? $_POST['_dbname'] : preg_replace('/^\//', '', $dsnw['path']));
+echo $input_dbname->show($_POST['_dbname'] ? $_POST['_dbname'] : $dsnw['database']);
echo '<label for="cfgdbname">Database name</label><br />';
-echo $input_dbuser->show($_POST['_dbuser'] ? $_POST['_dbuser'] : $dsnw['user']);
+echo $input_dbuser->show($_POST['_dbuser'] ? $_POST['_dbuser'] : $dsnw['username']);
echo '<label for="cfgdbuser">Database user name (needs write permissions)</label><br />';
-echo $input_dbpass->show($_POST['_dbpass'] ? $_POST['_dbpass'] : $dsnw['pass']);
+echo $input_dbpass->show($_POST['_dbpass'] ? $_POST['_dbpass'] : $dsnw['password']);
echo '<label for="cfgdbpass">Database password</label><br />';
?>
diff --git a/installer/index.php b/installer/index.php
index d62f6cb9d..aab406e98 100644
--- a/installer/index.php
+++ b/installer/index.php
@@ -64,7 +64,8 @@ else {
</div>
<div id="footer">
- Installer by the RoundCube Dev Team. Copyright &copy; 2008 - Published under the GNU Public License
+ Installer by the RoundCube Dev Team. Copyright &copy; 2008 - Published under the GNU Public License;&nbsp;
+ Icons by <a href="http://famfamfam.com">famfamfam</a>
</div>
</body>
</html>
diff --git a/installer/rcube_install.php b/installer/rcube_install.php
index f2ab394a1..8ff220357 100644
--- a/installer/rcube_install.php
+++ b/installer/rcube_install.php
@@ -27,6 +27,7 @@ class rcube_install
var $failures = 0;
var $config = array();
var $last_error = null;
+ var $email_pattern = '([a-z0-9][a-z0-9\-\.\+\_]*@[a-z0-9]([a-z0-9\-][.]?)*[a-z0-9])';
/**
* Constructor
@@ -88,16 +89,17 @@ class rcube_install
* Getter for a certain config property
*
* @param string Property name
+ * @param string Default value
* @return string The property value
*/
- function getprop($name)
+ function getprop($name, $default = null)
{
$value = isset($_REQUEST["_$name"]) ? $_REQUEST["_$name"] : $this->config[$name];
if ($name == 'des_key' && !isset($_REQUEST["_$name"]))
$value = self::random_key(24);
- return $value;
+ return $value !== null ? $value : $default;
}
diff --git a/installer/styles.css b/installer/styles.css
index 1290696f8..0260b6741 100644
--- a/installer/styles.css
+++ b/installer/styles.css
@@ -137,7 +137,7 @@ dd div {
margin-top: 0.3em;
}
-label {
+dd label {
padding-left: 0.5em;
}
diff --git a/installer/test.php b/installer/test.php
index b782a5c44..0f499eba3 100644
--- a/installer/test.php
+++ b/installer/test.php
@@ -123,7 +123,72 @@ if ($db_working) {
?>
-<p>[@todo Add tests for IMAP and SMTP settings]</p>
+<h3>Test SMTP settings</h3>
+
+<p>
+Server: <?php echo $RCI->getprop('smtp_server', 'PHP mail()'); ?><br />
+Port: <?php echo $RCI->getprop('smtp_port'); ?><br />
+User: <?php echo $RCI->getprop('smtp_user', '(none)'); ?><br />
+Password: <?php echo $RCI->getprop('smtp_pass', '(none)'); ?><br />
+</p>
+
+<?php
+
+if (isset($_POST['sendmail']) && !empty($_POST['_from']) && !empty($_POST['_to'])) {
+
+ require_once 'lib/rc_mail_mime.inc';
+ require_once 'include/rcube_smtp.inc';
+
+ echo '<p>Trying to send email...<br />';
+
+ if (preg_match('/^' . $RCI->email_pattern . '$/i', trim($_POST['_from'])) &&
+ preg_match('/^' . $RCI->email_pattern . '$/i', trim($_POST['_to']))) {
+
+ $recipients = trim($_POST['_to']);
+
+ $headers = array(
+ 'From' => trim($_POST['_from']),
+ 'To' => $recipients,
+ 'Subject' => 'Test message from RoundCube',
+ );
+
+ $body = 'This is a test to confirm that RoundCube can send email.';
+
+ $mail_object = new rc_mail_mime();
+ $send_headers = $mail_object->headers($headers);
+
+ $smtp_response = array();
+ $status = smtp_mail($headers['From'], $recipients,
+ ($foo = $mail_object->txtHeaders($send_headers)),
+ $body, $smtp_response);
+
+ if ($status) {
+ $RCI->pass('SMTP send');
+ }
+ else {
+ $RCI->fail('SMTP send', join('; ', $smtp_response));
+ }
+ }
+ else {
+ $RCI->fail('SMTP send', 'Invalid sender or recipient');
+ }
+}
+
+echo '</p>';
+
+?>
+
+<table>
+<tbody>
+ <tr><td><label for="sendmailfrom">Sender</label></td><td><input type="text" name="_from" value="" id="sendmailfrom" /></td></tr>
+ <tr><td><label for="sendmailto">Recipient</label></td><td><input type="text" name="_to" value="" id="sendmailto" /></td></tr>
+</tbody>
+</table>
+
+<p><input type="submit" name="sendmail" value="Send test mail" /></p>
+
+
+<p>[@todo Add tests for IMAP settings]</p>
</form>