thomas: server/perl-kolab/lib/Kolab Cyrus.pm, 1.6, 1.7 LDAP.pm, 1.11, 1.12
cvs at kolab.org
cvs at kolab.org
Mon Mar 16 18:17:37 CET 2009
Author: thomas
Update of /kolabrepository/server/perl-kolab/lib/Kolab
In directory doto:/tmp/cvs-serv5038/perl-kolab/lib/Kolab
Modified Files:
Cyrus.pm LDAP.pm
Log Message:
Select random imap partition when creating new user mailboxes.
The behavior can be modified by setting a different imappartitions_script in
kolab.conf or disabled by setting imappartitions_script to an empty value.
Index: Cyrus.pm
===================================================================
RCS file: /kolabrepository/server/perl-kolab/lib/Kolab/Cyrus.pm,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- Cyrus.pm 10 Oct 2008 14:24:46 -0000 1.6
+++ Cyrus.pm 16 Mar 2009 17:17:34 -0000 1.7
@@ -96,12 +96,13 @@
my $cyrus = shift;
my $uid = shift;
my $sf = shift || 0;
- my $cyruid = &createUid($uid, $sf);
+ my $partition = shift || '';
+ my $cyruid = &createUid($uid, $sf);
my $mailbox = ($cyrus->list($cyruid))[0];
if ($uid && ($uid ne $Kolab::config{'cyrus_admin'}) && ($uid ne "freebusy") && ($uid ne "nobody") && !defined($mailbox)) {
- Kolab::log('Y', "Creating mailbox `$cyruid'");
- if (!$cyrus->create($cyruid)) {
+ Kolab::log('Y', "Creating mailbox `$cyruid' on ".($partition?"partition `$partition'":"default partition"));
+ if (!$cyrus->create($cyruid, $partition)) {
Kolab::log('Y', "Unable to create mailbox `$cyruid', Error = `" . $cyrus->error . "'", KOLAB_WARN);
}
} else {
Index: LDAP.pm
===================================================================
RCS file: /kolabrepository/server/perl-kolab/lib/Kolab/LDAP.pm,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- LDAP.pm 19 Feb 2009 14:37:14 -0000 1.11
+++ LDAP.pm 16 Mar 2009 17:17:34 -0000 1.12
@@ -525,9 +525,20 @@
if ($sync) { $newuid_db{$guid} = $oldgyarduid; } else { uidcacheStore($guid, $oldgyarduid); }
} else {
Kolab::log('L', "Creating user `$uid' corresponding to GUID `$guid'", KOLAB_DEBUG);
+ my $partition = '';
+ my $imappartitions_script = $Kolab::config{'imappartitions_script'};
+ if ($imappartitions_script) {
+ my @partitions;
+ if (@partitions = `$imappartitions_script`) {
+ $partition = $partitions[rand($#partitions + 1)];
+ chomp $partition;
+ } else {
+ Kolab::log('L', "Unable to run imappartitions_script `$imappartitions_script': $!", KOLAB_ERROR);
+ }
+ }
# We have a object that we have no previous record of, so create everything
if ($sync) { $newuid_db{$guid} = $uid; } else { uidcacheStore($guid, $uid); }
- Kolab::Cyrus::createMailbox($cyrus, $uid, ($p eq 'sf' ? 1 : 0));
+ Kolab::Cyrus::createMailbox($cyrus, $uid, ($p eq 'sf' ? 1 : 0), $partition);
if( $p eq 'sf' ){
my $foldertype = lc($object->get_value('kolabfoldertype'));
More information about the commits
mailing list