#!/usr/local/bin/perl # open_files.cgi # Display files and network connections that a process has open require './proc-lib.pl'; &ReadParse(); &ui_print_header(undef, $text{'open_title'}, "", "open_proc"); %pinfo = &process_info($in{'pid'}); &can_edit_process($pinfo{'user'}) || &error($text{'edit_ecannot'}); if (!%pinfo) { print "$text{'edit_gone'}

\n"; &ui_print_footer("", $text{'index_return'}); exit; } print "",&text('open_proc', "$pinfo{'args'}", $in{'pid'}), "

\n"; # Show open files @files = &find_process_files($in{'pid'}); print "\n"; print "\n"; print "
$text{'open_header1'}
\n"; print " ", " ", " ", " ", "\n"; foreach $f (@files) { print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; } print "
$text{'open_fd'}$text{'open_type'}$text{'open_size'}$text{'open_inode'}$text{'open_file'}
",$f->{'fd'} eq 'cwd' ? $text{'open_cwd'} : $f->{'fd'} eq 'rtd' ? $text{'open_rtd'} : $f->{'fd'} eq 'txt' ? $text{'open_txt'} : $f->{'fd'} eq 'mem' ? $text{'open_mem'} : $f->{'fd'},"",$f->{'type'} =~ /^v?dir$/ ? $text{'open_dir'} : $f->{'type'} =~ /^v?reg$/ ? $text{'open_reg'} : $f->{'type'} =~ /^v?chr$/ ? $text{'open_chr'} : $f->{'type'} =~ /^v?blk$/ ? $text{'open_blk'} : $f->{'type'},"",$f->{'size'} || "
","
$f->{'inode'}$f->{'file'}

\n"; # Show network connections @nets = &find_process_sockets($in{'pid'}); if (@nets) { print "\n"; print "\n"; print "
$text{'open_header2'}
\n"; print " ", " ", " ", "\n"; foreach $n (@nets) { print "\n"; print "\n"; print "\n"; print "\n"; if ($n->{'listen'} && $n->{'lhost'} eq '*') { print "\n"; } elsif ($n->{'listen'}) { print "\n"; } elsif ($n->{'rhost'}) { print "\n"; print "\n"; print "\n"; print "\n"; } else { print "\n"; } print "\n"; } print "
$text{'open_type'}$text{'open_proto'}$text{'open_fd'}$text{'open_desc'}
",uc($n->{'type'}),"",uc($n->{'proto'}),"",$n->{'fd'},"", &text('open_listen1', "$n->{'lport'}"), "", &text('open_listen2', "$n->{'lhost'}", "$n->{'lport'}"),"$n->{'lhost'}:$n->{'lport'}->$n->{'rhost'}:$n->{'rport'}$n->{'state'}", &text('open_recv', "$n->{'lhost'}", "$n->{'lport'}"),"
\n"; } &ui_print_footer("edit_proc.cgi?$in{'pid'}", $text{'edit_return'}, "", $text{'index_return'});