Remover: " . count($vet_Excluir); //exit; //Vinculos com os arquivos de configuracao/funcionalidades Mailman/RHDS require_once("/usr/local/listas/functions.php"); require_once("/usr/local/listas/config.php"); //Se nao encontrou listas a inserir ou remover, aborta o script if ((count($vet_Incluir) == 0) && (count($vet_Excluir) == 0)){ criaLog("PHPCRON: Nao ha listas a incluir/remover em \"".diretoriolistas."\"","sinc"); echo "PHPCRON: Nao ha listas a processar em \"".diretoriolistas."\"\n"; exit; } //Cria um log com as atividades previstas criaLog("PHPCRON: Numero de listas a inserir=".count($vet_Incluir) . " e a remover=".count($vet_Excluir)."\n","sinc"); echo "PHPCRON: Inicializando totalizador de insercoes= ".count($vet_Incluir)." e delecoes=".count($vet_Excluir)."\n"; //Diretorio padrao de chamada dos comandos $dir_exe = '/usr/lib/mailman/bin'; /* CADASTRAMENTO DAS NOVAS LISTAS */ $i = 0; $incluidas = 0; while($i < count($vet_Incluir)){ //Conecta ao LDAP para procurar listas $conexao = @ldap_connect($server, $port); @ldap_set_option($conexao, LDAP_OPT_PROTOCOL_VERSION, 3); @ldap_bind($conexao, $rootdn, $pass); $filtro = "(uid=".$vet_Incluir[$i].")"; $selecao = array("uid","mailforwardingaddress","listpass", "admlista", "defaultmembermoderation", "naomoderado"); $busca = @ldap_search($conexao, $baseGravacao, $filtro, $selecao); $dados = @ldap_get_entries($conexao, $busca); $contador = $dados['count']; //PARA DEPURAR A BUSCA NO LDAP, PARA ENCONTRAR A LISTA QUE FOI RECENTEMENTE CADASTRADA NO RHDS //echo "

Encontradas $contador entradas no LDAP para \"$vet_Incluir[$i]\"

"; //exit; # $arquivoLog = 'cron.CriarLista.log'; # $handlerLog = @fopen("/var/log/$arquivoLog","w"); //Se encontrou o registro da nova lista no RHDS, processa o cadastro da mesma no Mailman if($contador == 1){ $infoUid = $dados[0]['uid'][0]; $arquivo = $infoUid; $senhaLista = $dados[0]['listpass'][0]; if($senhaLista == "") $senhaLista = "senha"; $senhaLista = desencriptar($senhaLista); $moderacao_padrao_membro = $dados[0]['defaultmembermoderation'][0]; if($moderacao_padrao_membro == "") $moderacao_padrao_membro = 0; $manipulador = @fopen($arquivo,"w"); //Laco que cria um arquivo com os participantes de uma lista $j = 0; while($dados[0]['mailforwardingaddress'][$j] != ""){ $dadosMail = $dados[0]['mailforwardingaddress'][$j]; fwrite($manipulador, $dadosMail . "\n"); $j++; } $w = 0; //Laco interno que recupera os participantes administradores da mesma, gerando um array $dadosAdmLista = ""; while($dados[0]['admlista'][$w] != ""){ $dadosAdmLista[] = $dados[0]['admlista'][$w]; $w++; } //Laco interno que identifica os usuarios nao moderados de uma lista, em vetor $z = 0; $infonaomoderado = ""; while($dados[0]['naomoderado'][$z] != ""){ $testeNaoModerado = $dados[0]['naomoderado'][$z]; $infonaomoderado[] = $dados[0]['naomoderado'][$z]; $z++; } $contadorNaoNumerado = count($infonaomoderado); //Testa se a lista existe no Mailman $testaLista = "$dir_exe/list_admins $infoUid"; //$errotestaLista = `$testaLista`; exec($testaLista, $errotestaLista); //$errotestaLista = $errotestaLista; //PARA DEPURAR EVENTUAIS ERROS NA HORA DE GRAVAR O ARQUIVO DE LEITURA COM O NOME DA LISTA //echo "

Lista no mailman? " . $errotestaLista[0] . "

