# HG changeset patch # User heiko # Date 1207946143 0 # Node ID 0f6538b7d96b582aafb380e5bf58aa7846b08bb7 # Parent 91cf089e1e91c3fdd1b0b1efb82b4e0e39469fec - better structure (using hash) diff -r 91cf089e1e91 -r 0f6538b7d96b update-mailboxes --- a/update-mailboxes Fri Apr 11 20:17:55 2008 +0000 +++ b/update-mailboxes Fri Apr 11 20:35:43 2008 +0000 @@ -84,7 +84,7 @@ ); die "$ME: keine LDAP-Einträge gefunden\n" if $msg->count == 0; - my @protocol; + my %mbox; while (my $e = $msg->pop_entry) { my $mbox = $e->get_value("samAccountName"); @@ -95,12 +95,11 @@ } my $folder = "user/$mbox"; - delete $folder{$folder}; print "$folder: "; if ($imap->exists($folder)) { - push @protocol, $mbox; print "exists\n"; + $mbox{$mbox} = $folder; next; } @@ -109,7 +108,8 @@ warn "$folder: $@\n"; next; } - push @protocol, $mbox; + + $mbox{$mbox} = $folder; print "acl "; if (!$imap->setacl($folder, $USER, "lrswipcda")) { @@ -120,6 +120,11 @@ print "ok\n"; } + delete @folder{values %mbox}; + + # now check if there are still folders we didn't touch; + delete @folder{map { "user/$_" } keys %mbox}; + if (keys %folder) { print scalar(keys %folder) . " unused mailboxe(s):\n" . "\t" @@ -133,6 +138,10 @@ or warn "$_: ($@)\n"; } } + else { + %mbox = (%mbox, %folder); + } + } if ($opt_protocol) { @@ -141,7 +150,8 @@ "# Liste der Mailboxen (nur zur Info)", "# updated: " . localtime, "# updater: $0 " . '($Id$)', - @protocol, ""; + sort(keys %mbox), + ""; } exit 0; @@ -163,7 +173,7 @@ =head1 SYNOPSIS - update-mailboxes [-v|--[no]verbose] [-d|--delete] + update-mailboxes [-p|--protocol file] [-v|--[no]verbose] [-d|--delete] update-mailboxes --help | --man =head1 DESCRIPTION @@ -183,6 +193,10 @@ Etwas mehr Gesprächigkeit. (default: 1, wenn STDOUT ein TTY ist, sonst 0) +=item B<-p>|B<--protocol> I + +Schreibt eine Liste der aktuell existierenden Mailboxen in das File F. + =item B<-d>|B<--delete> Löscht Mailboxen, die dem ADS nicht bekannt sind. (default: 0) @@ -193,6 +207,11 @@ =back +=head1 FILES + +In F ist eine Liste von ADS-Nutzern, für +die keine Mailbox angelegt werden soll! + =head1 AUTHOR Heiko Schlittermann @@ -202,3 +221,5 @@ L L =cut + +# vim:aw ts=4 sw=4 sts=4: