program/include/rcmail.php | ●●●●● patch | view | raw | blame | history | |
program/include/rcube.php | ●●●●● patch | view | raw | blame | history |
program/include/rcmail.php
@@ -350,38 +350,7 @@ */ public function session_init() { // session started (Installer?) if (session_id()) return; $sess_name = $this->config->get('session_name'); $sess_domain = $this->config->get('session_domain'); $lifetime = $this->config->get('session_lifetime', 0) * 60; // set session domain if ($sess_domain) { ini_set('session.cookie_domain', $sess_domain); } // set session garbage collecting time according to session_lifetime if ($lifetime) { ini_set('session.gc_maxlifetime', $lifetime * 2); } ini_set('session.cookie_secure', rcube_utils::https_check()); ini_set('session.name', $sess_name ? $sess_name : 'roundcube_sessid'); ini_set('session.use_cookies', 1); ini_set('session.use_only_cookies', 1); ini_set('session.serialize_handler', 'php'); // use database for storing session data $this->session = new rcube_session($this->get_dbh(), $this->config); $this->session->register_gc_handler(array($this, 'temp_gc')); $this->session->register_gc_handler(array($this, 'cache_gc')); // start PHP session (if not in CLI mode) if ($_SERVER['REMOTE_ADDR']) session_start(); parent::session_init(); // set initial session vars if (!$_SESSION['user_id']) @@ -390,30 +359,6 @@ // restore skin selection after logout if ($_SESSION['temp'] && !empty($_SESSION['skin'])) $this->config->set('skin', $_SESSION['skin']); } /** * Configure session object internals */ public function session_configure() { if (!$this->session) return; $lifetime = $this->config->get('session_lifetime', 0) * 60; // set keep-alive/check-recent interval if ($keep_alive = $this->config->get('keep_alive')) { // be sure that it's less than session lifetime if ($lifetime) $keep_alive = min($keep_alive, $lifetime - 30); $keep_alive = max(60, $keep_alive); $this->session->set_keep_alive($keep_alive); } $this->session->set_secret($this->config->get('des_key') . $_SERVER['HTTP_USER_AGENT']); $this->session->set_ip_check($this->config->get('ip_check')); } @@ -674,18 +619,6 @@ if (!empty($_SESSION['preferences'])) { $this->user->save_prefs(unserialize($_SESSION['preferences'])); } } /** * Garbage collector for cache entries. * Set flag to expunge caches on shutdown */ function cache_gc() { // because this gc function is called before storage is initialized, // we just set a flag to expunge storage cache on shutdown. $this->expunge_cache = true; } @@ -1155,31 +1088,6 @@ self::write_log('userlogins', sprintf('Successful login for %s (ID: %d) from %s in session %s', $user_name, $user_id, rcube_utils::remote_ip(), session_id())); } /** * Garbage collector function for temp files. * Remove temp files older than two days */ public function temp_gc() { $tmp = unslashify($this->config->get('temp_dir')); $expire = mktime() - 172800; // expire in 48 hours if ($tmp && ($dir = opendir($tmp))) { while (($fname = readdir($dir)) !== false) { if ($fname{0} == '.') { continue; } if (filemtime($tmp.'/'.$fname) < $expire) { @unlink($tmp.'/'.$fname); } } closedir($dir); } } program/include/rcube.php
@@ -410,6 +410,112 @@ } /** * Create session object and start the session. */ public function session_init() { // session started (Installer?) if (session_id()) { return; } $sess_name = $this->config->get('session_name'); $sess_domain = $this->config->get('session_domain'); $lifetime = $this->config->get('session_lifetime', 0) * 60; // set session domain if ($sess_domain) { ini_set('session.cookie_domain', $sess_domain); } // set session garbage collecting time according to session_lifetime if ($lifetime) { ini_set('session.gc_maxlifetime', $lifetime * 2); } ini_set('session.cookie_secure', rcube_utils::https_check()); ini_set('session.name', $sess_name ? $sess_name : 'roundcube_sessid'); ini_set('session.use_cookies', 1); ini_set('session.use_only_cookies', 1); ini_set('session.serialize_handler', 'php'); // use database for storing session data $this->session = new rcube_session($this->get_dbh(), $this->config); $this->session->register_gc_handler(array($this, 'temp_gc')); $this->session->register_gc_handler(array($this, 'cache_gc')); // start PHP session (if not in CLI mode) if ($_SERVER['REMOTE_ADDR']) { session_start(); } } /** * Configure session object internals */ public function session_configure() { if (!$this->session) { return; } $lifetime = $this->config->get('session_lifetime', 0) * 60; $keep_alive = $this->config->get('keep_alive'); // set keep-alive/check-recent interval if ($keep_alive) { // be sure that it's less than session lifetime if ($lifetime) { $keep_alive = min($keep_alive, $lifetime - 30); } $keep_alive = max(60, $keep_alive); $this->session->set_keep_alive($keep_alive); } $this->session->set_secret($this->config->get('des_key') . $_SERVER['HTTP_USER_AGENT']); $this->session->set_ip_check($this->config->get('ip_check')); } /** * Garbage collector function for temp files. * Remove temp files older than two days */ public function temp_gc() { $tmp = unslashify($this->config->get('temp_dir')); $expire = mktime() - 172800; // expire in 48 hours if ($tmp && ($dir = opendir($tmp))) { while (($fname = readdir($dir)) !== false) { if ($fname{0} == '.') { continue; } if (filemtime($tmp.'/'.$fname) < $expire) { @unlink($tmp.'/'.$fname); } } closedir($dir); } } /** * Garbage collector for cache entries. * Set flag to expunge caches on shutdown */ public function cache_gc() { // because this gc function is called before storage is initialized, // we just set a flag to expunge storage cache on shutdown. $this->expunge_cache = true; } /** * Get localized text in the desired language * @@ -1102,4 +1208,3 @@ return $args; } }