source: trunk/alternc/patches/class/m_mail_egw.php @ 783

Last change on this file since 783 was 783, checked in by autocommit@…, 8 years ago

agrego la funcion para fijar la clave de una cuenta y borrar una cuenta

File size: 5.9 KB
Line 
1<?
2require_once("m_mail.php");
3
4class m_mail_egw extends m_mail {
5
6        function create($dom_id, $mail, $type = "", $dontcheck = false) {
7           if ($this->_add_egw_account($dom_id, $mail, $type = "", $dontcheck = false))
8                        if (parent::create($dom_id,$mail,$type="",$dontcheck=false))
9                                return true;
10                        else
11                                return false;
12                else
13                        return false;
14        }
15
16        function set_passwd($mail_id, $pass) {
17                if ($this->_set_passwd_egw_account($mail_id, $pass) )
18                        if (parent::set_passwd($mail_id, $pass))
19                                return true;
20                        else
21                                return false;
22                else
23                        return false;
24        }
25
26        function delete($mail_id) {
27       
28                if ($this->_del_egw_account($mail_id) )
29                        if (parent::delete($mail_id))
30                                return true;
31                        else
32                                return false;
33                else
34                        return false;
35        }
36
37        function _set_passwd_egw_account($mail_id, $pass) {
38        global $db, $err, $admin, $L_EGW_ADMINCLI, $L_EGW_ADMINUSER, $L_EGW_ADMINCLAVE;
39        $res = true;
40                //$err->log("mail", "set password egwclass", "$mail_id");
41
42        // usamos
43        $mailinfos = $this->get_details($mail_id);
44        $elmail= $mailinfos['address'] ."@" . $mailinfos['domain'];
45        $err->log("mail_egw", "tries to set password for", $elmail);
46
47        $dominio = explode('.',$mailinfos['domain']);
48        $size = count($dominio);
49        if (  $size >= 3 &&
50                $dominio[$size-2] == "org" &&
51                $dominio[$size-1] == "ar" ) {
52
53                $admincli= $L_EGW_ADMINCLI;
54                $command= "--change-pw";      // Command to be performed
55                $adminuser = $L_EGW_ADMINUSER;
56                $adminclave = $L_EGW_ADMINCLAVE;
57                //$adminclave= "*******";
58                $account = $elmail;
59
60                $go= $admincli ." " .$command ." " .$adminuser ."," .$adminclave .",\"" .$account ."\"," .$pass ;
61
62                echo "<h3>Actualizamos la contrasena en la base ldap</h3>";
63                //echo $go;
64                //$cod = exec($go);
65                exec($go,$output);
66                $cod=$output;
67                if ($cod)
68                   {
69                   // die ($cod);
70                  echo "<p class=\"alert alert-danger\">";
71                  //echo $cod;
72                  print_r ($cod);
73                  echo "</p>";
74                  //$res = false;
75                 }
76
77        // mandamos el codigo de error en /var/log/alternc/bureau.log
78        // no anda bien, porque el $output es un array
79        //$err->log("mail_egw", "del en ldap", $cod);
80
81        }
82
83        // para no morir aca...
84        return $res;
85        }       
86
87        function _add_egw_account($dom_id, $mail, $type = "", $dontcheck = false) {
88        global $err, $db, $quota, $dom, $hooks, $L_EGW_ADMINCLI, $L_EGW_ADMINUSER, $L_EGW_ADMINCLAVE;
89        $res = true;
90                $err->log("mail", "create_egwclass", "$mail $dom_id");
91        $domain = $dom->get_domain_byid($dom_id);
92                $err->log("mail", "create_egwclass", "$mail $domain");
93
94
95        // armamos el commando a executar en el cli de egw
96        $admincli= $L_EGW_ADMINCLI;
97        $command= "--edit-user";              // Command to be performed
98        $adminuser= $L_EGW_ADMINUSER;
99        $adminclave= $L_EGW_ADMINCLAVE;
100        //$adminclave= "*******";
101
102        $firstname = $mail;                     // the left side of the email
103        $lastname= "-";                         // we have a generic lastname
104        $pass= "*****"; //TEMPORARY
105        $email = $account = $mail ."@" .$domain; // account and email are the same
106        $expires= "never";
107        $canchangepw= "yes";
108        $anonuser= "no";
109//      $primarygroup = $domain[$size-3];   // domains in .ar starts at the third level
110        $primarygroup= "cta"; //TEMPORARY
111//      $secondarygroup = $domain[$size-4]; // sub-domain is used as a secondary group
112        $homedir = "/home/". $mail ."_" .$domain; // everyone can have a home   
113        $loginshell = "/bin/bash";                // everyone can have a shell
114
115        $go= $admincli ." " .$command ." " .$adminuser ."," .$adminclave .",\"" .$account ."\"," .$firstname ."," .$lastname ."," .$pass .",\"" .$email ."\"," .$expires ."," .$canchangepw ."," .$anonuser ."," .$primarygroup ;
116       
117        $go= $go ."," .$homedir ."," .$loginshell ;
118
119        echo "<h3>Creamos la cuenta en la base ldap</h3>";
120//      echo "<h4>$go</h4>"; // LA CLAVE SALE... ACA
121
122                        $cod = exec($go);
123                        if ($cod)
124                        {
125                         // die ($cod);
126                         echo "<p class=\"error\">";
127                         echo $cod;
128                         echo "</p>";
129                         //$res = false;
130                        }       
131
132        // mandamos el codigo de error en /var/log/alternc/bureau.log
133        $err->log("mail_egw", "create", $cod);
134
135
136        // para no morir aca...
137        return $res;
138        }       
139//////
140        function _del_egw_account($mail_id) {
141        global $err, $db, $hooks, $L_EGW_ADMINCLI, $L_EGW_ADMINUSER, $L_EGW_ADMINCLAVE;
142
143        $res = true;
144
145        // usamos
146        $mailinfos = $this->get_details($mail_id);
147        $elmail= $mailinfos['address'] ."@" . $mailinfos['domain'];
148        $err->log("mail_egw", "tries to delete", $elmail);
149
150
151        $dominio = explode('.',$mailinfos['domain']);
152        $size = count($dominio);
153        if (  $size >= 3 && 
154                $dominio[$size-2] == "org" &&
155                $dominio[$size-1] == "ar" ) {
156
157                $admincli= $L_EGW_ADMINCLI;
158                $command= "--delete-user";      // Command to be performed
159                $adminuser = $L_EGW_ADMINUSER;
160                $adminclave = $L_EGW_ADMINCLAVE;
161                //$adminclave= "*******";
162                $account = $elmail;
163
164                $go= $admincli ." " .$command ." " .$adminuser ."," .$adminclave .",\"" .$account ."\"" ;
165                       
166                echo "<h3>Borramos la cuanta en la base ldap</h3>";
167                //echo $go;
168                //$cod = exec($go);
169                exec($go,$output);
170                $cod=$output;
171                if ($cod)
172                   {
173                   // die ($cod);
174                  echo "<p class=\"alert alert-danger\">";
175                  //echo $cod;
176                  print_r ($cod);
177                  echo "</p>";
178                  //$res = false;
179                 }
180       
181        // mandamos el codigo de error en /var/log/alternc/bureau.log
182        // no anda bien, porque el $output es un array
183        //$err->log("mail_egw", "del en ldap", $cod);
184
185        }
186
187
188        // para no morir aca...
189        return $res;
190        }       
191
192}
193
194?>
Note: See TracBrowser for help on using the repository browser.