On Mon, Aug 29, 2005 at 02:35:05PM -0300, Gian Depiné wrote: > Olá Pessoal > > Instalei aqui na empresa o jabberd1.4, está rodando direitinho, mas > tem um detalhe que está faltando e que me parece essencial: > > O que eu preciso é uma forma de importar, no programa cliente, a lista > de contatos completa dos funcionários da empresa.
Fiz um cgi pra executar essa tarefa, porem, no meu caso eh o jabberd 2.x. Aqui vai a copia do script, pode ser que te ajude, nao conheco a estrutura de database do 1.x. #!/usr/local/bin/perl # # jabber_update.pl # # CGI utilizado para adicionar todos os usuários da sua rede # jabberd2 a lista de contato de todos os outros e remover da # lista usuarios que foram excluido mantendo assim a lista # sempre atualizada # # Autor: Renato Botelho <[EMAIL PROTECTED]> # # Data: 22/06/2005 # use DBI; use CGI qw/:standard/; use strict; print header, start_html('Atualizar a base do Jabber'), h1('Atualizar a base do Jabber'), start_form, "Senha: ",password_field('senha','',20,80), checkbox('cb_reiniciar','','ON','Reiniciar o Jabber'),p, submit('submit','Executar'), end_form, hr; if (param()) { if (param('senha') ne 'SENHA') { print "Senha Inválida",br; } else { my $fez_algo = 0; my $dominio = 'jabber.SEU_DOM.com.br'; my $group = 'GRUPO_PADRAO'; my $database = 'MYSQL_DATABASE'; my $hostname = 'MYSQL_HOST'; my $port = '3306'; my $user = 'MYSQL_USER'; my $password = 'MYSQL_PASS'; my $dsn = "DBI:mysql:database=$database;host=$hostname;port=$port"; my $dbh = DBI->connect($dsn, $user, $password) || die "Erro ao conectar no mysql"; my $sql = ''; my @users = (); my @usersaux = (); $sql = "select cast(username as char) as username from authreg order by username"; my $sth = $dbh->prepare($sql); $sth->execute; while (my $ref = $sth->fetchrow_hashref()) { push(@users, "$ref->{'username'[EMAIL PROTECTED]"); } $sth->finish; push(@usersaux, @users); foreach my $user ( @users ) { my @users2add = (); $sql = 'select * from `roster-items` ' . 'where cast(`collection-owner` as char) = ' . "'$user' and " . " cast(jid as char) like '[EMAIL PROTECTED]'" . 'order by `collection-owner`,jid'; $sth = $dbh->prepare($sql); $sth->execute; while (my $ref = $sth->fetchrow_hashref()) { push(@users2add, $ref->{'jid'}); } $sth->finish; foreach my $useraux ( @usersaux ) { if (!grep(/^$useraux$/, @users2add) && ($user ne $useraux)) { my $nome = ucfirst($useraux); $nome =~ s/[EMAIL PROTECTED]//g; $sql = 'insert into `roster-items` (`collection-owner`, jid, name, `to`, `from`, ask) values ' . "('$user', '$useraux', '$nome', 1, 1, 0)"; $sth = $dbh->prepare($sql); $sth->execute; $sth->finish; $sql = 'insert into `roster-groups` (`collection-owner`, jid, `group`) values ' . "('$user', '$useraux', '$group')"; $sth = $dbh->prepare($sql); $sth->execute; $sth->finish; $fez_algo = 1 if $fez_algo == 0; print "Adicionado: $user -> $useraux",br; } } foreach my $useraux ( @users2add ) { if (!grep(/^$useraux$/, @users) && ($user ne $useraux)) { $sql = 'delete from `roster-groups` where cast(`collection-owner` as char) = ' . "'$user' and cast(jid as char) = '$useraux'"; $sth = $dbh->prepare($sql); $sth->execute; $sth->finish; $sql = 'delete from `roster-items` where cast(`collection-owner` as char) = ' . "'$user' and cast(jid as char) = '$useraux'"; $sth = $dbh->prepare($sql); $sth->execute; $sth->finish; $fez_algo = 1 if $fez_algo == 0; print "Removido: $user -> $useraux",br; } } } $dbh->disconnect; if ($fez_algo) { if (param('cb_reiniciar') eq 'ON') { my @comandos = ('jabber-pyicq-transport.sh','jabber-pymsn-transport.sh','jabberd.sh'); my $basedir = '/usr/local/etc/rc.d'; print "Parando o Jabber...",br; foreach my $comando ( @comandos ) { system("/usr/local/bin/sudo $basedir/$comando stop"); } print "Iniciando o Jabber...",br; foreach my $comando ( @comandos ) { system("/usr/local/bin/sudo $basedir/$comando start"); } print br; } print "Atualização executada com sucesso!!!",br; } else { print "Base de dados correta. Não e necessário atualizar nada.",br; } } } []s -- Renato Botelho <garga @ FreeBSD.org> <freebsd @ galle.com.br> GnuPG Key: http://www.FreeBSD.org/~garga/pubkey.asc "Laughter is the closest distance between two people." -- Victor Borge _______________________________________________ Freebsd mailing list Freebsd@fug.com.br http://mail.fug.com.br/mailman/listinfo/freebsd_fug.com.br