diff options
author | Tom Kistner <tom@duncanthrax.net> | 2008-12-04 11:24:17 +0100 |
---|---|---|
committer | Andreas Unterkircher <unki@netshadow.at> | 2008-12-12 23:18:56 +0100 |
commit | f8a8bc98f9a77d24e0fce2abd73c9512bcf26f2d (patch) | |
tree | 84af841fdb450b60d54e590ec02b9ddb0e671cba /cgi/exilog_cgi_messages.pm | |
parent | a35e1469841bfbc7e58b66dcefb108993bc4b494 (diff) | |
download | exilog-f8a8bc98f9a77d24e0fce2abd73c9512bcf26f2d.zip exilog-f8a8bc98f9a77d24e0fce2abd73c9512bcf26f2d.tar.gz exilog-f8a8bc98f9a77d24e0fce2abd73c9512bcf26f2d.tar.bz2 |
Forward unreleased changes
- IPv6 address parsing
- Some queue management
- Better SQL quoting
- More misc stuff
Signed-off-by: Tom Kistner <tom@duncanthrax.net>
Diffstat (limited to 'cgi/exilog_cgi_messages.pm')
-rw-r--r-- | cgi/exilog_cgi_messages.pm | 69 |
1 files changed, 40 insertions, 29 deletions
diff --git a/cgi/exilog_cgi_messages.pm b/cgi/exilog_cgi_messages.pm index 9556771..bbcb062 100644 --- a/cgi/exilog_cgi_messages.pm +++ b/cgi/exilog_cgi_messages.pm @@ -62,7 +62,7 @@ sub _select_ident { } my $criteria = { 'timestamp' => (edt($param,'tr') ? _make_tr() : undef), 'server' => (edt($param,'sr') ? $param->{'sr'} : undef ), - 'host_ident' => $param->{'qs'} }; + 'host_ident' => dos2sql($param->{'qs'}) }; # Only messages table return sql_select( 'messages', [ 'server','message_id','timestamp' ], $criteria ); }; @@ -72,7 +72,7 @@ sub _select_msgid { return []; } # Only messages table - return sql_select( 'messages', [ 'server','message_id','timestamp' ], { 'msgid' => $param->{'qs'} } ); + return sql_select( 'messages', [ 'server','message_id','timestamp' ], { 'msgid' => dos2sql($param->{'qs'}) } ); }; sub _select_message_id { @@ -82,13 +82,14 @@ sub _select_message_id { my @results = (); my @tables = ( 'deliveries','errors','unknown','deferrals','messages','rejects','queue' ); - my $criteria = { 'message_id' => $param->{'qs'} }; + my $criteria = { 'message_id' => dos2sql($param->{'qs'}) }; foreach my $table (@tables) { push @results, @{ sql_select( $table, [ 'server','message_id','timestamp' ], $criteria ) }; }; # check bounce parent field too - push @results, @{ sql_select( 'messages', [ 'server','message_id','timestamp' ], { 'bounce_parent' => $param->{'qs'} } ) }; + push @results, @{ sql_select( 'messages', [ 'server','message_id','timestamp' ], + { 'bounce_parent' => dos2sql($param->{'qs'}) } ) }; return \@results; }; @@ -102,25 +103,25 @@ sub _select_addr { my @queries; push @queries, { 'table' => 'messages', - 'criteria' => { 'mailfrom' => $param->{'qs'} } }, + 'criteria' => { 'mailfrom' => dos2sql($param->{'qs'}) } }, { 'table' => 'rejects', - 'criteria' => { 'mailfrom' => $param->{'qs'} } } + 'criteria' => { 'mailfrom' => dos2sql($param->{'qs'}) } } if (($p eq 'sender') || ($p eq 'all')); push @queries, { 'table' => 'rejects', - 'criteria' => { 'rcpt' => $param->{'qs'} } }, + 'criteria' => { 'rcpt' => dos2sql($param->{'qs'}) } }, { 'table' => 'deliveries', - 'criteria' => { 'rcpt' => $param->{'qs'} } }, + 'criteria' => { 'rcpt' => dos2sql($param->{'qs'}) } }, { 'table' => 'deliveries', - 'criteria' => { 'rcpt_final' => $param->{'qs'} } }, + 'criteria' => { 'rcpt_final' => dos2sql($param->{'qs'}) } }, { 'table' => 'deferrals', - 'criteria' => { 'rcpt' => $param->{'qs'} } }, + 'criteria' => { 'rcpt' => dos2sql($param->{'qs'}) } }, { 'table' => 'deferrals', - 'criteria' => { 'rcpt_final' => $param->{'qs'} } }, + 'criteria' => { 'rcpt_final' => dos2sql($param->{'qs'}) } }, { 'table' => 'errors', - 'criteria' => { 'rcpt' => $param->{'qs'} } }, + 'criteria' => { 'rcpt' => dos2sql($param->{'qs'}) } }, { 'table' => 'errors', - 'criteria' => { 'rcpt_final' => $param->{'qs'} } } + 'criteria' => { 'rcpt_final' => dos2sql($param->{'qs'}) } } if (($p eq 'rcpt') || ($p eq 'all')); @@ -145,22 +146,22 @@ sub _select_host { } my @queries; - if ($param->{'qs'} =~ /^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/) { - # IPv4 address + if ($param->{'qs'} =~ /^[0-9A-Fa-f.:]+$/) { + # IPv4 or IPv6 address push @queries, { 'table' => 'messages', - 'criteria' => { 'host_addr' => $param->{'qs'} } }, + 'criteria' => { 'host_addr' => dos2sql($param->{'qs'}) } }, { 'table' => 'rejects', - 'criteria' => { 'host_addr' => $param->{'qs'} } } + 'criteria' => { 'host_addr' => dos2sql($param->{'qs'}) } } if (($p eq 'incoming') || ($p eq 'all')); push @queries, { 'table' => 'deliveries', - 'criteria' => { 'host_addr' => $param->{'qs'} } }, + 'criteria' => { 'host_addr' => dos2sql($param->{'qs'}) } }, { 'table' => 'deferrals', - 'criteria' => { 'host_addr' => $param->{'qs'} } }, + 'criteria' => { 'host_addr' => dos2sql($param->{'qs'}) } }, { 'table' => 'errors', - 'criteria' => { 'host_addr' => $param->{'qs'} } }, + 'criteria' => { 'host_addr' => dos2sql($param->{'qs'}) } }, { 'table' => 'unknown', - 'criteria' => { 'line' => '%'.$param->{'qs'}.'%' } } + 'criteria' => { 'line' => '%'.dos2sql($param->{'qs'}).'%' } } if (($p eq 'outgoing') || ($p eq 'all')); } @@ -210,24 +211,24 @@ sub _select_host { $suffix_wc = '%' if ($param->{'qs'} !~ /\%$/); push @queries, { 'table' => 'messages', - 'criteria' => { 'host_helo' => $param->{'qs'} } }, + 'criteria' => { 'host_helo' => dos2sql($param->{'qs'}) } }, { 'table' => 'messages', - 'criteria' => { 'host_rdns' => $param->{'qs'} } }, + 'criteria' => { 'host_rdns' => dos2sql($param->{'qs'}) } }, { 'table' => 'rejects', - 'criteria' => { 'host_helo' => $param->{'qs'} } }, + 'criteria' => { 'host_helo' => dos2sql($param->{'qs'}) } }, { 'table' => 'rejects', - 'criteria' => { 'host_rdns' => $param->{'qs'} } } + 'criteria' => { 'host_rdns' => dos2sql($param->{'qs'}) } } if (($p eq 'incoming') || ($p eq 'all')); push @queries, { 'table' => 'deliveries', - 'criteria' => { 'host_dns' => $param->{'qs'} } }, + 'criteria' => { 'host_dns' => dos2sql($param->{'qs'}) } }, { 'table' => 'deferrals', - 'criteria' => { 'host_dns' => $param->{'qs'} } }, + 'criteria' => { 'host_dns' => dos2sql($param->{'qs'}) } }, { 'table' => 'errors', - 'criteria' => { 'host_dns' => $param->{'qs'} } }, + 'criteria' => { 'host_dns' => dos2sql($param->{'qs'}) } }, { 'table' => 'unknown', # the blank makes sure that we do not match domains in addresses - 'criteria' => { 'line' => $prefix_wc.' '.$param->{'qs'}.$suffix_wc } } + 'criteria' => { 'line' => $prefix_wc.' '.dos2sql($param->{'qs'}).$suffix_wc } } if (($p eq 'outgoing') || ($p eq 'all')); }; @@ -525,6 +526,16 @@ sub _print_Messages_selector { _make_tr(); + # Calendar popup DIVs + print "\n". + ' + <script language="JavaScript"> + var cal1x = new CalendarPopup("caldiv1x"); + var cal2x = new CalendarPopup("caldiv2x"); + </script> + ' + ."\n"; + print $q->div({-class=>"top_spacer"}, $q->div({-align=>"left",-style=>"padding: 10px; border: 1px solid black; background: #eeeeee;"}, |