Listing 8 Query page section of the reporting script
# Create a new CGI object
$q = new CGI;
# Display query page
print $q->header(-type=>'text/html'); # HTTP header
start_page('Query Page','Query Page');
print $q->start_form(-action=>$q->url(-path_info=>1)),
# Make a two-column table. On the left, the query fields.
# On the right, some display option fields.
$q->start_table({-border=>'0',-width=>'100%'}),
$q->start_Tr,
$q->start_td({-width=>'50%'}),
# User selection scrolling list
$q->p('Select one or more users: '),
$q->scrolling_list(-name=>'users',
-values=>\@userlist,
-default=>$userlist[0],
-size=>7,
-multiple=>true
),
# Domain match string text field
$q->p("Enter a destination string to match (slow):"),
$q->textfield('domain_filter'),
# URL path match string text field
$q->p("Enter a URL path string to match (slow):"),
$q->textfield('url_filter'),
# Start date drop-down menus
$q->p("Start date: "),
$q->popup_menu(-name=>'beg_month',
-values=>\@months,
-default=>$thismonth),
$q->popup_menu(-name=>'beg_day',
-values=>\@days,
-default=>1),
$q->popup_menu(-name=>'beg_year',
-values=>\@years,
-default=>$thisyear),
" at ",
$q->popup_menu(-name=>'beg_hour',
-values=>\@hours,
-default=>0),
":",
$q->popup_menu(-name=>'beg_minute',
-values=>\@minutes,
-default=>0),
" o\'clock",
# End date drop-down menus
$q->p("End date: "),
$q->popup_menu(-name=>'end_month',
-values=>\@months,
-default=>$thismonth),
$q->popup_menu(-name=>'end_day',
-values=>\@days,
-default=>$thisday),
$q->popup_menu(-name=>'end_year',
-values=>\@years,
-default=>$thisyear),
" at ",
$q->popup_menu(-name=>'end_hour',
-values=>\@hours,
-default=>$thishour),
":",
$q->popup_menu(-name=>'end_minute',
-values=>\@minutes,
-default=>$thisminute),
" o\'clock",
$q->p;
# Huck in some hidden fields
$q->delete('target'); # Delete the "target" param from last POST
print $q->hidden('target','query_report'), # Where to go next
$q->hidden('whence','query_page'), # What page we're coming from
$q->hidden('offset','0'), # What page to start on (1)
# Submit and reset buttons
$q->submit,
$q->reset,
# Now start the right column for display preferences
$q->end_td,
$q->start_td({-width=>'50%'}),
# Display options follow:
$q->p('Preferences:'),
$q->popup_menu(-name=>'num_lines',
-values=>[10,25,50,100,250,500],
-default=>100),
" results per page",$q->br,
$q->checkbox(-name=>'show_date',
-checked=>1,
-label=>"show the Date column"),$q->br,
$q->checkbox(-name=>'show_firewall',
-checked=>1,
-label=>'show the Firewall column'),$q->br,
$q->checkbox(-name=>'show_user',
-checked=>1,
-label=>'show the User column'),$q->br,
$q->checkbox(-name=>'show_source',
-checked=>1,
-label=>'show the Source IP column'),$q->br,
$q->checkbox(-name=>'show_dest',
-checked=>1,
-label=>'show the Domain column'),$q->br,
$q->checkbox(-name=>'show_url',
-checked=>1,
-label=>'show the URL Path column'),$q->br,
$q->hr;
# Ask how to sort this stuff
%radio_labels=('ASC'=>'Ascending','DESC'=>'Descending');
%column_labels=(
'count'=>'Count',
'datetime'=>'Date',
'firewall'=>'Firewall',
'username'=>'Username',
'sourceip'=>'Source IP',
'domain'=>'Domain',
'url'=>'URL Path');
print $q->p('Sort by:'),
$q->start_table, $q->start_Tr, $q->start_td,
$q->popup_menu(-name=>'sort1',
-values=>['count','datetime','firewall','username','sourceip','domain','url'],
-labels=>\%column_labels,
-default=>'count'),
$q->end_td, $q->start_td,
$q->radio_group(-name=>'order1',
-values=>['ASC','DESC'],
-default=>'DESC',
-labels=>\%radio_labels),
$q->end_td, $q->end_Tr, $q->end_table,
$q->p('Then by:'),
$q->start_table, $q->start_Tr, $q->start_td,
$q->popup_menu(-name=>'sort2',
-values=>['','count','datetime','firewall','username','sourceip','domain','url'],
-labels=>\%column_labels,
-default=>''),
$q->end_td, $q->start_td,
$q->radio_group(-name=>'order2',
-values=>['ASC','DESC'],
-default=>'ASC',
-labels=>\%radio_labels),
$q->end_td, $q->end_Tr, $q->end_table,
$q->p('Then by:'),
$q->start_table, $q->start_Tr, $q->start_td,
$q->popup_menu(-name=>'sort3',
-values=>['','count','datetime','firewall','username','sourceip','domain','url'],
-labels=>\%column_labels,
-default=>''),
$q->end_td, $q->start_td,
$q->radio_group(-name=>'order3',
-values=>['ASC','DESC'],
-default=>'ASC',
-labels=>\%radio_labels),
$q->end_td, $q->end_Tr, $q->end_table,
# End the right column
$q->end_td,
$q->end_Tr,
$q->end_table,
# End the page
$q->end_form;
end_page;
|