diff options
-rw-r--r-- | installer/config.php | 15 | ||||
-rw-r--r-- | installer/index.php | 3 | ||||
-rw-r--r-- | installer/rcube_install.php | 6 | ||||
-rw-r--r-- | installer/styles.css | 2 | ||||
-rw-r--r-- | installer/test.php | 67 |
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 © 2008 - Published under the GNU Public License + Installer by the RoundCube Dev Team. Copyright © 2008 - Published under the GNU Public License; + 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> |