From 461a30d771edd8bc6606f2c92dfde363514b93b1 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Fri, 14 Jun 2013 12:09:08 +0200 Subject: Merge config files (#1487311). Now we have defaults.inc.php and config.inc.php. Renamed $rcmail_config to $config. Old naming and old files are supported for backward compatibility. --- INSTALL | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'INSTALL') diff --git a/INSTALL b/INSTALL index 3876f632c..4573c55af 100644 --- a/INSTALL +++ b/INSTALL @@ -59,7 +59,7 @@ CONFIGURATION HINTS =================== Roundcube writes internal errors to the 'errors' log file located in the logs -directory which can be configured in config/main.inc.php. If you want ordinary +directory which can be configured in config/config.inc.php. If you want ordinary PHP errors to be logged there as well, enable the 'php_value error_log' line in the .htaccess file and set the path to the log file accordingly. -- cgit v1.2.3 From 9bacb2cd3f7e8f96a29f651460954965c400aac6 Mon Sep 17 00:00:00 2001 From: Thomas Bruederli Date: Fri, 28 Jun 2013 22:27:59 +0200 Subject: Prepare config migration: - Show warning in installer and hints how to migrate - Let update.sh create the new config file if legacy config is detected - Provide a sample config file for manual configuration - Define a list of options which always should be written to local config --- INSTALL | 11 +++--- bin/update.sh | 30 +++++++++++----- config/config.inc.php.sample | 85 ++++++++++++++++++++++++++++++++++++++++++++ config/defaults.inc.php | 12 +++---- installer/config.php | 13 ++++--- installer/index.php | 12 +++++-- installer/rcube_install.php | 7 +++- 7 files changed, 144 insertions(+), 26 deletions(-) create mode 100644 config/config.inc.php.sample (limited to 'INSTALL') diff --git a/INSTALL b/INSTALL index 4573c55af..b80d3323b 100644 --- a/INSTALL +++ b/INSTALL @@ -141,10 +141,13 @@ Best solution is to install a cronjob running this script daily. MANUAL CONFIGURATION ==================== -First of all, rename the files config/*.inc.php.dist to config/*.inc.php. -You can then change these files according to your environment and your needs. -Details about the config parameters can be found in the config files. -See http://trac.roundcube.net/wiki/Howto_Install for even more guidance. +First of all, copy the sample configuration file config/config.inc.php.sample +to config/config.inc.php and make the necessary adjustments according to your +environment and your needs. More configuration options can be copied from the +config/defaults.inc.php file into your local config.inc.php file as needed. +Read the comments above the individual configuration options to find out what +they do or read http://trac.roundcube.net/wiki/Howto_Install for even more +guidance. You can also modify the default .htaccess file. This is necessary to increase the allowed size of file attachments, for example: diff --git a/bin/update.sh b/bin/update.sh index 1a6fbd32d..b5000bbe5 100755 --- a/bin/update.sh +++ b/bin/update.sh @@ -36,17 +36,17 @@ if (!$opts['version']) { $opts['version'] = RCMAIL_VERSION; } -if ($opts['version'] && version_compare(version_parse($opts['version']), version_parse(RCMAIL_VERSION), '>=')) - die("Nothing to be done here. Bye!\n"); - - $RCI = rcube_install::get_instance(); $RCI->load_config(); +if ($opts['version'] && version_compare(version_parse($opts['version']), version_parse(RCMAIL_VERSION), '>=') && !$RCI->legacy_config) + die("Nothing to be done here. Bye!\n"); + + if ($RCI->configured) { $success = true; - if ($messages = $RCI->check_config()) { + if (($messages = $RCI->check_config()) || $RCI->legacy_config) { $success = false; $err = 0; @@ -74,6 +74,12 @@ if ($RCI->configured) { echo "\n"; } + if (!$err && $RCI->legacy_config) { + echo "WARNING: Your configuration needs to be migrated!\n"; + echo "We changed the configuration files structure and your two config files main.inc.php and db.inc.php have to be merged into one single file.\n"; + $err++; + } + // ask user to update config files if ($err) { echo "Do you want me to fix your local configuration? (y/N)\n"; @@ -81,13 +87,13 @@ if ($RCI->configured) { // positive: let's merge the local config with the defaults if (strtolower($input) == 'y') { - $error = $writed = false; + $error = $written = false; // backup current config echo ". backing up the current config file(s)...\n"; foreach (array('config', 'main', 'db') as $file) { - if (file_exists(RCMAIL_CONFIG_DIR . '/' . $file . '.inc.php')) + if (file_exists(RCMAIL_CONFIG_DIR . '/' . $file . '.inc.php')) { if (!copy(RCMAIL_CONFIG_DIR . '/' . $file . '.inc.php', RCMAIL_CONFIG_DIR . '/' . $file . '.old.php')) { $error = true; } @@ -97,11 +103,11 @@ if ($RCI->configured) { if (!$error) { $RCI->merge_config(); echo ". writing " . RCMAIL_CONFIG_DIR . "/config.inc.php...\n"; - $writed = file_put_contents(RCMAIL_CONFIG_DIR . '/config.inc.php', $RCI->create_config()); + $written = file_put_contents(RCMAIL_CONFIG_DIR . '/config.inc.php', $RCI->create_config()); } // Success! - if ($writed) { + if ($written) { echo "Done.\n"; echo "Your configuration files are now up-to-date!\n"; @@ -110,6 +116,12 @@ if ($RCI->configured) { foreach ($messages['missing'] as $msg) echo "- '" . $msg['prop'] . ($msg['name'] ? "': " . $msg['name'] : "'") . "\n"; } + + if ($RCI->legacy_config) { + foreach (array('main', 'db') as $file) { + @unlink(RCMAIL_CONFIG_DIR . '/' . $file . '.inc.php'); + } + } } else { echo "Failed to write config file(s)!\n"; diff --git a/config/config.inc.php.sample b/config/config.inc.php.sample new file mode 100644 index 000000000..22a269460 --- /dev/null +++ b/config/config.inc.php.sample @@ -0,0 +1,85 @@ +bool_config_props = array( $_SESSION['allowinstaller'] = true; if (!empty($_POST['submit'])) { - echo '

Copy or download the following configuration and save'; - echo ' as config.inc.php within the '.RCMAIL_CONFIG_DIR.' directory of your Roundcube installation.
'; + echo '

Copy or download the following configuration and save it'; + echo ' as config.inc.php within the '.RCUBE_CONFIG_DIR.' directory of your Roundcube installation.
'; echo ' Make sure that there are no characters outside the <?php ?> brackets when saving the file.'; - echo ' 

'; + echo ' '; + if ($RCI->legacy_config) { + echo '

Afterwards, please remove the old configuration files main.inc.php and db.inc.php'; + echo ' from the config directory.'; + } + echo '

'; $textbox = new html_textarea(array('rows' => 16, 'cols' => 60, 'class' => "configfile")); echo $textbox->show(($_SESSION['config'] = $RCI->create_config())); @@ -640,7 +645,7 @@ $select_param_folding->add('Full RFC 2231 (Roundcube, Thunderbird)', '0'); $select_param_folding->add('RFC 2047/2231 (MS Outlook, OE)', '1'); $select_param_folding->add('Full RFC 2047 (deprecated)', '2'); -echo $select_param_folding->show(intval($RCI->getprop('mime_param_folding'))); +echo $select_param_folding->show(strval($RCI->getprop('mime_param_folding'))); ?>
How to encode attachment long/non-ascii names
diff --git a/installer/index.php b/installer/index.php index 4e4a04326..dc4c0a43f 100644 --- a/installer/index.php +++ b/installer/index.php @@ -121,8 +121,16 @@ if ($RCI->configured && empty($_REQUEST['_step'])) { // exit if installation is complete if ($RCI->configured && !$RCI->getprop('enable_installer') && !$_SESSION['allowinstaller']) { // header("HTTP/1.0 404 Not Found"); - echo '

The installer is disabled!

'; - echo '

To enable it again, set $rcmail_config[\'enable_installer\'] = true; in RCUBE_CONFIG_DIR/config.inc.php

'; + if ($RCI->configured && $RCI->legacy_config) { + echo '

Your configuration needs to be migrated!

'; + echo '

We changed the configuration files structure and your installation needs to be updated accordingly.

'; + echo '

Please run the bin/update.sh script from the command line or set

  $rcmail_config[\'enable_installer\'] = true;

'; + echo ' in your RCUBE_CONFIG_DIR/main.inc.php to let the installer help you migrating it.

'; + } + else { + echo '

The installer is disabled!

'; + echo '

To enable it again, set $rcmail_config[\'enable_installer\'] = true; in RCUBE_CONFIG_DIR/config.inc.php

'; + } echo ''; exit; } diff --git a/installer/rcube_install.php b/installer/rcube_install.php index 5d766f4d0..06622de4d 100644 --- a/installer/rcube_install.php +++ b/installer/rcube_install.php @@ -28,10 +28,12 @@ class rcube_install var $failures = 0; var $config = array(); var $configured = false; + var $legacy_config = false; var $last_error = null; var $email_pattern = '([a-z0-9][a-z0-9\-\.\+\_]*@[a-z0-9]([a-z0-9\-][.]?)*[a-z0-9])'; var $bool_config_props = array(); + var $local_config = array('db_dsnw', 'default_host', 'support_url', 'des_key', 'plugins'); var $obsolete_config = array('db_backend', 'double_auth'); var $replaced_config = array( 'skin_path' => 'skin', @@ -157,6 +159,9 @@ class rcube_install $is_default = !isset($_POST["_$prop"]); $value = !$is_default || $this->bool_config_props[$prop] ? $_POST["_$prop"] : $default; + if ($prop == 'enable_installer') + $value = false; + // convert some form data if ($prop == 'debug_level' && !$is_default) { if (is_array($value)) { @@ -211,7 +216,7 @@ class rcube_install } // skip this property - if (!array_key_exists($prop, $this->defaults) || ($value == $this->defaults[$prop])) { + if ((!array_key_exists($prop, $this->defaults) || ($value == $this->defaults[$prop])) && !in_array($prop, $this->local_config)) { continue; } -- cgit v1.2.3