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

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

cambio a la creacion para tener los subdominios como grupos secundarios

File size: 6.3 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        $dominio = explode('.',$domain);
96        $size = count($dominio);
97        if (  $size >= 3 &&
98                $dominio[$size-2] == "org" &&
99                $dominio[$size-1] == "ar" ) {
100
101                // armamos el commando a executar en el cli de egw
102                $admincli= $L_EGW_ADMINCLI;
103                $command= "--edit-user";              // Command to be performed
104                $adminuser= $L_EGW_ADMINUSER;
105                $adminclave= $L_EGW_ADMINCLAVE;
106                //$adminclave= "*******";
107
108                $firstname = $mail;                     // the left side of the email
109                $lastname= "-";                         // we have a generic lastname
110                $pass= "*****"; //TEMPORARY
111                $email = $account = $mail ."@" .$domain; // account and email are the same
112                $expires= "never";
113                $canchangepw= "yes";
114                $anonuser= "no";
115                $primarygroup = $dominio[$size-3];   // domains in .ar starts at the third level
116                //$primarygroup= "cta"; //TEMPORARY
117                $secondarygroup = $dominio[$size-4]; // sub-domain as a secondary group
118                //$secondarygroup= "cta"; //TEMPORARY
119                $homedir = "/home/". $mail ."_" .$domain; // everyone can have a home   
120                $loginshell = "/bin/bash";                // everyone can have a shell
121
122                $go= $admincli ." " .$command ." " .$adminuser ."," .$adminclave .",\"" .$account ."\"," .$firstname ."," .$lastname ."," .$pass .",\"" .$email ."\"," .$expires ."," .$canchangepw ."," .$anonuser ."," .$primarygroup ;
123       
124                if (isset($secondarygroup)) {
125                $go= $go ."," .$secondarygroup ;
126                }
127
128                $go= $go ."," .$homedir ."," .$loginshell ;
129
130                echo "<h3>Creamos la cuenta en la base ldap</h3>";
131//      echo "<h4>$go</h4>"; // LA CLAVE SALE... ACA
132
133                exec($go,$output);
134                $cod=$output;
135                if ($cod)
136                   {
137                   // die ($cod);
138                  echo "<p class=\"alert alert-danger\">";
139                  //echo $cod;
140                  print_r ($cod);
141                  echo "</p>";
142                  //$res = false;
143                 }
144        }
145
146        // mandamos el codigo de error en /var/log/alternc/bureau.log
147        $err->log("mail_egw", "create", $cod);
148
149        // para no morir aca...
150        return $res;
151        }       
152
153        function _del_egw_account($mail_id) {
154        global $err, $db, $hooks, $L_EGW_ADMINCLI, $L_EGW_ADMINUSER, $L_EGW_ADMINCLAVE;
155
156        $res = true;
157
158        // usamos
159        $mailinfos = $this->get_details($mail_id);
160        $elmail= $mailinfos['address'] ."@" . $mailinfos['domain'];
161        $err->log("mail_egw", "tries to delete", $elmail);
162
163
164        $dominio = explode('.',$mailinfos['domain']);
165        $size = count($dominio);
166        if (  $size >= 3 && 
167                $dominio[$size-2] == "org" &&
168                $dominio[$size-1] == "ar" ) {
169
170                $admincli= $L_EGW_ADMINCLI;
171                $command= "--delete-user";      // Command to be performed
172                $adminuser = $L_EGW_ADMINUSER;
173                $adminclave = $L_EGW_ADMINCLAVE;
174                //$adminclave= "*******";
175                $account = $elmail;
176
177                $go= $admincli ." " .$command ." " .$adminuser ."," .$adminclave .",\"" .$account ."\"" ;
178                       
179                echo "<h3>Borramos la cuanta en la base ldap</h3>";
180                //echo $go;
181                //$cod = exec($go);
182                exec($go,$output);
183                $cod=$output;
184                if ($cod)
185                   {
186                   // die ($cod);
187                  echo "<p class=\"alert alert-danger\">";
188                  //echo $cod;
189                  print_r ($cod);
190                  echo "</p>";
191                  //$res = false;
192                 }
193       
194        // mandamos el codigo de error en /var/log/alternc/bureau.log
195        // no anda bien, porque el $output es un array
196        //$err->log("mail_egw", "del en ldap", $cod);
197
198        }
199
200
201        // para no morir aca...
202        return $res;
203        }       
204
205}
206
207?>
Note: See TracBrowser for help on using the repository browser.