thomascube
2008-06-20 fde466c58c004e8f7eff7b59c78f62eef250cde9
program/include/rcube_config.php
@@ -40,6 +40,8 @@
  /**
   * Load config from local config file
   *
   * @todo Remove global $CONFIG
   */
  private function load()
  {
@@ -54,10 +56,19 @@
    // load database config
    include_once(INSTALL_PATH . 'config/db.inc.php');
    $this->prop += (array)$rcmail_config;
    // load host-specific configuration
    $this->load_host_config();
    // set skin (with fallback to old 'skin_path' property)
    if (empty($this->prop['skin']) && !empty($this->prop['skin_path']))
      $this->prop['skin'] = str_replace('skins/', '', unslashify($this->prop['skin_path']));
    else if (empty($this->prop['skin']))
      $this->prop['skin'] = 'default';
    // fix paths
    $this->prop['skin_path'] = $this->prop['skin_path'] ? unslashify($this->prop['skin_path']) : 'skins/default';
    $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';
    
    // handle aliases
    if (isset($this->prop['locale_string']) && empty($this->prop['language']))
@@ -77,6 +88,9 @@
    
    // clear output buffer
    ob_end_clean();
    // export config data
    $GLOBALS['CONFIG'] = &$this->prop;
  }
  
  
@@ -148,5 +162,67 @@
    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 $key;
  }
  /**
   * Try to autodetect operating system and find the correct line endings
   *
   * @return string The appropriate mail header delimiter
   */
  public function header_delimiter()
  {
    // use the configured delimiter for headers
    if (!empty($this->prop['mail_header_delimiter']))
      return $this->prop['mail_header_delimiter'];
    else if (strtolower(substr(PHP_OS, 0, 3) == 'win'))
      return "\r\n";
    else if (strtolower(substr(PHP_OS, 0, 3) == 'mac'))
      return "\r\n";
    else
      return "\n";
  }
  /**
   * Return the mail domain configured for the given host
   *
   * @param string IMAP host
   * @return string Resolved SMTP host
   */
  public function mail_domain($host)
  {
    $domain = $host;
    if (is_array($this->prop['mail_domain'])) {
      if (isset($this->prop['mail_domain'][$host]))
        $domain = $this->prop['mail_domain'][$host];
    }
    else if (!empty($this->prop['mail_domain']))
      $domain = $this->prop['mail_domain'];
    return $domain;
  }
}