From e720ef3acc244706e8ec0bd430a465d9ddeaa407 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jorge=20Rodr=C3=ADguez?= Date: Tue, 13 Nov 2007 14:00:33 +0100 Subject: [PATCH] jabber2db: update/delete users. --- tools/jabber2db.pl | 55 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 8 deletions(-) diff --git a/tools/jabber2db.pl b/tools/jabber2db.pl index e204fa1..b41ae94 100755 --- a/tools/jabber2db.pl +++ b/tools/jabber2db.pl @@ -65,19 +65,35 @@ my $vcard2db = { my $option_populate = 0; my $option_add_user = 0; +my $option_del_user = 0; +my $option_nuser = ""; my ($ldap, $dbh, $vcard2ldap); ### MAIN -if ($#ARGV == 0) { +if ($#ARGV < 3) { if ($ARGV[0] eq "-p" || $ARGV[0] eq "--populate") { $option_populate = 1; - } elsif ($ARGV[0] =~ /^[\w\-_\.]+@.+/){ + } elsif ($ARGV[0] eq "-d" || $ARGV[0] eq "--delete") { + $option_del_user = 1; + } elsif ($ARGV[0] eq "-u" || $ARGV[0] eq "--update") { + $option_del_user = 1; $option_add_user = 1; - } else { + } elsif ($ARGV[0] =~ /^[\w\-_\.]+@.+/) { + $option_add_user = 1; + $option_nuser = $ARGV[0]; + } elsif ($ARGV[0]) { usage (); } -} elsif ($#ARGV > 0) { + + if ($option_del_user) { + if ($ARGV[1] =~ /^[\w\-_\.]+@.+/) { + $option_nuser = $ARGV[1]; + } else { + usage (); + } + } +} else { usage (); } @@ -86,7 +102,8 @@ $ldap = Vcard2Ldap::ldap_open (); $dbh = db_open (); set_all_vcards (); -add_user ($ARGV[0]) if $option_add_user; +del_user ($option_nuser) if $option_del_user; +add_user ($option_nuser) if $option_add_user; populate_all_rosters () if $option_populate; $dbh->disconnect; @@ -94,7 +111,8 @@ exit; ### sub usage { - print "usage: jabber2db [-p|--populate] [user\@$Vcard2Ldap::jabberd]\n"; + print "usage: jabber2db [-p|--populate] [-d|--delete] [-u|--update] " . + "[user\@$Vcard2Ldap::jabberd]\n"; exit (1); } @@ -105,9 +123,9 @@ sub set_all_vcards { foreach (Vcard2Ldap::ldap_get_users ($ldap)) { $query .= db_set_vcard ($_); - } + } - execute_query ($query . "\n"); + execute_query ($query); } sub add_user { @@ -128,6 +146,27 @@ sub add_user { execute_query ($query); } +sub del_user { + my $jid = shift; + my $query = ""; + + $query .= "DELETE FROM " . $dbh->quote_identifier ("roster-items") . + "WHERE " . $dbh->quote_identifier ("collection-owner") . + "= " . $dbh->quote ($jid) . "OR " . $dbh->quote_identifier ("jid") . + "= " . $dbh->quote ($jid) . ";\n"; + + $query .= "DELETE FROM " . $dbh->quote_identifier ("roster-groups") . + "WHERE " . $dbh->quote_identifier ("collection-owner") . + "= " . $dbh->quote ($jid) . "OR " . $dbh->quote_identifier ("jid") . + "= " . $dbh->quote ($jid) . ";\n"; + + $query .= "DELETE FROM " . $dbh->quote_identifier ("vcard") . + "WHERE " . $dbh->quote_identifier ("collection-owner") . + "= " . $dbh->quote ($jid) . ";\n"; + + execute_query ($query); +} + sub populate_all_rosters { my $query = ""; -- 2.11.4.GIT