ispman/lib mailbox_actions.lib, NONE, 1.1 mailbox_actions_courier.lib, NONE, 1.1 mailbox_actions_cyrus.lib, NONE, 1.1 create_mailbox.lib, 1.4, NONE create_mailbox_courier.lib, 1.6, NONE create_mailbox_cyrus.lib, 1.5, NONE cyrusadmin.pm, 1.3, NONE delete_mailbox.lib, 1.3, NONE delete_mailbox_courier.lib, 1.3, NONE delete_mailbox_cyrus.lib, 1.3, NONE set_mailbox_quota.lib, 1.3, NONE set_mailbox_quota_courier.lib, 1.3, NONE set_mailbox_quota_cyrus.lib, 1.3, NONE

Joerg Delker <[email protected]>
Newsgroups gmane.comp.isp.ispman.cvs
Message-ID <[email protected]>
Update of /cvsroot/ispman/ispman/lib
In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv25433/lib

Added Files:
	mailbox_actions.lib mailbox_actions_courier.lib 
	mailbox_actions_cyrus.lib 
Removed Files:
	create_mailbox.lib create_mailbox_courier.lib 
	create_mailbox_cyrus.lib cyrusadmin.pm delete_mailbox.lib 
	delete_mailbox_courier.lib delete_mailbox_cyrus.lib 
	set_mailbox_quota.lib set_mailbox_quota_courier.lib 
	set_mailbox_quota_cyrus.lib 
Log Message:
completely refurbished mailbox stuff

--- set_mailbox_quota.lib DELETED ---

--- delete_mailbox_cyrus.lib DELETED ---

--- create_mailbox.lib DELETED ---

--- NEW FILE: mailbox_actions_courier.lib ---
# All mailbox actions necessary for Courier IMAP Server

sub create_mailbox {
    my $server            = shift;
    my $uid               = shift;
    my $imapMailboxPrefix = $ispman->getConf("imapMailboxPrefix");

    # remove the imapMailboxPrefix if present in the beginning of the uid
    # for example if the uid is Maildir/aghaffar_ispman_org, change it to
    # aghaffar_ispman_org
    $uid =~ s/^$imapMailboxPrefix//;

    $ispman->getUserInfo($uid);
    my $homeDirectory = $ispman->{'userinfo'}{$uid}{'homeDirectory'};
    my $uidNumber     = $ispman->{'userinfo'}{$uid}{'uidNumber'};
    my $gidNumber     = $ispman->{'userinfo'}{$uid}{'gidNumber'};

    my @commands = ();
    push @commands,
      "mkdir -p $homeDirectory/$imapMailboxPrefix/tmp $homeDirectory/$imapMailboxPrefix/cur $homeDirectory/$imapMailboxPrefix/new";
    push @commands,
      "chown  $uidNumber\.$gidNumber  $homeDirectory/$imapMailboxPrefix/tmp $homeDirectory/$imapMailboxPrefix/cur $homeDirectory/$imapMailboxPrefix/new $homeDirectory/$imapMailboxPrefix";
    push @commands, "chmod -R 700 $homeDirectory/$imapMailboxPrefix";
    for (@commands) {
        system($_);
    }
}

sub delete_mailbox {
    my $server  = shift;
    my $mailbox = shift;

    # courier users:
    # please add the logic here to set quota if necessary

    print STDERR "delete_mailbox not implemented!" return 1;
}

sub get_quota {
    my $server  = shift;
    my $mailbox = shift;

    # courier users:
    # please add the logic here to set quota if necessary

    print STDERR "delete_mailbox not implemented!" return 1;
}

sub set_quota {
    my $server  = shift;
    my $mailbox = shift;
    my $quota   = shift;

    # courier users:
    # please add the logic here to set quota if necessary

    print STDERR "delete_mailbox not implemented!" return 1;
}

sub list_mailboxes {
    my $server = shift;
    my $filter = shift;

    # courier users:
    # please add the logic here to set quota if necessary

    print STDERR "delete_mailbox not implemented!" return 1;
}

1;


--- delete_mailbox.lib DELETED ---

--- set_mailbox_quota_cyrus.lib DELETED ---

--- NEW FILE: mailbox_actions_cyrus.lib ---
# All mailbox actions necessary for Cyrus IMAP Server

use IMAP::Admin;

# imap connection handle
my $imap_conn;

my $imap_mailbox_prefix = $ispman->getConf("imapMailboxPrefix");

sub _connect {
    my $server = shift;

    $imap_conn = IMAP::Admin->new(
        'Server'   => $server,
        'Port'     => $ispman->getConf("imapPort") || 143,
        'Login'    => $ispman->getConf("imapAdminUsername"),
        'Password' => $ispman->getConf("imapAdminPass")
    );
}

sub create_mailbox {
    my $server  = shift;
    my $mailbox = $imap_mailbox_prefix . shift;

    $imap_conn or _connect($server);

    return $imap_conn->create($mailbox);
}

sub delete_mailbox {
    my $server  = shift;
    my $mailbox = $imap_mailbox_prefix . shift;

    $imap_conn or _connect($server);
    $imap_conn->set_acl( $mailbox, $ispman->getConf("imapAdminUsername"),
        "lrswipcda" );
    return $imap_conn->delete($mailbox);
}

sub get_quota {
    my $server  = shift;
    my $mailbox = $imap_mailbox_prefix . shift;

    $imap_conn or _connect($server);
    return $imap_conn->get_quota($mailbox);
}

sub set_quota {
    my $server  = shift;
    my $mailbox = $imap_mailbox_prefix . shift;
    my $quota   = shift;

    $imap_conn or _connect($server);
    return $imap_conn->set_quota( $mailbox, $quota );
}

sub list_mailboxes {
    my $server = shift;
    my $filter = shift;

    $imap_conn or _connect($server);
    return $imap_conn->list($filter);
}

END {
    $imap_conn->close();
}

1;


--- set_mailbox_quota_courier.lib DELETED ---

--- create_mailbox_courier.lib DELETED ---

--- delete_mailbox_courier.lib DELETED ---

--- cyrusadmin.pm DELETED ---

--- NEW FILE: mailbox_actions.lib ---
# Wrapper script for all mailbox actions
# Depending on configured imapServerBackend, the appropiate library is loaded

use ISPMan;

$ispman = ISPMan->new() unless $ispman;

# determine imap backend
my $imapServerBackend = $ispman->getConf("imapServerBackend");

# load mailbox functions for this particular type
require "mailbox_actions_$imapServerBackend.lib";

# helper function to convert email into uid notation
sub email2uid {
    my $str = shift;
    ( $uid, $domain ) = split( '@', $str );
    if ($domain) {
        $domain =~ s/\./_/g;
        $str = join '_', ( $uid, $domain );
    }
    return $str;
}

1;


--- create_mailbox_cyrus.lib DELETED ---


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.