diff options
author | Andreas Unterkircher <unki@srv-vie-puppet.vie.mm-karton.com> | 2008-11-29 08:02:09 +0100 |
---|---|---|
committer | Andreas Unterkircher <unki@netshadow.net> | 2017-10-19 06:35:29 +0200 |
commit | 387d059e8c506da55248480986c7b847a21ab42f (patch) | |
tree | c8775768fa110b64a506ac7e689454db1d4053d8 | |
parent | 5c3848d4a7a512e19a4d3d3346c3f728cdc4532b (diff) | |
download | exilog-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.pm | 323 |
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> </td></tr>'; + }; + $num++; + if (edt($config->{servers}->{$server},'group')) { + $groups->{$config->{servers}->{$server}->{group}} = '{'.$config->{servers}->{$server}->{group}.'}'; + }; + }; + if (($num % 4) != 0) { + $html .= '<td> </td>' x ((4-($num % 4))*2); + $html .= '<td> </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> </td></tr>'; - } - $num++; - if (edt($config->{servers}->{$server},'group')) { - $groups->{$config->{servers}->{$server}->{group}} = '{'.$config->{servers}->{$server}->{group}.'}'; - } - } - if (($num % 4) != 0) { - $html .= '<td> </td>' x ((4-($num % 4))*2); - $html .= '<td> </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; |