| | |
| | | $this->action = asciiwords(get_input_value('_action', RCUBE_INPUT_GPC)); |
| | | |
| | | // reset some session parameters when changing task |
| | | if ($_SESSION['task'] != $this->task) |
| | | if ($this->session && $_SESSION['task'] != $this->task) |
| | | $this->session->remove('page'); |
| | | |
| | | // set current task to session |
| | |
| | | public function get_address_sources($writeable = false) |
| | | { |
| | | $abook_type = strtolower($this->config->get('address_book_type')); |
| | | $ldap_config = (array)$this->config->get('ldap_public'); |
| | | $autocomplete = (array)$this->config->get('autocomplete_addressbooks'); |
| | | $ldap_config = $this->config->get('ldap_public'); |
| | | $autocomplete = (array) $this->config->get('autocomplete_addressbooks'); |
| | | $list = array(); |
| | | |
| | | // We are using the DB address book |
| | | if ($abook_type != 'ldap') { |
| | | $contacts = new rcube_contacts($this->db, null); |
| | | $list['0'] = array( |
| | | 'id' => 0, |
| | | 'name' => rcube_label('personaladrbook'), |
| | | 'groups' => true, |
| | | 'groups' => $contacts->groups, |
| | | 'readonly' => false, |
| | | 'autocomplete' => in_array('sql', $autocomplete) |
| | | ); |
| | | } |
| | | |
| | | if (is_array($ldap_config)) { |
| | | if ($ldap_config) { |
| | | $ldap_config = (array) $ldap_config; |
| | | foreach ($ldap_config as $id => $prop) |
| | | $list[$id] = array( |
| | | 'id' => $id, |
| | |
| | | if ($writeable && !empty($list)) { |
| | | foreach ($list as $idx => $item) { |
| | | if ($item['readonly']) { |
| | | unset($list[$idx]); |
| | | unset($list[$idx]); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | return $list; |
| | | } |
| | | |
| | |
| | | $this->output = new rcube_template($this->task, $framed); |
| | | |
| | | // set keep-alive/check-recent interval |
| | | if ($keep_alive = $this->session->get_keep_alive()) { |
| | | if ($this->session && ($keep_alive = $this->session->get_keep_alive())) { |
| | | $this->output->set_env('keep_alive', $keep_alive); |
| | | } |
| | | |
| | |
| | | // set pagesize from config |
| | | $this->imap->set_pagesize($this->config->get('pagesize', 50)); |
| | | |
| | | // Setting root and delimiter before iil_Connect can save time detecting them |
| | | // using NAMESPACE and LIST |
| | | // Setting root and delimiter before establishing the connection |
| | | // can save time detecting them using NAMESPACE and LIST |
| | | $options = array( |
| | | 'auth_method' => $this->config->get('imap_auth_type', 'check'), |
| | | 'delimiter' => isset($_SESSION['imap_delimiter']) ? $_SESSION['imap_delimiter'] : $this->config->get('imap_delimiter'), |
| | |
| | | */ |
| | | public function imap_connect() |
| | | { |
| | | $conn = false; |
| | | |
| | | if (!$this->imap) |
| | | $this->imap_init(); |
| | | |
| | | if ($_SESSION['imap_host'] && !$this->imap->conn) { |
| | | if (!($conn = $this->imap->connect($_SESSION['imap_host'], $_SESSION['username'], $this->decrypt($_SESSION['password']), $_SESSION['imap_port'], $_SESSION['imap_ssl']))) { |
| | | if ($_SESSION['imap_host'] && !$this->imap->conn->connected()) { |
| | | if (!$this->imap->connect($_SESSION['imap_host'], $_SESSION['username'], $this->decrypt($_SESSION['password']), $_SESSION['imap_port'], $_SESSION['imap_ssl'])) { |
| | | if ($this->output) |
| | | $this->output->show_message($this->imap->error_code == -1 ? 'imaperror' : 'sessionerror', 'error'); |
| | | } |
| | | |
| | | $this->set_imap_prop(); |
| | | else { |
| | | $this->set_imap_prop(); |
| | | return $this->imap->conn; |
| | | } |
| | | } |
| | | |
| | | return $conn; |
| | | return false; |
| | | } |
| | | |
| | | |
| | |
| | | */ |
| | | public function session_init() |
| | | { |
| | | // session started (Installer?) |
| | | if (session_id()) |
| | | return; |
| | | |
| | | $lifetime = $this->config->get('session_lifetime', 0) * 60; |
| | | |
| | | // set session domain |
| | |
| | | */ |
| | | public function session_configure() |
| | | { |
| | | if (!$this->session) |
| | | return; |
| | | |
| | | $lifetime = $this->config->get('session_lifetime', 0) * 60; |
| | | |
| | | // set keep-alive/check-recent interval |
| | |
| | | else { |
| | | raise_error(array( |
| | | 'code' => 600, 'type' => 'php', |
| | | 'file' => __FILE__, 'line' => __LINE__, |
| | | 'file' => __FILE__, 'line' => __LINE__, |
| | | 'message' => "Failed to create a user record. Maybe aborted by a plugin?" |
| | | ), true, false); |
| | | } |
| | |
| | | */ |
| | | public function shutdown() |
| | | { |
| | | if (is_object($this->imap)) { |
| | | if (is_object($this->imap)) |
| | | $this->imap->close(); |
| | | $this->imap->write_cache(); |
| | | } |
| | | |
| | | if (is_object($this->smtp)) |
| | | $this->smtp->disconnect(); |
| | |
| | | $mem .= '/'.show_bytes(memory_get_peak_usage()); |
| | | |
| | | $log = $this->task . ($this->action ? '/'.$this->action : '') . ($mem ? " [$mem]" : ''); |
| | | rcube_print_time(RCMAIL_START, $log); |
| | | if (defined('RCMAIL_START')) |
| | | rcube_print_time(RCMAIL_START, $log); |
| | | else |
| | | console($log); |
| | | } |
| | | } |
| | | |
| | |
| | | mcrypt_generic_deinit($td); |
| | | mcrypt_module_close($td); |
| | | } |
| | | else if (function_exists('des')) |
| | | { |
| | | define('DES_IV_SIZE', 8); |
| | | $iv = ''; |
| | | for ($i = 0; $i < constant('DES_IV_SIZE'); $i++) |
| | | $iv .= sprintf("%c", mt_rand(0, 255)); |
| | | $cipher = $iv . des($this->config->get_crypto_key($key), $clear, 1, 1, $iv); |
| | | else { |
| | | @include_once('lib/des.inc'); |
| | | |
| | | if (function_exists('des')) { |
| | | $des_iv_size = 8; |
| | | $iv = ''; |
| | | for ($i = 0; $i < $des_iv_size; $i++) |
| | | $iv .= sprintf("%c", mt_rand(0, 255)); |
| | | $cipher = $iv . des($this->config->get_crypto_key($key), $clear, 1, 1, $iv); |
| | | } |
| | | else { |
| | | raise_error(array( |
| | | 'code' => 500, 'type' => 'php', |
| | | 'file' => __FILE__, 'line' => __LINE__, |
| | | 'message' => "Could not perform encryption; make sure Mcrypt is installed or lib/des.inc is available" |
| | | ), true, true); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | raise_error(array( |
| | | 'code' => 500, 'type' => 'php', |
| | | 'file' => __FILE__, 'line' => __LINE__, |
| | | 'message' => "Could not perform encryption; make sure Mcrypt is installed or lib/des.inc is available" |
| | | ), true, true); |
| | | } |
| | | |
| | | |
| | | return $base64 ? base64_encode($cipher) : $cipher; |
| | | } |
| | | |
| | |
| | | mcrypt_generic_deinit($td); |
| | | mcrypt_module_close($td); |
| | | } |
| | | else if (function_exists('des')) |
| | | { |
| | | define('DES_IV_SIZE', 8); |
| | | $iv = substr($cipher, 0, constant('DES_IV_SIZE')); |
| | | $cipher = substr($cipher, constant('DES_IV_SIZE')); |
| | | $clear = des($this->config->get_crypto_key($key), $cipher, 0, 1, $iv); |
| | | else { |
| | | @include_once('lib/des.inc'); |
| | | |
| | | if (function_exists('des')) { |
| | | $des_iv_size = 8; |
| | | $iv = substr($cipher, 0, $des_iv_size); |
| | | $cipher = substr($cipher, $des_iv_size); |
| | | $clear = des($this->config->get_crypto_key($key), $cipher, 0, 1, $iv); |
| | | } |
| | | else { |
| | | raise_error(array( |
| | | 'code' => 500, 'type' => 'php', |
| | | 'file' => __FILE__, 'line' => __LINE__, |
| | | 'message' => "Could not perform decryption; make sure Mcrypt is installed or lib/des.inc is available" |
| | | ), true, true); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | raise_error(array( |
| | | 'code' => 500, 'type' => 'php', |
| | | 'file' => __FILE__, 'line' => __LINE__, |
| | | 'message' => "Could not perform decryption; make sure Mcrypt is installed or lib/des.inc is available" |
| | | ), true, true); |
| | | } |
| | | |
| | | |
| | | /*- |
| | | * Trim PHP's padding and the canary byte; see note in |
| | | * rcmail::encrypt() and http://php.net/mcrypt_generic#68082 |