summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Unterkircher <unki@srv-vie-puppet.vie.mm-karton.com>2008-11-29 08:02:09 +0100
committerAndreas Unterkircher <unki@netshadow.net>2017-10-19 06:35:29 +0200
commit387d059e8c506da55248480986c7b847a21ab42f (patch)
treec8775768fa110b64a506ac7e689454db1d4053d8
parent5c3848d4a7a512e19a4d3d3346c3f728cdc4532b (diff)
downloadexilog-387d059e8c506da55248480986c7b847a21ab42f.zip
exilog-387d059e8c506da55248480986c7b847a21ab42f.tar.gz
exilog-387d059e8c506da55248480986c7b847a21ab42f.tar.bz2
initial import of exilog-0.5
Signed-off-by: Andreas Unterkircher <unki@srv-vie-puppet.vie.mm-karton.com>
-rw-r--r--cgi/exilog_cgi_queues.pm323
1 files changed, 57 insertions, 266 deletions
diff --git a/cgi/exilog_cgi_queues.pm b/cgi/exilog_cgi_queues.pm
index 4c7a61b..ec018a9 100644
--- a/cgi/exilog_cgi_queues.pm
+++ b/cgi/exilog_cgi_queues.pm
@@ -38,76 +38,11 @@ BEGIN {
sub queues {
_print_Queue_selector();
-
- # Return unless the search type is set.
- return unless (edt($param,'q_qt'));
-
- # Get all data for messages passing the filter settings.
- my $criteria = { 'timestamp' => (edt($param,'q_tr') ? _make_tr() : undef),
- 'server' => (edt($param,'q_sr') ? $param->{'q_sr'} : undef ) };
-
- my $messages = sql_select('queue',[ '*' ], $criteria);
-
- my $prefiltered = [];
- foreach my $message (@{ $messages }) {
- next if (!ina($param->{'q_qw'},'frozen') && (edt($message,'frozen')));
- next if (!ina($param->{'q_qw'},'deferred') && (!edt($message,'frozen')));
- next if (!ina($param->{'q_qw'},'bounce') && ($message->{mailfrom} eq '<>'));
- push @{$prefiltered}, $message;
- }
-
- # Now do the most expensive filtering
- my $regex = dos2rx(($param->{'q_qs'} || '*'));
- my $filtered = [];
- if ($param->{'q_qt'} eq 'addr') {
- MESSAGE: foreach my $message (@{ $prefiltered }) {
- if ($message->{'mailfrom'} =~ /$regex/i) {
- push @{$filtered}, $message;
- next;
- }
- foreach my $addr (split / /, $message->{'recipients_pending'}.' '.$message->{'recipients_delivered'}) {
- if ($addr =~ /$regex/i) {
- push @{$filtered}, $message;
- next MESSAGE;
- }
- }
- }
- }
- elsif ($param->{'q_qt'} eq 'subject') {
- foreach my $message (@{ $prefiltered }) {
- if ($message->{'subject'} =~ /$regex/i) {
- push @{$filtered}, $message;
- }
- }
- }
- elsif ($param->{'q_qt'} eq 'headers') {
- foreach my $message (@{ $prefiltered }) {
- if ($message->{'headers'} =~ /$regex/smi) {
- push @{$filtered}, $message;
- }
- }
- }
- else {
- $filtered = $prefiltered;
- }
-
- print render_queue_table($filtered);
+ my $messages = sql_select('queue',[ '*' ]);
+ print render_queue_table($messages);
};
-sub _make_tr {
- my $str = $q->param('q_tr') || 0;
-
- my $unit = chop $str;
- my $now = time();
- my $units = { '0' => 0,
- 'm' => 60,
- 'h' => 3600,
- 'd' => 86400 };
- return '0 '.($now + $units->{$unit}*$str);
-}
-
-
sub _print_Queue_selector {
print
@@ -116,202 +51,68 @@ sub _print_Queue_selector {
$q->table({-cellspacing=>0,-cellpadding=>4,-border=>0},
$q->Tr(
- $q->td({-align=>"left",-style=>"width: 16px;"},
- $q->img({-src=>$config->{web}->{webroot}."icons/event_type.png"})
+ $q->td({-align=>"left",-valign=>"top",-style=>"width: 16px;"},
+ $q->img({-src=>"icons/server.png"})
),
- $q->td({-align=>"left",-style=>"width: 100px;"},
- "Search Type"
+ $q->td({-align=>"left",-valign=>"top",-style=>"width: 100px;"},
+ "Servers"
),
$q->td({-align=>"left"},
- $q->popup_menu({ -name=>"q_qt",
- -id=>"q_qt",
- -style=>"width: 400px;",
- -values=>[ 'all',
- 'addr',
- 'subject',
- 'headers'
- ],
- -labels=>{ 'all' => "None - show everything",
- 'addr' => "Address",
- 'subject' => "Subject",
- 'headers' => "Headers"
- },
- -default=>(exists($param->{'q_qt'}) ? ($param->{'q_qt'} || 'all') : 'all'),
- -onChange=>"javascript:switch_controls(document.getElementById('q_qt').options[document.getElementById('q_qt').selectedIndex].value);",
- -override=>1})
- )
- )
- )
- .
- $q->span({-id=>"term"},'<!-- Dynamic content target DIV -->').
- $q->div({-id=>"term_hidden",-style=>"visibility: hidden; position: absolute;"},
- $q->table({-cellspacing=>0,-cellpadding=>4,-border=>0},
- $q->Tr(
- $q->td({-align=>"left",-style=>"width: 16px;"},
- $q->img({-src=>$config->{web}->{webroot}."icons/find.png"})
- ),
- $q->td({-align=>"left",-style=>"width: 100px;"},
- "Search Term"
- ),
- $q->td({-align=>"left"},
- $q->textfield( { -name=>"q_qs",
- -style=>"width: 400px;",
- -value=>(exists($param->{'q_qs'}) ? ($param->{'q_qs'} || '') : ''),
- -override=>1 } )
- )
+ eval {
+ my $html ="";
+ my $num = 0;
+ my $groups = {};
+ foreach my $server (sort {$a cmp $b} keys %{ $config->{servers} }) {
+ if (($num % 4) == 0) {
+ $html .= '<tr>';
+ };
+ $html .= $q->td({-width=>"1%",-style=>"padding-right: 4px;"},
+ $q->checkbox( { -name=>"sr",
+ -label=>"",
+ -id=>(edt($config->{servers}->{$server},'group') ? $config->{servers}->{$server}->{group} : "-XXX"),
+ -checked=>(ina($param->{'sr'},$server) ? 'checked' : undef),
+ -override=>1,
+ -onDblClick=>"javascript:sr_off_except(this);",
+ -onChange=>"javascript:sr_changed();",
+ -value=>$server } )
+ ).
+ $q->td({-width=>"1%",-style=>"padding-right: 10px;"},
+ $server
+ );
+ if (($num % 4) == 3) {
+ $html .= '<td>&nbsp;</td></tr>';
+ };
+ $num++;
+ if (edt($config->{servers}->{$server},'group')) {
+ $groups->{$config->{servers}->{$server}->{group}} = '{'.$config->{servers}->{$server}->{group}.'}';
+ };
+ };
+ if (($num % 4) != 0) {
+ $html .= '<td>&nbsp;</td>' x ((4-($num % 4))*2);
+ $html .= '<td>&nbsp;</td></tr>';
+ };
+ $groups->{'-all'} = 'All servers';
+ $groups->{'-custom'} = 'Custom selection';
+ $q->table({-border=>0,-cellpadding=>0,-cellspacing=>0,-width=>"1%"},
+ $q->Tr(
+ $q->td({-colspan=>9,-align=>"left",-style=>"padding-bottom: 4px;"},
+ $q->popup_menu({ -name=>"ss",
+ -id=>"ss",
+ -style=>"width: 400px;",
+ -values=>[ sort {$a cmp $b} keys(%{$groups}) ],
+ -labels=>$groups,
+ -onChange=>"javascript:ss_changed();",
+ -default=>(exists($param->{'ss'}) ? ($param->{'ss'} || '-all') : '-all'),
+ -override=>1})
+ )
+ ),
+ $html
+ );
+ }.($@ ? $@ : "")
)
)
)
.
- $q->span({-id=>"events"},'<!-- Dynamic content target DIV -->').
- $q->div({-id=>"events_hidden",-style=>"visibility: hidden; position: absolute;"},
- $q->table({-cellspacing=>0,-cellpadding=>4,-border=>0},
- $q->Tr(
- $q->td({-align=>"left",-valign=>"top",-style=>"width: 16px;"},
- $q->img({-src=>$config->{web}->{webroot}."icons/address.png"})
- ),
- $q->td({-align=>"left",-valign=>"top",-style=>"width: 100px;"},
- "Status"
- ),
- $q->td({-align=>"left",-style=>"padding:2px 4px 4px 4px;"},
- eval {
- my @where = ( 'frozen',
- 'deferred',
- 'bounce' );
-
- my $labels = { 'frozen' => 'Frozen',
- 'deferred' => 'Deferred',
- 'bounce' => 'Bounce' };
-
- my $html = "";
- my $num = 0;
- foreach my $w (@where) {
- if (($num % 3) == 0) {
- $html .= '<tr>';
- }
- $html .= $q->td({-width=>"1%",-style=>"padding-right: 4px;"},
- $q->checkbox( { -name=>"q_qw",
- -label=>"",
- -checked=>(ina($param->{'q_qw'},$w) ? 'checked' : undef),
- -onDblClick=>"javascript:q_qw_off_except(this);",
- -override=>1,
- -value=>$w } )
- ).
- $q->td({-style=>"padding-right: 10px;"},
- $labels->{$w}
- );
- if (($num % 3) == 2) {
- $html .= '</tr>';
- }
- $num++;
- }
- $q->table({-border=>0,-cellpadding=>0,-cellspacing=>0,-width=>"1%"},
- $html
- );
- }
- )
- )
- )
- )
- .
- $q->span({-id=>"server"},'<!-- Dynamic content target DIV -->').
- $q->div({-id=>"server_hidden",-style=>"visibility: hidden; position: absolute;"},
- $q->table({-cellspacing=>0,-cellpadding=>4,-border=>0},
- $q->Tr(
- $q->td({-align=>"left",-valign=>"top",-style=>"width: 16px;"},
- $q->img({-src=>$config->{web}->{webroot}."icons/server.png"})
- ),
- $q->td({-align=>"left",-valign=>"top",-style=>"width: 100px;"},
- "Servers"
- ),
- $q->td({-align=>"left"},
- eval {
- my $html ="";
- my $num = 0;
- my $groups = {};
- foreach my $server (sort {$a cmp $b} keys %{ $config->{servers} }) {
- if (($num % 4) == 0) {
- $html .= '<tr>';
- }
- $html .= $q->td({-width=>"1%",-style=>"padding-right: 4px;"},
- $q->checkbox( { -name=>"q_sr",
- -label=>"",
- -id=>(edt($config->{servers}->{$server},'group') ? $config->{servers}->{$server}->{group} : "-XXX"),
- -checked=>(ina($param->{'q_sr'},$server) ? 'checked' : undef),
- -override=>1,
- -onDblClick=>"javascript:q_sr_off_except(this);",
- -onChange=>"javascript:q_sr_changed();",
- -value=>$server } )
- ).
- $q->td({-width=>"1%",-style=>"padding-right: 10px;"},
- $server
- );
- if (($num % 4) == 3) {
- $html .= '<td>&nbsp;</td></tr>';
- }
- $num++;
- if (edt($config->{servers}->{$server},'group')) {
- $groups->{$config->{servers}->{$server}->{group}} = '{'.$config->{servers}->{$server}->{group}.'}';
- }
- }
- if (($num % 4) != 0) {
- $html .= '<td>&nbsp;</td>' x ((4-($num % 4))*2);
- $html .= '<td>&nbsp;</td></tr>';
- }
- $groups->{'-all'} = 'All servers';
- $groups->{'-custom'} = 'Custom selection';
- $q->table({-border=>0,-cellpadding=>0,-cellspacing=>0,-width=>"1%"},
- $q->Tr(
- $q->td({-colspan=>9,-align=>"left",-style=>"padding-bottom: 4px;"},
- $q->popup_menu({ -name=>"q_ss",
- -id=>"q_ss",
- -style=>"width: 400px;",
- -values=>[ sort {$a cmp $b} keys(%{$groups}) ],
- -labels=>$groups,
- -onChange=>"javascript:q_ss_changed();",
- -default=>(exists($param->{'q_ss'}) ? ($param->{'q_ss'} || '-all') : '-all'),
- -override=>1})
- )
- ),
- $html
- );
- }
- )
- )
- )
- )
- .
- $q->span({-id=>"time"},'<!-- Dynamic content target DIV -->').
- $q->div({-id=>"time_hidden",-style=>"visibility: hidden; position: absolute;"},
- $q->table({-cellspacing=>0,-cellpadding=>4,-border=>0},
- $q->Tr(
- $q->td({-align=>"left",-style=>"width: 16px;"},
- $q->img({-src=>$config->{web}->{webroot}."icons/timerange.png"})
- ),
- $q->td({-align=>"left",-style=>"width: 100px;"},
- "Age"
- ),
- $q->td({-align=>"left"},
- $q->popup_menu({ -name=>"q_tr",
- -id=>"q_tr",
- -style=>"width: 400px;",
- -values=>[ '0',
- '-5m',
- '-1h',
- '-12h',
- '-1d' ],
- -labels=>{ '0' => 'Any',
- '-5m' => 'Older than 5 minutes',
- '-1h' => 'Older than 1 hour',
- '-12h' => 'Older than 12 hours',
- '-1d' => 'Older than 1 day' },
- -default=>(exists($param->{'q_tr'}) ? $param->{'q_tr'} : '-5m'),
- -override=>1})
- )
- )
- )
- )
- .
'<hr>'
.
$q->table({-cellspacing=>0,-cellpadding=>4,-border=>0,-align=>"center"},
@@ -324,16 +125,6 @@ sub _print_Queue_selector {
)
);
-
- print "\n".
- '
- <script language="JavaScript">
- init_controls();
- switch_controls(document.getElementById("q_qt").options[document.getElementById("q_qt").selectedIndex].value);
- </script>
- '
- ."\n";
-
};
1;