| | |
| | | |
| | | // check client |
| | | $BROWSER = rcube_browser(); |
| | | |
| | | |
| | | // load config file |
| | | include_once('config/main.inc.php'); |
| | | $CONFIG = is_array($rcmail_config) ? $rcmail_config : array(); |
| | |
| | | ini_set('display_errors', 1); |
| | | else |
| | | ini_set('display_errors', 0); |
| | | |
| | | // set session garbage collecting time according to session_lifetime |
| | | if (!empty($CONFIG['session_lifetime'])) |
| | | ini_set('session.gc_maxlifetime', ($CONFIG['session_lifetime']+2)*60); |
| | | |
| | | |
| | | // prepare DB connection |
| | | require_once('include/rcube_'.(empty($CONFIG['db_backend']) ? 'db' : $CONFIG['db_backend']).'.inc'); |
| | | |
| | | $DB = new rcube_db($CONFIG['db_dsnw'], $CONFIG['db_dsnr']); |
| | | $DB->sqlite_initials = $INSTALL_PATH.'SQL/sqlite.initial.sql'; |
| | | |
| | |
| | | if (!$_SESSION['client_id']) |
| | | { |
| | | $_SESSION['client_id'] = $sess_id; |
| | | $_SESSION['user_lang'] = 'en'; |
| | | $_SESSION['user_lang'] = substr($CONFIG['locale_string'], 0, 2); |
| | | $_SESSION['auth_time'] = mktime(); |
| | | $_SESSION['auth'] = rcmail_auth_hash($sess_id, $_SESSION['auth_time']); |
| | | unset($GLOBALS['_auth']); |
| | |
| | | |
| | | $IMAP = new rcube_imap(); |
| | | |
| | | // connect with stored session data |
| | | if ($connect) |
| | | { |
| | | if (!($conn = $IMAP->connect($_SESSION['imap_host'], $_SESSION['username'], decrypt_passwd($_SESSION['password']), $_SESSION['imap_port'], $_SESSION['imap_ssl']))) |
| | | show_message('imaperror', 'error'); |
| | | |
| | | rcmail_set_imap_prop(); |
| | | } |
| | | |
| | | // enable caching of imap data |
| | | if ($CONFIG['enable_caching']===TRUE) |
| | | $IMAP->set_caching(TRUE); |
| | | |
| | | // set root dir from config |
| | | if (strlen($CONFIG['imap_root'])) |
| | | $IMAP->set_rootdir($CONFIG['imap_root']); |
| | | |
| | | if (is_array($CONFIG['default_imap_folders'])) |
| | | $IMAP->set_default_mailboxes($CONFIG['default_imap_folders']); |
| | | |
| | | if (strlen($_SESSION['mbox'])) |
| | | $IMAP->set_mailbox($_SESSION['mbox']); |
| | | |
| | | if (isset($_SESSION['page'])) |
| | | $IMAP->set_page($_SESSION['page']); |
| | | |
| | | // set pagesize from config |
| | | if (isset($CONFIG['pagesize'])) |
| | | $IMAP->set_pagesize($CONFIG['pagesize']); |
| | | } |
| | | |
| | | |
| | | // connect with stored session data |
| | | if ($connect) |
| | | { |
| | | if (!($conn = $IMAP->connect($_SESSION['imap_host'], $_SESSION['username'], decrypt_passwd($_SESSION['password'])))) |
| | | show_message('imaperror', 'error'); |
| | | } |
| | | // set root dir and last stored mailbox |
| | | // this must be done AFTER connecting to the server |
| | | function rcmail_set_imap_prop() |
| | | { |
| | | global $CONFIG, $IMAP; |
| | | |
| | | // set root dir from config |
| | | if (strlen($CONFIG['imap_root'])) |
| | | $IMAP->set_rootdir($CONFIG['imap_root']); |
| | | |
| | | if (strlen($_SESSION['mbox'])) |
| | | $IMAP->set_mailbox($_SESSION['mbox']); |
| | | |
| | | if (isset($_SESSION['page'])) |
| | | $IMAP->set_page($_SESSION['page']); |
| | | } |
| | | |
| | | |
| | |
| | | if (!$host) |
| | | $host = $CONFIG['default_host']; |
| | | |
| | | // query if user already registered |
| | | $sql_result = $DB->query(sprintf("SELECT user_id, username, language, preferences |
| | | FROM %s |
| | | WHERE mail_host='%s' AND (username='%s' OR alias='%s')", |
| | | get_table_name('users'), |
| | | addslashes($host), |
| | | addslashes($user), |
| | | addslashes($user))); |
| | | |
| | | // user already registered -> overwrite username |
| | | if ($sql_arr = $DB->fetch_assoc($sql_result)) |
| | | { |
| | | $user_id = $sql_arr['user_id']; |
| | | $user = $sql_arr['username']; |
| | | } |
| | | |
| | | // parse $host URL |
| | | $a_host = parse_url($host); |
| | | if ($a_host['host']) |
| | | { |
| | | $host = $a_host['host']; |
| | | $imap_ssl = (isset($a_host['scheme']) && in_array($a_host['scheme'], array('ssl','imaps','tls'))) ? TRUE : FALSE; |
| | | $imap_port = isset($a_host['post']) ? $a_host['post'] : ($imap_ssl ? 993 : $CONFIG['default_port']); |
| | | $imap_port = isset($a_host['port']) ? $a_host['port'] : ($imap_ssl ? 993 : $CONFIG['default_port']); |
| | | } |
| | | |
| | | // query if user already registered |
| | | $sql_result = $DB->query("SELECT user_id, username, language, preferences |
| | | FROM ".get_table_name('users')." |
| | | WHERE mail_host=? AND (username=? OR alias=?)", |
| | | $host, |
| | | $user, |
| | | $user); |
| | | |
| | | // user already registered -> overwrite username |
| | | if ($sql_arr = $DB->fetch_assoc($sql_result)) |
| | | { |
| | | $user_id = $sql_arr['user_id']; |
| | | $user = $sql_arr['username']; |
| | | } |
| | | |
| | | // exit if IMAP login failed |
| | |
| | | array_merge($CONFIG, $user_prefs); |
| | | } |
| | | |
| | | |
| | | // set user specific language |
| | | if (strlen($sql_arr['language'])) |
| | | $sess_user_lang = $_SESSION['user_lang'] = $sql_arr['language']; |
| | | |
| | | |
| | | // update user's record |
| | | $DB->query(sprintf("UPDATE %s |
| | | SET last_login=NOW() |
| | | WHERE user_id=%d", |
| | | get_table_name('users'), |
| | | $user_id)); |
| | | $DB->query("UPDATE ".get_table_name('users')." |
| | | SET last_login=NOW() |
| | | WHERE user_id=?", |
| | | $user_id); |
| | | } |
| | | // create new system user |
| | | else if ($CONFIG['auto_create_user']) |
| | |
| | | { |
| | | $_SESSION['user_id'] = $user_id; |
| | | $_SESSION['imap_host'] = $host; |
| | | $_SESSION['imap_port'] = $imap_port; |
| | | $_SESSION['imap_ssl'] = $imap_ssl; |
| | | $_SESSION['username'] = $user; |
| | | $_SESSION['user_lang'] = $sess_user_lang; |
| | | $_SESSION['password'] = encrypt_passwd($pass); |
| | | |
| | | // force reloading complete list of subscribed mailboxes |
| | |
| | | function rcmail_create_user($user, $host) |
| | | { |
| | | global $DB, $CONFIG, $IMAP; |
| | | |
| | | $DB->query("INSERT INTO ".get_table_name('users')." |
| | | (created, last_login, username, mail_host, language) |
| | | VALUES (NOW(), NOW(), ?, ?, ?)", |
| | | $user, |
| | | $host, |
| | | $_SESSION['user_lang']); |
| | | |
| | | $DB->query(sprintf("INSERT INTO %s |
| | | (created, last_login, username, mail_host) |
| | | VALUES (NOW(), NOW(), '%s', '%s')", |
| | | get_table_name('users'), |
| | | addslashes($user), |
| | | addslashes($host))); |
| | | |
| | | if ($user_id = $DB->insert_id()) |
| | | if ($user_id = $DB->insert_id('user_ids')) |
| | | { |
| | | $user_email = strstr($user, '@') ? $user : sprintf('%s@%s', $user, $host); |
| | | $user_name = $user!=$user_email ? $user : ''; |
| | | |
| | | // also create a new identity record |
| | | $DB->query(sprintf("INSERT INTO %s |
| | | (user_id, `default`, name, email) |
| | | VALUES (%d, '1', '%s', '%s')", |
| | | get_table_name('identities'), |
| | | $user_id, |
| | | addslashes($user_name), |
| | | addslashes($user_email))); |
| | | $DB->query("INSERT INTO ".get_table_name('identities')." |
| | | (user_id, `default`, name, email) |
| | | VALUES (?, '1', ?, ?)", |
| | | $user_id, |
| | | $user_name, |
| | | $user_email); |
| | | |
| | | // get existing mailboxes |
| | | $a_mailboxes = $IMAP->list_mailboxes(); |
| | |
| | | // show a label |
| | | case 'label': |
| | | if ($attrib['name'] || $attrib['command']) |
| | | return rcube_label($attrib); |
| | | return rep_specialchars_output(rcube_label($attrib)); |
| | | break; |
| | | |
| | | // create a menu item |
| | |
| | | else if (isset($GLOBALS['PAGE_TITLE'])) |
| | | return rep_specialchars_output("RoundCube|Mail :: ".$GLOBALS['PAGE_TITLE']); |
| | | else if ($task=='mail' && ($mbox_name = $IMAP->get_mailbox_name())) |
| | | return "RoundCube|Mail :: $mbox_name"; |
| | | return "RoundCube|Mail :: ".rep_specialchars_output(UTF7DecodeString($mbox_name), 'html', 'all'); |
| | | else |
| | | return "RoundCube|Mail :: $task"; |
| | | } |
| | |
| | | $table .= "<thead><tr>\n"; |
| | | |
| | | foreach ($a_show_cols as $col) |
| | | $table .= '<td class="'.$col.'">' . rcube_label($col) . "</td>\n"; |
| | | $table .= '<td class="'.$col.'">' . rep_specialchars_output(rcube_label($col)) . "</td>\n"; |
| | | |
| | | $table .= "</tr></thead>\n<tbody>\n"; |
| | | |