#!/usr/bin/perl -w

# $Id: draw_rr.pl,v 1.1 1996/01/21 08:47:04 hoagland Exp $

# draw_ws.pl, by Jim Hoagland (hoagland@cs) 1/96

# this routine generates the routing rule modification page for the ARPA IDS
# demo GUI
# its first argument indicates which working set this is for
# outputs HTML to STDOUT

require 5.000;

require '/pkg/www/arpa/secret/cgi-bin/gui-helper.pl';
require '/pkg/www/arpa/secret/cgi-bin/network-help.pl';


sub query_for_rr {
  my $host= shift;
  &setup_udp_socket($reply_port=&get_responce_port); # QS is socket
  &send_logd_query($host,$reply_port,'GET_RULES');

  # responce comes back as SCL on same QS scoket
  $from = recv (QS, $request, $max_length, 0); 
  #($family, $newport, $src_addr) = unpack($sockaddr, $from);
  #$(@src_addr) = unpack('C4', $src_addr);
  #print STDERR "!!! RECEIVED from <@src_addr>:$newport !\n" if $debug > 2;
  my(%rec) = &de_scl_msg_format ($request);   # SCL FORMAT
  return split('\n',$rec{'rules'});
#  return ('1 => |/pkg/arpa/demo.0/audb2','$priority =~ /^urgent$/ && !defined($dqy)   ==> @$IDS_Manager:$urgent_recv_port');
}

#--------

sub draw_rr {
  my($state,$ws)= @_;
  my($host)= ($state->hosts_in_set($ws))[0];
  my(@host_rr)= $state->add_routing_rules(&query_for_rr($host));
  $state->store;
  my %hrr;
  grep($hrr{$_}++,@host_rr);

  my $checklist= '';
  foreach (sort $state->routing_rules) {
    $checklist.= "<DT><CODE><INPUT TYPE=checkbox NAME=\"".$state->routing_rule_id($_)."\"";
    if ($hrr{$_}) { # in rules from host
      $checklist.= " CHECKED><STRONG> $_</STRONG></CODE>\n";
    } else {
      $checklist.= ">$_</CODE>\n";
    }
  }

  print "Content-type:  text/html\n\n";
  &output_instantiated_file('/pkg/www/arpa/secret/gui/html-src/show_rr.html',*STDOUT,
			    '<!!! Put WS here !!!>',$ws,
			    '<!!! Put Host here !!!>',$host,
			    '<!!! Put rr checklist here !!!>',$checklist,
			    '<!!! Insert WS options Here !!!>',&ws_options($state));
}
1;
