thomascube
2009-05-21 e7008cd4c632ceca938d0ccc2a82ec02d6220884
program/include/rcube_config.php
@@ -5,7 +5,7 @@
 | program/include/rcube_config.php                                      |
 |                                                                       |
 | This file is part of the RoundCube Webmail client                     |
 | Copyright (C) 2008, RoundCube Dev. - Switzerland                      |
 | Copyright (C) 2008-2009, RoundCube Dev. - Switzerland                 |
 | Licensed under the GNU GPL                                            |
 |                                                                       |
 | PURPOSE:                                                              |
@@ -74,13 +74,15 @@
    // fix paths
    $this->prop['log_dir'] = $this->prop['log_dir'] ? unslashify($this->prop['log_dir']) : INSTALL_PATH . 'logs';
    $this->prop['temp_dir'] = $this->prop['temp_dir'] ? unslashify($this->prop['temp_dir']) : INSTALL_PATH . 'temp';
    $this->prop['plugins_dir'] = $this->prop['plugins_dir'] ? unslashify($this->prop['plugins_dir']) : INSTALL_PATH . 'plugins';
    // fix default imap folders encode
    foreach (Array('draft_mbox', 'junk_mbox', 'sent_mbox', 'trash_mbox') as $folder)
      $this->prop[$folder] = rcube_charset_convert($this->prop[$folder], RCMAIL_CHARSET, 'UTF-7');
    // fix default imap folders encoding
    foreach (array('drafts_mbox', 'junk_mbox', 'sent_mbox', 'trash_mbox') as $folder)
      $this->prop[$folder] = rcube_charset_convert($this->prop[$folder], RCMAIL_CHARSET, 'UTF7-IMAP');
    foreach ($this->prop['default_imap_folders'] as $n => $folder)
      $this->prop['default_imap_folders'][$n] = rcube_charset_convert($folder, RCMAIL_CHARSET, 'UTF-7');
    if (!empty($this->prop['default_imap_folders']))
      foreach ($this->prop['default_imap_folders'] as $n => $folder)
        $this->prop['default_imap_folders'][$n] = rcube_charset_convert($folder, RCMAIL_CHARSET, 'UTF7-IMAP');
    // set PHP error logging according to config
    if ($this->prop['debug_level'] & 1) {
@@ -174,28 +176,42 @@
  {
    return $this->prop;
  }
  /**
   * Return a 24 byte key for the DES encryption
   *
   * @return string DES encryption key
   */
  public function get_des_key()
  {
    $key = !empty($this->prop['des_key']) ? $this->prop['des_key'] : 'rcmail?24BitPwDkeyF**ECB';
    $len = strlen($key);
    // make sure the key is exactly 24 chars long
    if ($len<24)
      $key .= str_repeat('_', 24-$len);
    else if ($len>24)
      substr($key, 0, 24);
  /**
   * Return requested DES crypto key.
   *
   * @param string Crypto key name
   * @return string Crypto key
   */
  public function get_crypto_key($key)
  {
    // Bomb out if the requested key does not exist
    if (!array_key_exists($key, $this->prop))
    {
      raise_error(array(
        'code' => 500,
        'type' => 'php',
        'file' => __FILE__,
        'message' => "Request for unconfigured crypto key \"$key\""
      ), true, true);
    }
    $key = $this->prop[$key];
    // Bomb out if the configured key is not exactly 24 bytes long
    if (strlen($key) != 24)
    {
      raise_error(array(
        'code' => 500,
        'type' => 'php',
        'file' => __FILE__,
        'message' => "Configured crypto key \"$key\" is not exactly 24 bytes long"
      ), true, true);
    }
    return $key;
  }
  /**
   * Try to autodetect operating system and find the correct line endings
   *