ISPConfig mass email users creation
Preparing for migration from old email system (±15 years old FreeBSD...) to latest ISPConfig. One of steps - email users creation. ISPConfig have minimalist documentation and few examples.
Yeh, old system store plain text passwords :)
p1.txt
rest_make_users.php
Yeh, old system store plain text passwords :)
p1.txt
email1@domainname.com plain_text_password1 email2@domainname.com plain_text_password2 email3@domainname.com plain_text_password3 ...Idea is simple, I created one user with all needed settings, and then used him as default for others.
rest_make_users.php
$remote_user = 'admin-api-user';
$remote_pass = 'admin-api-password';
$remote_url = 'https://127.0.0.1:8080/remote/json.php';
function restCall($method, $data) {
global $remote_url;
if(!is_array($data)) return false;
$json = json_encode($data);
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
if($data) curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_URL, $remote_url . '?' . $method);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
$result = restCall('login', array('username' => $remote_user, 'password' => $remote_pass, 'client_login' => false));
if($result) {
$data = json_decode($result, true);
if(!$data) die("ERROR!\n");
$session_id = $data['response'];
$client_id = 1;
$result = restCall('mail_user_get', array('session_id' => $session_id, 'primary_id' => '1'));
if($result) {
// print_r(json_decode($result, true));
}
else{
print "Could not get client_get result\n";
print_r(json_decode($result, true));
}
$fn = fopen("p1.txt","r");
while(! feof($fn)) {
$r = fgets($fn);
$m_mail = explode(" ", $r)[0];
$m_pass = trim(explode(" ", $r)[1]);
str_replace(array("\r", "\n"), '', $m_pass);
$params = json_decode($result, true)['response'];
$params['email'] = $m_mail;
$params['login'] = $params['email'];
$params['password'] = $m_pass;
$params['maildir'] = '/var/vmail/' . explode("@", $params['email'])[1] . '/' . explode("@", $params['email'])[0];
unset($params['mailuser_id']);
unset($params['sys_userid']);
unset($params['sys_groupid']);
unset($params['sys_perm_user']);
unset($params['sys_perm_group']);
unset($params['sys_perm_other']);
// print_r($params);
$result1 = restCall('mail_user_add', array('session_id' => $session_id, 'client_id' => $client_id, 'params' => $params));
if($result1) {
print_r(json_decode($result1, true));
}
else {
print "Could not get mail_user_add result\n";
print_r(json_decode($result1, true));
}
// sleep(1);
echo "
";
}
fclose($fn);
$result = restCall('logout', array('session_id' => $session_id));
if($result) {
// var_dump(json_decode($result, true));
}
else print "Could not get logout result\n";
}
Comments
Post a Comment