source: companies/serpro/scripts-listas/criaListasRegionais.php @ 903

Revision 903, 7.7 KB checked in by niltonneto, 15 years ago (diff)

Importacao inicial do Expresso do Serpro

Line 
1#!/usr/bin/php
2
3
4<?php
5
6require('config.php');
7require('functions.php');
8
9#/**************************************************************************\
10#*                                                                          *
11#* Este script tem duas funcoes: criaListaRegional() e criaLog().           *
12#*                                                                          *
13#* -> criaListaRegional() - le o LDAP/RHDS, usuario por usuario, em cada    *
14#*    cada regional. A partir dai, gera os nomes das listas, baseados nas   *
15#*    regionais e depois adiciona os usuarios nas respectivas listas.       *
16#*                                                                          *
17#*    Tambem verifica se o usuario foi recadastrado em outra regional e     *
18#*    caso isto aconteca, remove-o da lista antiga e o adiciona na lista    *
19#*    nova.                                                                 *
20#*                                                                          *
21#*    Todas estas acoes sao feitas no LDAP/RHDS, depois serao replicadas    *
22#*    para o servidor de listas pelo script sincListasMailManRHDS.php       *
23#*                                                                          *
24#* -> criaLog() - gera o arquivo de log /var/log/criaListasCorpRHDS.log     *
25#*                                                                          *
26#\**************************************************************************/
27
28
29
30$regionais = array('regbhe','regblm','regbsa','regcta','regfla','regpae','regrce','regrjo','regsdr','regspo');
31
32# Recebe o argumento passado na linha de comando.
33#       $regional = $argv[1];
34
35$retorno=encriptar($pass);
36$senhaCript=$retorno;
37
38
39
40# .
41# .
42function criaListaRegional($server, $port, $rootdn, $pass, $basedn, $regional, $baseGravacao, $dominioLista, $maxOU, $administrador, $senhaCript) {
43
44        criaLog("Inicio de rotina de criacao de listas Corporativas --> $regional","corp");
45        $connect=ldap_connect($server,$port);
46
47        ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);
48        ldap_bind($connect, $rootdn, $pass);
49
50        $filter="(&(ou=*)(phpgwaccounttype=u)(!(nsaccountlock=true))(accountstatus=active))";
51        $justthese = array("uid","ou","mail","cn");
52
53        $baseBusca = "ou=".$regional.",".$basedn;
54
55        $sr = @ldap_search($connect, $baseBusca, $filter, $justthese);
56
57        $info = ldap_get_entries($connect, $sr);
58
59        $cont = $info['count'];
60
61//Faz uma procura inicial pela lista da regional, caso ela ja exista, nao sera feito nada, caso contrario, ela sera criada;
62
63        $regtmp = substr("$regional", 3);//separa o parametro $regional e pega a parte final p/ formar o nome da lista
64                                         //(ex.: regpae, pega o final 'pae');
65
66        $listaFinal = "listaregional-".$regtmp; // Monta o nome da lista;
67        $filterGrava = "(uid=$listaFinal)";
68        $srGrava = @ldap_search($connect, $baseGravacao, $filterGrava);// Verifica se a lista ja esta criada no RHDS;
69
70        $contLdap = ldap_count_entries($connect, $srGrava);
71
72        if(($contLdap == 0) && ($listaFinal != "listaregional-")) { // Se a lista nao existir no RHDS, sera criada;
73
74                $msg = "\nLendo Base Ldap - Regional $regional.\n";
75                echo $msg;
76
77                $infoAddListaReg["objectclass"][0] = "person";
78                $infoAddListaReg["objectclass"][1] = "posixAccount";
79                $infoAddListaReg["objectclass"][2] = "phpgwaccount";
80                $infoAddListaReg["objectclass"][3] = "mailman";
81                $infoAddListaReg["objectclass"][4] = "inetorgperson";
82                $infoAddListaReg["uid"] = "$listaFinal";
83                $infoAddListaReg["mail"] = "$listaFinal"."$dominioLista";
84                $infoAddListaReg["phpgwAccountExpires"] = '-1';
85                $infoAddListaReg["phpgwAccountStatus"] = 'A';
86                $infoAddListaReg["phpgwAccountType"] = "l";
87                $infoAddListaReg["accountStatus"] = "active";
88                $infoAddListaReg["sn"] = "$listaFinal";
89                $infoAddListaReg["cn"] = "$listaFinal";
90                $infoAddListaReg["homeDirectory"] = "/dev/null";
91                $infoAddListaReg["gidNumber"] = "777";
92                $infoAddListaReg["uidNumber"] = "-".Contador();
93                $infoAddListaReg["admLista"] = "$administrador";
94                $infoAddListaReg["listpass"] = "$senhaCript";
95                $infoAddListaReg["defaultmembermoderation"] = "1";
96                $dnGravaLista = "uid=$listaFinal".","."$baseGravacao";
97
98                $adicaoLdap = ldap_add($connect, $dnGravaLista, $infoAddListaReg);
99
100                $dnGravaUsuario = "uid=$listaFinal".","."$baseGravacao";
101
102                $i = 0;
103                while($i <= ($cont - 1)) {
104                echo ".";
105
106                        $j = 0;
107                        while($info[$i]['mail'][$j] != "") {
108
109                                $mailUsuario = $info[$i]['mail'][$j];
110                                $infoAdicaoUsuario["mailforwardingaddress"] = "$mailUsuario";
111
112                                $addUsuLista = @ldap_mod_add($connect, $dnGravaUsuario, $infoAdicaoUsuario);
113
114                                $j++;
115                        }
116
117                        $i++;
118                }
119
120        }else { //se exister, os usuarios serao adicionados e/ou remanejados entre as listas;
121
122
123
124
125        # Le Ldap, por usuario e cria arquivos com listas e participantes
126                $i = 0;
127                $msg = "\nLendo Base Ldap - Regional $regional.\n";
128                echo $msg;
129
130                while($i <= ($cont-1)) {
131                echo ".";
132
133                        $teste = 0;
134                        $j = 0;
135                        while($info[$i]['mail'][$j] != "") {
136                       
137
138                                $dnGravaUsuario = "uid=$listaFinal".","."$baseGravacao";
139
140                                $mailUsuario = $info[$i]['mail'][$j];
141                       
142                                // Filtro para pegar somente as listas corp
143
144                                $filtro = "(&(mailforwardingaddress=$mailUsuario)(uid=listaregional*))";
145                                //$filtro = "(mailforwardingaddress=$mailUsuario)";
146
147                                $soIsso = array("uid");
148                                $srCompara = ldap_search($connect, $baseGravacao, $filtro, $soIsso);
149                                $contsrCompara = ldap_count_entries($connect, $srCompara);
150                                $comparaUid = ldap_get_entries($connect, $srCompara);
151
152                                $listaTr = $comparaUid[0]['uid'][0];
153                                $testeTrtmp = explode('-', $listaTr);
154                                $testeTr = $testeTrtmp[1];
155
156                                $infoDelUsuario["mailforwardingaddress"] = "$mailUsuario";
157
158                # Aqui ocorre a verificao se um usuario ja pertence a alguma lista criada
159                                if ($testeTr == $regtmp) {
160                                        if(($testeTr == "") || ($ou == "")) {
161                                                $comentario = "Usuario sem Setor cadastrado - ".$info[$i]['uid'][0]."\n";
162                                                criaLog($comentario,"corp");
163                                        }else {
164                                                $comentario = "Usuario ja pertence a uma lista - ".$info[$i]['uid'][0]."\n";
165                                                criaLog($comentario,"corp");
166                                        }
167                                        $teste = 1;
168                                }elseif(($testeTr != $regtmp) && ($testeTr != "")) {
169                                        $dnModUsuario = "uid=$listaTr".","."$baseGravacao";
170                                        $removeUsuLista = ldap_mod_del($connect, $dnModUsuario, $infoDelUsuario);
171                                        $nomeUsu = $info[$i]['cn'][0];
172
173                                        criaLog("Verifica troca de setor -> Usuario ".$info[$i]['uid'][0]. " Lista $listaTr","corp");
174                                }
175
176                                $infoAdicaoUsuario["mailforwardingaddress"] = "$mailUsuario";
177
178                #Insere usuarios na lista criada
179                                if($teste == 0) {
180                                        $addUsuLista = @ldap_mod_add($connect, $dnGravaUsuario, $infoAdicaoUsuario);
181                                        criaLog("Usuario ".$info[$i]['uid'][0]." cadastrado na lista $listaFinal.\n","corp");
182                                }else {
183                                        criaLog("Usuario ".$info[$i]['uid'][0]." nao adicionado. $comentario.\n","corp");
184                                }
185
186                                $j++;
187
188                        } //fim do while dentro do usuario
189
190                $i++;
191
192                } //fim do while externo (usuario por usuario)
193
194        }//fim do if(($contLdap == 0) && ($listaFinal != "listaregional-"));
195
196
197}
198
199$testeValor = 0;
200
201# Chamada da funcao para inclusao no Mailman
202if ($argv[1] == ""){
203        echo "Favor passar sigla da regional\n\n";
204        echo "todas regspo regrce regblb regfla regsdr regcta regbhe regrjo regpae regbsa\n\n";
205}elseif($argv[1] == "todas"){
206        foreach($regionais as $valor){
207                $msg3 = "\n\nGerando Lista -> Regional $valor";
208                $regional = $valor;
209                criaLog($msg3,"corp");
210                echo "$msg3\n";
211                criaListaRegional($server, $port, $rootdn, $pass, $basedn, $regional, $baseGravacao, $dominioLista, $maxOU, $administrador, $senhaCript);
212        }
213$testeValor = 1;
214}else{
215        $regional = $argv[1];
216        criaListaRegional($server, $port, $rootdn, $pass, $basedn, $regional, $baseGravacao, $dominioLista, $maxOU, $administrador, $senhaCript);
217        $testeValor = 1;
218}
219        if($testeValor == 1){
220                $msg2 = "\n\nListas regionais geradas na base LDAP!!!";
221                echo "$msg2\n";
222                criaLog($msg2,"corp");
223        }
224
225?>
Note: See TracBrowser for help on using the repository browser.