_add_egw_account($dom_id, $mail, $type, $dontcheck); } return parent::create($dom_id,$mail,$type,$dontcheck); } function set_passwd($mail_id, $pass) { if ($this->_set_passwd_egw_account($mail_id, $pass) ) if (parent::set_passwd($mail_id, $pass)) return true; else return false; else return false; } function delete($mail_id) { $status = TRUE; if ($type != 'mailman') { # check if egw worked $status = $this->_del_egw_account($mail_id); } return parent::delete($mail_id) && $status; } function _set_passwd_egw_account($mail_id, $pass) { global $db, $err, $admin, $L_EGW_ADMINCLI, $L_EGW_ADMINUSER, $L_EGW_ADMINCLAVE; $res = true; //$err->log("mail", "set password egwclass", "$mail_id"); // usamos $mailinfos = $this->get_details($mail_id); $elmail= $mailinfos['address'] ."@" . $mailinfos['domain']; $err->log("mail_egw", "tries to set password for", $elmail); $dominio = explode('.',$mailinfos['domain']); $size = count($dominio); if ( $size >= 3 && $dominio[$size-2] == "org" && $dominio[$size-1] == "ar" ) { $admincli= $L_EGW_ADMINCLI; $command= "--change-pw"; // Command to be performed $adminuser = $L_EGW_ADMINUSER; $adminclave = $L_EGW_ADMINCLAVE; //$adminclave= "*******"; $account = $elmail; $go= $admincli ." " .$command ." " .$adminuser ."," .$adminclave ."," .escapeshellarg($account) ."," .escapeshellarg($pass) ; echo "

Actualizamos la contrasena en la base ldap

"; //echo $go; //$cod = exec($go); exec($go,$output); $cod=$output; if ($cod) { // die ($cod); echo "

"; //echo $cod; print_r ($cod); echo "

"; //$res = false; } // mandamos el codigo de error en /var/log/alternc/bureau.log // no anda bien, porque el $output es un array //$err->log("mail_egw", "del en ldap", $cod); } // para no morir aca... return $res; } function _add_egw_account($dom_id, $mail, $type, $dontcheck = false) { global $err, $db, $quota, $dom, $hooks, $L_EGW_ADMINCLI, $L_EGW_ADMINUSER, $L_EGW_ADMINCLAVE; $res = true; $err->log("mail", "create_egwclass", "$type $mail $dom_id"); $domain = $dom->get_domain_byid($dom_id); $err->log("mail", "create_egwclass", "$type $mail $domain"); $dominio = explode('.',$domain); $size = count($dominio); if ( $size >= 3 && $dominio[$size-2] == "org" && $dominio[$size-1] == "ar" ) { // armamos el commando a executar en el cli de egw $admincli= $L_EGW_ADMINCLI; $command= "--edit-user"; // Command to be performed $adminuser= $L_EGW_ADMINUSER; $adminclave= $L_EGW_ADMINCLAVE; //$adminclave= "*******"; $firstname = $mail; // the left side of the email $lastname= "-"; // we have a generic lastname $pass= hash('sha1', rand()); // TEMPORARY $email = $account = $mail ."@" .$domain; // account and email are the same $expires= "never"; $canchangepw= "yes"; $anonuser= "no"; $primarygroup = $dominio[$size-3]; // domains in .ar starts at the third level //$primarygroup= "cta"; //TEMPORARY $secondarygroup = $dominio[$size-4]; // sub-domain as a secondary group //$secondarygroup= "cta"; //TEMPORARY $homedir = "/home/". $mail ."_" .$domain; // everyone can have a home $loginshell = "/bin/bash"; // everyone can have a shell $go= $admincli ." " .$command ." " .$adminuser ."," .$adminclave ."," .escapeshellarg($account) ."," .$firstname ."," .$lastname ."," .escapeshellarg($pass) ."," .escapeshellarg($email) ."," .$expires ."," .$canchangepw ."," .$anonuser ."," .$primarygroup ; if (isset($secondarygroup)) { $go= $go ."," .$secondarygroup ; } $go= $go ."," .$homedir ."," .$loginshell ; echo "

Creamos la cuenta en la base ldap

"; // echo "

$go

"; // LA CLAVE SALE... ACA exec($go,$output); $cod=$output; if ($cod) { // die ($cod); echo "

"; //echo $cod; print_r ($cod); echo "

"; //$res = false; } } // mandamos el codigo de error en /var/log/alternc/bureau.log $err->log("mail_egw", "create", $cod); // para no morir aca... return $res; } function _del_egw_account($mail_id) { global $err, $db, $hooks, $L_EGW_ADMINCLI, $L_EGW_ADMINUSER, $L_EGW_ADMINCLAVE; $res = true; // usamos $mailinfos = $this->get_details($mail_id); $elmail= $mailinfos['address'] ."@" . $mailinfos['domain']; $err->log("mail_egw", "tries to delete", $elmail); $dominio = explode('.',$mailinfos['domain']); $size = count($dominio); if ( $size >= 3 && $dominio[$size-2] == "org" && $dominio[$size-1] == "ar" ) { $admincli= $L_EGW_ADMINCLI; $command= "--delete-user"; // Command to be performed $adminuser = $L_EGW_ADMINUSER; $adminclave = $L_EGW_ADMINCLAVE; //$adminclave= "*******"; $account = $elmail; $go= $admincli ." " .$command ." " .$adminuser ."," .$adminclave ."," .escapeshellarg($account); echo "

Borramos la cuanta en la base ldap

"; //echo $go; //$cod = exec($go); exec($go,$output); $cod=$output; if ($cod) { // die ($cod); echo "

"; //echo $cod; print_r ($cod); echo "

"; //$res = false; } // mandamos el codigo de error en /var/log/alternc/bureau.log // no anda bien, porque el $output es un array //$err->log("mail_egw", "del en ldap", $cod); } // para no morir aca... return $res; } } ?>