CHANGELOG | ●●●●● patch | view | raw | blame | history | |
config/main.inc.php.dist | ●●●●● patch | view | raw | blame | history | |
installer/check.php | ●●●●● patch | view | raw | blame | history | |
installer/config.php | ●●●●● patch | view | raw | blame | history | |
installer/rcube_install.php | ●●●●● patch | view | raw | blame | history | |
installer/test.php | ●●●●● patch | view | raw | blame | history | |
program/include/bugs.inc | ●●●●● patch | view | raw | blame | history | |
program/include/main.inc | ●●●●● patch | view | raw | blame | history | |
program/include/rcmail.php | ●●●●● patch | view | raw | blame | history | |
program/include/rcube_config.php | ●●●●● patch | view | raw | blame | history | |
program/steps/mail/sendmail.inc | ●●●●● patch | view | raw | blame | history |
CHANGELOG
@@ -1,6 +1,11 @@ CHANGELOG RoundCube Webmail --------------------------- 2008/08/27 (alec) ---------- - Added options to use syslog instead of log file (#1484850) - Added Logging & Debugging section in Installer 2008/08/26 (alec) ---------- - Removed support for PEAR::DB driver config/main.inc.php.dist
@@ -18,6 +18,23 @@ // system error reporting: 1 = log; 2 = report (not implemented yet), 4 = show, 8 = trace $rcmail_config['debug_level'] = 1; // log driver: 'syslog' or 'file'. $rcmail_config['log_driver'] = 'file'; // Syslog ident string to use, if using the 'syslog' log driver. $rcmail_config['syslog_id'] = 'roundcube'; // Syslog facility to use, if using the 'syslog' log driver. // For possible values see installer or http://php.net/manual/en/function.openlog.php $rcmail_config['syslog_facility'] = LOG_USER; // use this folder to store log files (must be writebale for apache user) // This is used by the 'file' log driver. $rcmail_config['log_dir'] = 'logs/'; // use this folder to store temp files (must be writeable for apache user) $rcmail_config['temp_dir'] = 'temp/'; // enable caching of messages and mailbox data in the local database. // this is recommended if the IMAP server does not run on the same machine $rcmail_config['enable_caching'] = TRUE; @@ -96,12 +113,6 @@ // includes should be interpreted as PHP files $rcmail_config['skin_include_php'] = FALSE; // use this folder to store temp files (must be writeable for apache user) $rcmail_config['temp_dir'] = 'temp/'; // use this folder to store log files (must be writeable for apache user) $rcmail_config['log_dir'] = 'logs/'; // session lifetime in minutes $rcmail_config['session_lifetime'] = 10; installer/check.php
@@ -116,9 +116,6 @@ if (class_exists($classname)) { $RCI->pass($classname); } else if ($classname == 'DB' || ($classname == 'MDB2' && class_exists('DB'))) { $RCI->na($classname, 'Use ' . ($classname == 'DB' ? 'MDB2' : 'DB') . ' instead'); } else { $RCI->fail($classname, "Failed to load $file", $source_urls[$classname]); } installer/config.php
@@ -15,6 +15,7 @@ 'prefer_html' => 1, 'preview_pane' => 1, 'htmleditor' => 1, 'debug_level' => 1, ); // allow the current user to get to the next step @@ -47,25 +48,6 @@ <fieldset> <legend>General configuration</legend> <dl class="configblock"> <!-- <dt id="cgfblockgeneral" class="propname">debug_level</dt> <dd> <?php /* $value = $RCI->getprop('debug_level'); $check_debug = new html_checkbox(array('name' => '_debug_level[]')); echo $check_debug->show(($value & 1) ? 1 : 0 , array('value' => 1, 'id' => 'cfgdebug1')); echo '<label for="cfgdebug1">Log errors</label><br />'; echo $check_debug->show(($value & 4) ? 4 : 0, array('value' => 4, 'id' => 'cfgdebug4')); echo '<label for="cfgdebug4">Display errors</label><br />'; echo $check_debug->show(($value & 8) ? 8 : 0, array('value' => 8, 'id' => 'cfgdebug8')); echo '<label for="cfgdebug8">Verbose display</label><br />'; */ ?> </dd> --> <dt class="propname">product_name</dt> <dd> @@ -89,16 +71,6 @@ <div>Use this folder to store temp files (must be writebale for webserver)</div> </dd> <dt class="propname">log_dir</dt> <dd> <?php $input_logdir = new html_inputfield(array('name' => '_log_dir', 'size' => 30, 'id' => "cfglogdir")); echo $input_logdir->show($RCI->getprop('log_dir')); ?> <div>Use this folder to store log files (must be writebale for webserver)</div> </dd> <dt class="propname">ip_check</dt> <dd> @@ -152,6 +124,90 @@ </dl> </fieldset> <fieldset> <legend>Logging & Debugging</legend> <dl class="loggingblock"> <dt class="propname">debug_level</dt> <dd> <?php $value = $RCI->getprop('debug_level'); $check_debug = new html_checkbox(array('name' => '_debug_level[]')); echo $check_debug->show(($value & 1) ? 1 : 0 , array('value' => 1, 'id' => 'cfgdebug1')); echo '<label for="cfgdebug1">Log errors</label><br />'; echo $check_debug->show(($value & 4) ? 4 : 0, array('value' => 4, 'id' => 'cfgdebug4')); echo '<label for="cfgdebug4">Print errors (to the browser)</label><br />'; echo $check_debug->show(($value & 8) ? 8 : 0, array('value' => 8, 'id' => 'cfgdebug8')); echo '<label for="cfgdebug8">Verbose display (enables debug console)</label><br />'; ?> </dd> <dt class="propname">log_driver</dt> <dd> <?php $select_log_driver = new html_select(array('name' => '_log_driver', 'id' => "cfglogdriver")); $select_log_driver->add(array('file', 'syslog'), array('file', 'syslog')); echo $select_log_driver->show($RCI->getprop('log_driver', 'file')); ?> <div>How to do logging? 'file' - write to files in the log directory, 'syslog' - use the syslog facility.</div> </dd> <dt class="propname">log_dir</dt> <dd> <?php $input_logdir = new html_inputfield(array('name' => '_log_dir', 'size' => 30, 'id' => "cfglogdir")); echo $input_logdir->show($RCI->getprop('log_dir')); ?> <div>Use this folder to store log files (must be writebale for webserver). Note that this only applies if you are using the 'file' log_driver.</div> </dd> <dt class="propname">syslog_id</dt> <dd> <?php $input_syslogid = new html_inputfield(array('name' => '_syslog_id', 'size' => 30, 'id' => "cfgsyslogid")); echo $input_syslogid->show($RCI->getprop('syslog_id', 'roundcube')); ?> <div>What ID to use when logging with syslog. Note that this only applies if you are using the 'syslog' log_driver.</div> </dd> <dt class="propname">syslog_facility</dt> <dd> <?php $input_syslogfacility = new html_select(array('name' => '_syslog_facility', 'id' => "cfgsyslogfacility")); $input_syslogfacility->add('user-level messages', LOG_USER); $input_syslogfacility->add('mail subsystem', LOG_MAIL); $input_syslogfacility->add('local level 0', LOG_LOCAL0); $input_syslogfacility->add('local level 1', LOG_LOCAL1); $input_syslogfacility->add('local level 2', LOG_LOCAL2); $input_syslogfacility->add('local level 3', LOG_LOCAL3); $input_syslogfacility->add('local level 4', LOG_LOCAL4); $input_syslogfacility->add('local level 5', LOG_LOCAL5); $input_syslogfacility->add('local level 6', LOG_LOCAL6); $input_syslogfacility->add('local level 7', LOG_LOCAL7); echo $input_syslogfacility->show($RCI->getprop('syslog_facility'), LOG_USER); ?> <div>What ID to use when logging with syslog. Note that this only applies if you are using the 'syslog' log_driver.</div> </dd> </dl> </fieldset> <fieldset> <legend>Database setup</legend> @@ -378,7 +434,7 @@ echo $check_smtplog->show(intval($RCI->getprop('smtp_log')), array('value' => 1)); ?> <label for="cfgsmtplog">Log sent messages in <tt>logs/sendmail</tt></label><br /> <label for="cfgsmtplog">Log sent messages in <tt>{log_dir}/sendmail</tt> or to syslog.</label><br /> </dd> </dl> installer/rcube_install.php
@@ -100,7 +100,7 @@ */ function getprop($name, $default = '') { $value = $this->is_post && (isset($_POST["_$name"]) || $this->config_props[$name]) ? $_POST["_$name"] : $this->config[$name]; $value = $this->config[$name]; if ($name == 'des_key' && !$this->configured && !isset($_REQUEST["_$name"])) $value = rcube_install::random_key(24); @@ -127,9 +127,10 @@ $value = (isset($_POST["_$prop"]) || $this->config_props[$prop]) ? $_POST["_$prop"] : $default; // convert some form data if ($prop == 'debug_level' && is_array($value)) { if ($prop == 'debug_level') { $val = 0; foreach ($value as $i => $dbgval) if (isset($value)) foreach ($value as $dbgval) $val += intval($dbgval); $value = $val; } @@ -169,6 +170,9 @@ if ($value == $default) continue; // save change $this->config[$prop] = $value; // replace the matching line in config file $out = preg_replace( '/(\$rcmail_config\[\''.preg_quote($prop).'\'\])\s+=\s+(.+);/Uie', installer/test.php
@@ -35,7 +35,12 @@ if ($RCI->configured) { $pass = false; foreach (array($RCI->config['temp_dir'],$RCI->config['log_dir']) as $dir) { $dirs[] = $RCI->config['temp_dir']; if($RCI->config['log_driver'] != 'syslog') $dirs[] = $RCI->config['log_dir']; foreach ($dirs as $dir) { $dirpath = $dir{0} == '/' ? $dir : INSTALL_PATH . $dir; if (is_writable(realpath($dirpath))) { $RCI->pass($dir); program/include/bugs.inc
@@ -84,8 +84,13 @@ $CONFIG['log_dir'] = INSTALL_PATH.'logs'; // try to open specific log file for writing if ($fp = @fopen($CONFIG['log_dir'].'/errors', 'a')) if ($CONFIG['log_driver'] == 'syslog') { syslog(LOG_ERR, $log_entry); } else if ($fp = @fopen($CONFIG['log_dir'].'/errors', 'a')) { // log_driver == 'file' is the default, assumed here. fwrite($fp, $log_entry); fclose($fp); } program/include/main.inc
@@ -828,16 +828,24 @@ date("d-M-Y H:i:s O", mktime()), $line); if ($CONFIG['log_driver'] == 'syslog') { if ($name == 'errors') $prio = LOG_ERR; else $prio = LOG_INFO; syslog($prio, $log_entry); } else { // log_driver == 'file' is assumed here if (empty($CONFIG['log_dir'])) $CONFIG['log_dir'] = INSTALL_PATH.'logs'; // try to open specific log file for writing if ($fp = @fopen($CONFIG['log_dir'].'/'.$name, 'a')) { if ($fp = @fopen($CONFIG['log_dir'].'/'.$name, 'a')) { fwrite($fp, $log_entry); fclose($fp); } } } /** program/include/rcmail.php
@@ -82,6 +82,13 @@ { $config_all = $this->config->all(); // initialize syslog if ($this->config->get('log_driver') == 'syslog') { $syslog_id = $this->config->get('syslog_id', 'roundcube'); $syslog_facility = $this->config->get('syslog_facility', LOG_USER); openlog($syslog_id, LOG_ODELAY, $syslog_facility); } // set task and action properties $this->set_task(strip_quotes(get_input_value('_task', RCUBE_INPUT_GPC))); $this->action = asciiwords(get_input_value('_action', RCUBE_INPUT_GPC)); @@ -110,7 +117,6 @@ $_SESSION['auth_time'] = time(); $_SESSION['temp'] = true; } // create user object $this->set_user(new rcube_user($_SESSION['user_id'])); program/include/rcube_config.php
@@ -82,8 +82,13 @@ // set PHP error logging according to config if ($this->prop['debug_level'] & 1) { ini_set('log_errors', 1); if ($this->prop['log_driver'] == 'syslog') { ini_set('error_log', 'syslog'); } else { ini_set('error_log', $this->prop['log_dir'] . '/errors'); } } if ($this->prop['debug_level'] & 4) { ini_set('display_errors', 1); } program/steps/mail/sendmail.inc
@@ -420,19 +420,13 @@ { if ($CONFIG['smtp_log']) { $log_entry = sprintf( write_log('sendmail', sprintf( "[%s] User: %d on %s; Message for %s; %s\n", date("d-M-Y H:i:s O", mktime()), $_SESSION['user_id'], $_SERVER['REMOTE_ADDR'], $mailto, !empty($smtp_response) ? join('; ', $smtp_response) : ''); if ($fp = @fopen($CONFIG['log_dir'].'/sendmail', 'a')) { fwrite($fp, $log_entry); fclose($fp); } !empty($smtp_response) ? join('; ', $smtp_response) : '')); } rcmail_compose_cleanup();