#!/usr/bin/perl
# 
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1
# 
# The contents of this file are subject to the Mozilla Public License
# Version 1.1 ("License"); you may not use this file except in
# compliance with the License. You may obtain a copy of the License at
# http://www.zimbra.com/license
# 
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
# 
# The Original Code is: Zimbra Collaboration Suite Server.
# 
# The Initial Developer of the Original Code is Zimbra, Inc.
# Portions created by Zimbra are Copyright (C) 2006 Zimbra, Inc.
# All Rights Reserved.
# 
# Contributor(s):
# 
# ***** END LICENSE BLOCK *****
# 

use strict;

if ($#ARGV != 2) {
    print STDERR "Usage: zmqaction action queuename queuid1[,queueid2]+\n";
    exit(1);
}

my $action = $ARGV[0];
my $queue = $ARGV[1];
my $idarg = $ARGV[2];

my $paction;
if ($action eq "hold") {
    $paction = "-h";
} elsif ($action eq "release") {
    $paction = "-H";
} elsif ($action eq "requeue") {
    $paction = "-r";
} elsif ($action eq "delete") {
    $paction = "-d";
} else {
    print STDERR "ERROR: unknown action $action\n";
    exit(1);
}


if ($queue !~ /^(incoming|active|deferred|hold|maildrop|corrupt)$/) {
    print STDERR "ERROR: unknown queue $queue\n";
    exit(1);
}

if ($idarg eq "ALL") {
    system("sudo /opt/zimbra/postfix/sbin/postsuper $paction ALL $queue");
} else {
    my @ids = split(',', $idarg);
    my $command = "sudo /opt/zimbra/postfix/sbin/postsuper $paction - $queue";
    if (open(POSTSUPER, "| $command")) {
        foreach my $id (@ids) {
            print POSTSUPER $id, "\n";
        }
        close(POSTSUPER);
    } else {
        print STDERR "ERROR: command $command: $!\n";
        exit(1);
    }
}