"; //exit; //Se nao existe, cria a lista if((substr($errotestaLista[0],0,12) == "No such list") || (substr($errotestaLista[0],0,17) == "Lista inexistente")){ //Gera o arquivo de definicoes do Mailman na funcao "geraArquivoDefault" [functions.php] geraArquivoDefault($infoUid, $moderacao_padrao_membro, $infoAdmLista); $pesquisa = strtolower($infoUid); $cmd = "$dir_exe/list_admins $pesquisa"; exec($cmd, $err_retorno); $chave1 = "No such list: $pesquisa"; $chave2 = "Lista inexistente: $pesquisa"; $criaLista = "$dir_exe/newlist -q $infoUid $moderador $senhaLista"; //$teste_exec = "$dir_exe/newlist"; //$cmd_teste = exec($teste_exec, $teste_msg); //echo "Aqui: $teste_msg[0]"; //exit; //PARA DEPURAR EVENTUAIS ERROS NA HORA DE GRAVAR O ARQUIVO DE LEITURA COM O NOME DA LISTA //echo "Antes de tentar gravar = $teste_msg[0]"; if((in_array("$chave1", $err_retorno)) || (in_array("$chave2", $err_retorno))){ $erroCriaLista = `$criaLista`; $msg1 = "Criando lista $infoUid"; criaLog($msg1, "sinc"); } else{ $msg2 = "Lista $infoUid ja existe!!!"; criaLog($msg2, "sinc"); } //PARA DEPURAR A ESPECIFICA CRIACAO DA NOVA LISTA, MAPEANDO UMA DAS DUAS MENSAGENS ACIMA //echo "MSG1 = $msg1 - MSG2 = $msg2
COMANDO CRIA LISTA: $criaLista"; //exit; $definePadrao = "$dir_exe/config_list -i $infoUid.def $infoUid"; $msg3 = "Aplicando politica a lista $infoUid"; criaLog($msg3, "sinc"); exec($definePadrao, $errodefinePadrao); $cmd2 = "clear"; exec($cmd2); //PARA DEPURAR O COMANDO DE PADRONIZACAO ACIMA //echo "errodefinePadrao = $errodefinePadrao[0]"; } //Sincroniza usuarios e listas $msg2 = "LDAP e Mailman sincronizados ->lista $infoUid"; $cmd = "$dir_exe/sync_members -f $arquivo $infoUid"; criaLog("$msg","sinc"); exec($cmd, $erro); //PARA DEPURAR O COMANDO DE SINCRONIZACAO ACIMA //echo "MSG SINCRONINZE = $erro[0]"; //Atualiza usuarios nao moderados $listaNaoModerados = strtolower($infoUid); if(($contanaoModerado > 1) && ($moderacao_padrao_membro == 1)){ atualizaModeracao($listaNaoModerado, $infonaomoderado); $contanaoModerado = 0; } //PARA DEPURAR O COMANDO DE SINCRONIZACAO ACIMA //echo "Moderacao = $contanaoModerado"; } //Testa se nao houve problemas na criacao da lista no mailman if($erroCriaLista != "") criaLog("PHPCRON: Erro criando lista $vet_Incluir[$i] -> $erroCriaLista\n", "sinc"); else{ criaLog("PHPCRON: Lista $vet_Incluir[$i] criada com sucesso!\n", "sinc"); $incluidas++; } //Remove o arquivo do pool de listas a processar @unlink(diretoriolistas."/ins_".$vet_Incluir[$i]); $i++; } /* REMOCAO DE LISTAS */ $i = 0; $removidas = 0; while($i < count($vet_Excluir)){ //Conecta ao LDAP para procurar listas $conexao = @ldap_connect($server, $port); @ldap_set_option($conexao, LDAP_OPT_PROTOCOL_VERSION, 3); @ldap_bind($conexao, $rootdn, $pass); $listaListas = "list_lists -b"; $listaTotal = `$dir_exe/$listaListas`; $lista = explode("\n", $listaTotal); $contaLista = count($lista); $filtro = "(uid=".$vet_Excluir[$i].")"; $selecao = array("uid"); $busca = @ldap_search($conexao, $baseGravacao, $filtro, $selecao); $dados = @ldap_get_entries($conexao, $busca); $contador = $dados['count']; //PARA DEPURAR A BUSCA NO LDAP, PARA ENCONTRAR A LISTA QUE FOI RECENTEMENTE CADASTRADA NO RHDS //echo "

Encontradas $contador entradas no LDAP para \"$vet_Excluir[$i]\"

"; //exit; //Se encontrou o id para a lista no RHDS, sai do script e gera log: a lista nao foi deletada de la ainda if($contador != 0){ criaLog("PHPCRON: Erro removendo lista $vet_Excluir[$i] -> Mais de uma ocorrencia foi localizada no repositorio LDAP.\n", "sinc"); echo "PHPCRON: Erro removendo lista $vet_Excluir[$i] -> $contador ocorrencias localizadas no repositorio LDAP.\n"; exit; } $infoUid = strtolower($vet_Excluir[$i]); if($infoUid != ""){ $removeLista = "$dir_exe/rmlist -a $vet_Excluir[$i]"; exec($removeLista, $erroRemove); apagaListaMailman($lista[$i]); criaLog("PHPCRON: Lista removida -> $vet_Excluir[$i]!\n", "sinc"); $removidas++; } if($erroRemove[0] != ""){ criaLog("PHPCRON: Erro removendo a lista $vet_Excluir[$i] -> $erroRemove[0]\n", "sinc"); } //Remove o arquivo identificador da lista excluida @unlink(diretoriolistas . "/rem_".$vet_Excluir[$i]); $i++; } echo "PHPCRON: Sincronismo concluido: " . $incluidas . " novas listas criadas e ". $removidas. " listas removidas\n"; ?>