package SrvMngr::Controller::Qmh;
#----------------------------------------------------------------------
# heading : System
# description : E-Mail queue management
# navigation : 4000 550
# menu : A
#
# name : qmhandle, method : get, url : /qmh, ctlact : qmh#main
# name : qmhandle2, method : post, url : /qmh, ctlact : qmh#do_update
# name : qmhandled, method : get, url : /qmh2, ctlact : qmh#do_update
# routes : end
# Copyright (C) 2005/2008 Peter Schubert, SACO Software and Consulting GmbH
#----------------------------------------------------------------------
use strict;
use warnings;
use Mojo::Base 'Mojolicious::Controller';
use esmith::FormMagick qw(gen_locale_date_string);
use esmith::ConfigDB;
use Locale::gettext;
use SrvMngr::I18N;
use SrvMngr qw(theme_list init_session);
our $cdb = esmith::ConfigDB->open() || die 'Cannot open configuration base';
sub main {
my $c = shift;
$c->app->log->info($c->log_req);
my %qmh_datas = ();
my $title = $c->l('qmh_QMH_TITLE');
$qmh_datas{'trt'} = 'LST';
$qmh_datas{'altq'} = 0;
$c->stash( title => $title, qmh_datas => \%qmh_datas );
$c->render('qmh');
};
sub do_update {
my $c = shift;
$c->app->log->info($c->log_req);
my %qmh_datas = ();
my $result = "";
my $report_type = $c->param('Report_type');
my $trt = $c->param('trt');
$qmh_datas{'trt'} = $trt;
my $altq = $c->param('altq');
$qmh_datas{'altq'} = $altq;
if ($trt eq 'LST') {
if ($report_type =~ /^(\S+)$/) {
$report_type = $1;
} else {
$result = $c->l('INVALID_REPORT_TYPE') . " : $report_type";
$report_type = undef;
}
$altq = 0;
my $function = $report_type || '';
if ($function =~ s/^alt-//) {
$altq = 1;
}
$qmh_datas{'altq'} = $altq;
if ($function eq 'list-queues') {
$result = showListQueues ($c, $altq);
} elsif ($function eq 'list-local-queue') {
$result = showListLocalQueue ($c, $altq);
} elsif ($function eq 'list-remote-queue') {
$result = showListRemoteQueue ($c, $altq);
} elsif ($function eq 'resend') {
$result = resend($c, $altq);
}
$qmh_datas{'trt'} = 'REP';
}
if ($trt eq 'REP') {
$c->redirect_to('/qmh');
}
if ($trt eq 'MSG') {
my $msgid = $c->param('msgid');
$result = $c->render_to_string(inline => showDeleteMessageNumber($c, $msgid, $altq, $report_type)) if $msgid;
$qmh_datas{'msgid'} = $msgid;
}
if ($trt eq 'DEL') {
my $msgid = $c->param('msgid');
$result = $c->render_to_string(inline => deleteMessageNumber($c, $msgid, $altq, $report_type)) if $msgid;
my $message = $c->l('qmh_DELETE') . '
' . $msgid;
#$c->app->log->info($message.' '.$result);
}
my $title = $c->l('qmh_QMH_TITLE');
$c->stash( title => $title, qmh_datas => \%qmh_datas, modul => $result );
$c->render('qmh');
};
sub reportType_list {
my $c = shift;
my $rec = $cdb->get('altqmail');
my $altqmail = ($cdb->get('altqmail')->value || 0) if $rec;
return [[ $c->l('qmh_LIST_QUEUE') => 'list-queues' ],
[ $c->l('qmh_LIST_LOCAL_QUEUE') => 'list-local-queue' ],
[ $c->l('qmh_LIST_REMOTE_QUEUE') => 'list-remote-queue' ],
[ $c->l('qmh_RESEND_QUEUE') => 'resend' ]]
unless $altqmail;
return [[ $c->l('qmh_LIST_QUEUE') => 'list-queues' ],
[ $c->l('qmh_LIST_LOCAL_QUEUE') => 'list-local-queue' ],
[ $c->l('qmh_LIST_REMOTE_QUEUE') => 'list-remote-queue' ],
[ $c->l('qmh_RESEND_QUEUE') => 'resend' ],
[ "altqmail: ". $c->l('qmh_LIST_QUEUE') => 'alt-list-queues' ],
[ "altqmail: ". $c->l('qmh_LIST_LOCAL_QUEUE') => 'alt-list-local-queue' ],
[ "altqmail: ". $c->l('qmh_LIST_REMOTE_QUEUE') => 'alt-list-remote-queue' ],
[ "altqmail: ". $c->l('qmh_RESEND_QUEUE') => 'alt-resend' ]];
}
#------------------------------------------------------------
# subroutine to showListQueues
#------------------------------------------------------------
sub showListQueues {
my ($c, $altq) = @_;
my $out = '';
my $reporttype = 'list-queues';
my $opt = ($altq ? 'altqmail: ' : '');
$out .= sprintf("
"; $out .= "$MailQueues"; $out .= sprintf ""; $out .= sprintf ""; return $out; } #------------------------------------------------------------ # subroutine to showListLocalQueue #------------------------------------------------------------ sub showListLocalQueue { my ($c, $altq) = @_; my $out = ''; my $reporttype = 'list-local-queue'; my $opt = ($altq ? 'altqmail: ' : ''); $out .= sprintf("
"; $out .= "$LocalQueue"; $out .= sprintf ""; $out .= sprintf ""; return $out; } #------------------------------------------------------------ # subroutine to showListRemoteQueue #------------------------------------------------------------ sub showListRemoteQueue { my ($c, $altq) = @_; my $out = ''; my $reporttype = 'list-remote-queue'; my $opt = ($altq ? 'altqmail: ' : ''); $out .= sprintf("
"; $out .= "$RemoteQueue"; $out .= sprintf ""; $out .= sprintf ""; return $out; } #------------------------------------------------------------ # subroutine to send ALARM to qmail #------------------------------------------------------------ sub resend { my ($c, $altq) = @_; my $out = ''; my $reporttype = 'resend'; my $opt = ($altq ? 'altqmail: ' : ''); $out .= sprintf("
"; $out .= "$Res"; $out .= sprintf ""; $out .= sprintf ""; $out .= sprintf "
"; $out .= ""; $out .= sprintf ""; $out .= sprintf ""; return $out; } sub deleteMessageNumber { my ($c, $msgid, $altq, $reporttype) = @_; if ($msgid =~ /^(\d+)$/) { $msgid = $1; } else { $msgid = undef; } my $out = ''; my $opt = ($altq ? "-X -d$msgid" : "-d$msgid"); my $Output = `/usr/bin/qmHandle $opt`; $out .= sprintf "
"; $out .= "$Output"; $out .= sprintf ""; $out .= sprintf ""; return $out; } 1;