#!/usr/bin/perl -w
#
# Grants full rights to a mailbox for a user
#

if ($#ARGV < 1) {
	print "Usage: $0 <mailbox> <username>\n";
	print "  Grants full rights to <mailbox> for <username>\n";
	print "  <mailbox> should be in the form user.username\n";
	exit(-1);
}

use IMAP::Admin;

require "/private/admin/acct/email/prefs.pl";
require "/private/admin/acct/email/utils.pl";

my $imap = IMAP::Admin->new('Server' => $prefs{'cyrushost'},
			'Login' => $prefs{'cyrususer'},
			'Password' => $prefs{'cyruspass'},
			);

if (! $imap) {
	print "Error connecting to IMAP server.\n";
	exit;
}

my $mailbox = $ARGV[0];
my $username = $ARGV[1];


# Make sure that mailbox exists
if (! $imap->list($mailbox)) {
	print "Error: mailbox $mailbox not found.\n";
	exit;
}

# Get list of folders
my @folders = $imap->list($mailbox);
push @folders, $imap->list("$mailbox" . ".*");

# Walk through folders granting rights
foreach my $f (@folders) {
	print "Granting rights to $f for $username\n";
	$rv = $imap->set_acl($f, $username, "lrswipcda");
	if ($rv != 0) {
		print "Error setting acl on mailbox $f: " . $imap->{'Error'} . "\n";
		exit;
	}
}

$imap->close;

