auth->check_module_permissions('admin'); //* This is only allowed for administrators if(!$app->auth->is_admin()) die('only allowed for administrators.'); $app->uses('tpl'); $app->tpl->newTemplate('form.tpl.htm'); $app->tpl->setInclude('content_tpl', 'templates/mailbox_import.htm'); $msg = ''; $error = ''; if(isset($_FILES['file']['name']) && is_uploaded_file($_FILES['file']['tmp_name'])) { $lines = file($_FILES['file']['tmp_name']); unset($lines[0]); $email_list = array(); $sys_groupid = intval($_POST['groupid']); //$server_id = 1; $sys_user = $app->db->queryOneRecord("SELECT * FROM sys_user WHERE default_group = $sys_groupid"); $sys_userid = $sys_user['userid']; // get the default mailserver of the client $tmp = $app->db->queryOneRecord('SELECT default_mailserver FROM sys_group,client WHERE sys_group.client_id = client.client_id and sys_group.groupid = '.$sys_groupid); $server_id = intval($tmp['default_mailserver']); unset($tmp); if($server_id == 0) die('Invalid server ID'); foreach($lines as $line) { $parts = explode(';',$line); // login name; full name; mail address;password;mailbox quota $login_name = $app->db->quote(trim($parts[0])); $name = $app->db->quote(trim($parts[1])); $email = strtolower(trim($parts[2])); $password = $app->db->quote(trim($parts[3])); $quota = intval($parts[4]); $email_parts = $parts = explode('@',$email); $user = $app->db->quote($email_parts[0]); $domain = $app->db->quote($email_parts[1]); // Check if email domain exists $domain_rec = $app->db->queryOneRecord("SELECT * FROM mail_domain WHERE domain = '$domain'"); if($_POST['test'] != 1 && !is_array($domain_rec)) { $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `domain`, `active`) VALUES($sys_userid, $sys_groupid, 'riud', 'riud', '', $server_id, '$domain', 'y')"; $app->db->datalogInsert('mail_domain', $insert_data, 'domain_id'); } // encrypt the password $salt="$1$"; $base64_alphabet='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; for ($n=0;$n<8;$n++) { //$salt.=chr(mt_rand(64,126)); $salt.=$base64_alphabet[mt_rand(0,63)]; } $salt.="$"; $password_enc = crypt($password,$salt); $rec = $app->db->queryOneRecord("SELECT count(mailuser_id) as number FROM mail_user WHERE email = '".$user.'@'.$domain."'"); if($rec['number'] > 0) { $status = 'Duplicate'; } else { $status = 'OK'; if($_POST['test'] == 1) $status = 'Test: OK'; } $tmp = array(); $tmp['name'] = $name; $tmp['email'] = $user.'@'.$domain; $tmp['quota'] = $quota; $tmp['password'] = $password; $tmp['status'] = $status; $email_list[] = $tmp; if($_POST['test'] != 1 && $status = 'OK') { $app->uses('getconf'); $mail_config = $app->getconf->get_server_config($server_id,'mail'); $maildir = str_replace("[domain]",$domain,$mail_config["maildir_path"]); $maildir = str_replace("[localpart]",strtolower($user),$maildir); $homedir = $mail_config["homedir_path"]; $uid = $mail_config["mailuser_uid"]; $gid = $mail_config["mailuser_gid"]; $quota_bytes = $quota*1024*1024; $insert_data = "(sys_userid,sys_groupid,sys_perm_user,sys_perm_group,sys_perm_other,server_id, email,`password`,name,uid,gid,maildir,quota,homedir,postfix,access) VALUES ('$sys_userid','$sys_groupid','riud','riud','','$server_id','".$user.'@'.$domain."','$password_enc', '$name','$uid','$gid','$maildir','$quota_bytes','$homedir','y','n')"; //die('INSERT INTO mail_user '.$insert_data); $app->db->datalogInsert('mail_user', $insert_data, 'mailuser_id'); } } $app->tpl->setLoop('email_list',$email_list); $app->tpl->setVar('has_emails',1); } $app->tpl->setVar('msg',$msg); $app->tpl->setVar('error',$error); // Set the client list $clients = $app->db->queryAllRecords("SELECT groupid,name FROM sys_group WHERE 1"); $clientlist = ''; foreach($clients as $c) { $clientlist .= ""; } $app->tpl->setVar('clientlist',$clientlist); //* load language file /* $lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_mailbox_import.lng'; include($lng_file); $app->tpl->setVar($wb); */ $app->tpl_defaults(); $app->tpl->pparse(); ?>