#!/usr/local/bin/perl
# index.cgi
# Display a list of known services, built from those handled by inetd and
# from the services file
require './inetd-lib.pl';
&ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1, 0,
&help_search_link("inetd", "man", "doc", "howto"));
# break down into rpc and internet services
$j = 0;
foreach $i (&list_inets()) {
if ($i->[2]) {
# rpc service
$i->[3] =~ /^(\S+)\//;
if ($i->[1]) { $rpc_active{$1} = $j; }
else { $rpc_disabled{$1} = $j; }
}
else {
# internet service
if ($i->[1]) { $int_active{$i->[3],$i->[5]} = $j; }
else { $int_disabled{$i->[3],$i->[5]} = $j; }
}
$j++;
}
print "
\n";
print &ui_hr();
print "$text{'index_newrpc'}.
\n";
print "\n";
print " $text{'index_rpc'} |
\n";
print " \n";
$i = 0;
@rlist = &list_rpcs();
if ($config{'sort_mode'} == 1) {
@rlist = sort { uc($a->[1]) cmp uc($b->[1]) } @rlist;
}
elsif ($config{'sort_mode'} == 2) {
@rlist = sort { ($rpc_active{$b->[1]} ? 2 :
$rpc_disabled{$b->[1]} ? 1 : 0) <=>
($rpc_active{$a->[1]} ? 2 :
$rpc_disabled{$a->[1]} ? 1 : 0) } @rlist;
}
foreach $r (@rlist) {
if ($i%4 == 0) { print "\n"; }
$ra = $rpc_active{$r->[1]};
$rd = $rpc_disabled{$r->[1]};
$ranum = $rpc_active{$r->[2]};
$rdnum = $rpc_disabled{$r->[2]};
if ($ra =~ /\d/) { $op = ""; $cl = ""; $rp = $ra; }
elsif ($ranum =~ /\d/) { $op = ""; $cl = ""; $rp = $ranum; }
elsif ($rd =~ /\d/) { $op = ""; $cl = ""; $rp = $rd; }
elsif ($rdnum =~ /\d/) { $op = ""; $cl = ""; $rp = $rdnum; }
else { $op = $cl = $rp = ""; }
print "$op";
print "[4]&ipos=$rp\">",
&html_escape($r->[1]),"$cl | \n";
if ($i++%4 == 3) { print " \n"; }
}
print " |
\n";
print "$text{'index_newrpc'}. \n";
print &ui_hr();
print "
\n";
&ui_print_footer("/", $text{'index'});