/
usr
/
share
/
usermin
/
proc
/
/usr/share/usermin/proc
mkdir
upload
Name
Size
Mode
Actions
help/
-
0755
rm
images/
-
0755
rm
lang/
-
0755
rm
config-aix
70
0644
edit
dl
rm
config-ALL-linux
71
0644
edit
dl
rm
config-freebsd
73
0644
edit
dl
rm
config-hpux
70
0644
edit
dl
rm
config-irix
70
0644
edit
dl
rm
config-macos
71
0644
edit
dl
rm
config-netbsd
73
0644
edit
dl
rm
config-openbsd
73
0644
edit
dl
rm
config-openserver
70
0644
edit
dl
rm
config-osf1
69
0644
edit
dl
rm
config-qnx
71
0644
edit
dl
rm
config-solaris
70
0644
edit
dl
rm
config-unixware
70
0644
edit
dl
rm
config.info
449
0644
edit
dl
rm
config.info.ca
545
0644
edit
dl
rm
config.info.de
538
0644
edit
dl
rm
config.info.es
341
0644
edit
dl
rm
config.info.fr
382
0644
edit
dl
rm
config.info.hu
436
0644
edit
dl
rm
config.info.nl
524
0644
edit
dl
rm
config.info.no
512
0644
edit
dl
rm
config.info.pl
439
0644
edit
dl
rm
config.info.ru
744
0644
edit
dl
rm
config.info.sv
320
0644
edit
dl
rm
config.info.tr
486
0644
edit
dl
rm
config.info.zh
253
0644
edit
dl
rm
config.info.zh_TW
303
0644
edit
dl
rm
edit_proc.cgi
4271
0755
edit
dl
rm
freebsd-lib.pl
5789
0755
edit
dl
rm
hpux-lib.pl
2836
0755
edit
dl
rm
index.cgi
466
0755
edit
dl
rm
index_cpu.cgi
1342
0755
edit
dl
rm
index_run.cgi
1092
0755
edit
dl
rm
index_search.cgi
7063
0755
edit
dl
rm
index_size.cgi
1452
0755
edit
dl
rm
index_tree.cgi
1536
0755
edit
dl
rm
index_user.cgi
1135
0755
edit
dl
rm
kill_proc.cgi
738
0755
edit
dl
rm
kill_proc_list.cgi
859
0755
edit
dl
rm
linux-lib.pl
24345
0755
edit
dl
rm
log_parser.pl
1077
0755
edit
dl
rm
macos-lib.pl
6210
0755
edit
dl
rm
module.info
286
0644
edit
dl
rm
module.info.af
0
0644
edit
dl
rm
module.info.af.auto
144
0644
edit
dl
rm
module.info.ar
0
0644
edit
dl
rm
module.info.ar.auto
212
0644
edit
dl
rm
module.info.be
0
0644
edit
dl
rm
module.info.be.auto
254
0644
edit
dl
rm
module.info.bg
0
0644
edit
dl
rm
module.info.bg.auto
265
0644
edit
dl
rm
module.info.ca
31
0644
edit
dl
rm
module.info.ca.auto
147
0644
edit
dl
rm
module.info.cs
27
0644
edit
dl
rm
module.info.cs.auto
139
0644
edit
dl
rm
module.info.da
0
0644
edit
dl
rm
module.info.da.auto
138
0644
edit
dl
rm
module.info.de
96
0644
edit
dl
rm
module.info.el
0
0644
edit
dl
rm
module.info.el.auto
292
0644
edit
dl
rm
module.info.es
0
0644
edit
dl
rm
module.info.es.auto
161
0644
edit
dl
rm
module.info.eu
0
0644
edit
dl
rm
module.info.eu.auto
144
0644
edit
dl
rm
module.info.fa
0
0644
edit
dl
rm
module.info.fa.auto
278
0644
edit
dl
rm
module.info.fi
0
0644
edit
dl
rm
module.info.fi.auto
186
0644
edit
dl
rm
module.info.fr
34
0644
edit
dl
rm
module.info.he
0
0644
edit
dl
rm
module.info.he.auto
189
0644
edit
dl
rm
module.info.hr
0
0644
edit
dl
rm
module.info.hr.auto
156
0644
edit
dl
rm
module.info.hu
25
0644
edit
dl
rm
module.info.hu.auto
131
0644
edit
dl
rm
module.info.it
0
0644
edit
dl
rm
module.info.it.auto
166
0644
edit
dl
rm
module.info.ja
37
0644
edit
dl
rm
module.info.ja.auto
196
0644
edit
dl
rm
module.info.ko
0
0644
edit
dl
rm
module.info.ko.auto
197
0644
edit
dl
rm
module.info.lt
0
0644
edit
dl
rm
module.info.lt.auto
160
0644
edit
dl
rm
module.info.lv
0
0644
edit
dl
rm
module.info.lv.auto
152
0644
edit
dl
rm
module.info.ms
0
0644
edit
dl
rm
module.info.ms.auto
155
0644
edit
dl
rm
module.info.mt
0
0644
edit
dl
rm
module.info.mt.auto
160
0644
edit
dl
rm
module.info.nl
27
0644
edit
dl
rm
module.info.no
28
0644
edit
dl
rm
module.info.no.auto
110
0644
edit
dl
rm
module.info.pl
0
0644
edit
dl
rm
module.info.pl.auto
155
0644
edit
dl
rm
module.info.pt
0
0644
edit
dl
rm
module.info.pt.auto
159
0644
edit
dl
rm
module.info.pt_BR
0
0644
edit
dl
rm
module.info.pt_BR.auto
168
0644
edit
dl
rm
module.info.ro
0
0644
edit
dl
rm
module.info.ro.auto
167
0644
edit
dl
rm
module.info.ru
0
0644
edit
dl
rm
module.info.ru.auto
266
0644
edit
dl
rm
module.info.sk
0
0644
edit
dl
rm
module.info.sk.auto
154
0644
edit
dl
rm
module.info.sl
0
0644
edit
dl
rm
module.info.sl.auto
150
0644
edit
dl
rm
module.info.sv
0
0644
edit
dl
rm
module.info.sv.auto
134
0644
edit
dl
rm
module.info.th
0
0644
edit
dl
rm
module.info.th.auto
310
0644
edit
dl
rm
module.info.tr
0
0644
edit
dl
rm
module.info.tr.auto
169
0644
edit
dl
rm
module.info.uk
0
0644
edit
dl
rm
module.info.uk.auto
242
0644
edit
dl
rm
module.info.ur
0
0644
edit
dl
rm
module.info.ur.auto
240
0644
edit
dl
rm
module.info.vi
0
0644
edit
dl
rm
module.info.vi.auto
205
0644
edit
dl
rm
module.info.zh
0
0644
edit
dl
rm
module.info.zh.auto
139
0644
edit
dl
rm
module.info.zh_TW
0
0644
edit
dl
rm
module.info.zh_TW.auto
148
0644
edit
dl
rm
old-proc-lib.pl
6132
0755
edit
dl
rm
openbsd-lib.pl
1967
0755
edit
dl
rm
open_files.cgi
2631
0755
edit
dl
rm
osf-lib.pl
2655
0755
edit
dl
rm
proc-lib.pl
18462
0755
edit
dl
rm
renice_proc.cgi
617
0755
edit
dl
rm
run.cgi
1412
0755
edit
dl
rm
sysv-lib.pl
6482
0755
edit
dl
rm
Edit:
/usr/share/usermin/proc/old-proc-lib.pl
(6132B)
# proc-lib.pl # Functions for managing processes do '../web-lib.pl'; &init_config(); if (!$ENV{'FOREIGN_MODULE_NAME'}) { &switch_to_remote_user(); &create_user_config_dirs(); } do "$config{ps_style}-lib.pl"; use POSIX; %access = ( 'edit' => 1, 'run' => 1 ); $no_module_config = 1; $user_processes_only = 1; sub process_info { local @plist = &list_processes($_[0]); return @plist ? %{$plist[0]} : (); } # index_links(current) sub index_links { local(%linkname, $l); print "<b>$text{'index_display'} : </b> \n"; foreach $l ("tree", "user", "size", "cpu", "search", "run") { if ($l ne $_[0]) { print "<a href=index_$l.cgi>"; } else { print "<b>"; } print $text{"index_$l"}; if ($l ne $_[0]) { print "</a>"; } else { print "</b>"; } print " \n"; } print "<p>\n"; open(INDEX, "> $user_module_config_directory/index"); $0 =~ /([^\/]+)$/; print INDEX "$1?$in\n"; close(INDEX); } # cut_string(string, [length]) sub cut_string { local $len = $_[1] || $config{'cut_length'}; if ($len && length($_[0]) > $len) { return substr($_[0], 0, $len)." ..."; } return $_[0]; } # switch_acl_uid() sub switch_acl_uid { } # safe_process_exec(command, uid, gid, handle, input, fixtags, bsmode) # Executes the given command as the given user/group and writes all output # to the given file handle. Finishes when there is no more output or the # process stops running. Returns the number of bytes read. sub safe_process_exec { # setup pipes and fork the process local $chld = $SIG{'CHLD'}; $SIG{'CHLD'} = \&safe_exec_reaper; pipe(OUTr, OUTw); pipe(INr, INw); local $pid = fork(); if (!$pid) { #setsid(); untie(*STDIN); untie(*STDOUT); untie(*STDERR); open(STDIN, "<&INr"); open(STDOUT, ">&OUTw"); open(STDERR, ">&OUTw"); $| = 1; close(OUTr); close(INw); if ($_[1]) { if (defined($_[2])) { # switch to given UID and GID $( = $_[2]; $) = "$_[2] $_[2]"; $< = $> = $_[1]; } else { # switch to UID and all GIDs local @u = getpwuid($_[1]); $( = $u[3]; $) = "$u[3] ".join(" ", $u[3], &other_groups($u[0])); $< = $> = $u[2]; } } # run the command delete($ENV{'FOREIGN_MODULE_NAME'}); delete($ENV{'SCRIPT_NAME'}); exec("/bin/sh", "-c", $_[0]); print "Exec failed : $!\n"; exit 1; } close(OUTw); close(INr); # Feed input (if any) print INw $_[4]; close(INw); # Read and show output local $fn = fileno(OUTr); local $got = 0; local $out = $_[3]; local $line; while(1) { local ($rmask, $buf); vec($rmask, $fn, 1) = 1; local $sel = select($rmask, undef, undef, 1); if ($sel > 0 && vec($rmask, $fn, 1)) { # got something to read.. print it sysread(OUTr, $buf, 1024) || last; $got += length($buf); if ($_[5]) { $buf =~ s/&/&/g; $buf =~ s/</</g; $buf =~ s/>/>/g; } if ($_[6]) { # Convert backspaces and returns $line .= $buf; while($line =~ s/^([^\n]*\n)//) { local $one = $1; while($one =~ s/.\010//) { } print $out $one; } } else { print $out $buf; } } elsif ($sel == 0) { # nothing to read. maybe the process is done, and a subprocess # is hanging things up last if (!kill(0, $pid)); } } close(OUTr); print $out $line; $SIG{'CHLD'} = $chld; return $got; } # safe_process_exec_logged(..) # Like safe_process_exec, but also logs the command sub safe_process_exec_logged { &additional_log('exec', undef, $_[0]); return &safe_process_exec(@_); } sub safe_exec_reaper { local $xp; do { local $oldexit = $?; $xp = waitpid(-1, WNOHANG); $? = $oldexit if ($? < 0); } while($xp > 0); } # pty_process_exec(command, [uid, gid]) # Starts the given command in a new pty and returns the pty filehandle and PID sub pty_process_exec { local ($ptyfh, $ttyfh, $pty, $tty) = &get_new_pty(); local $pid = fork(); if (!$pid) { close(STDIN); close(STDOUT); close(STDERR); untie(*STDIN); untie(*STDOUT); untie(*STDERR); setsid(); #setpgrp(0, $$); if ($_[1]) { $( = $u[3]; $) = "$_[2] $_[2]"; ($>, $<) = ($_[1], $_[1]); } open(STDIN, "<$tty"); open(STDOUT, ">&$ttyfh"); open(STDERR, ">&STDOUT"); close($ptyfh); exec($_[0]); print "Exec failed : $!\n"; exit 1; } close($ttyfh); return ($ptyfh, $pid); } # pty_process_exec_logged(..) # Like pty_process_exec, but logs the command as well sub pty_process_exec_logged { &additional_log('exec', undef, $_[0]); return &pty_process_exec(@_); } # find_process(name) # Returns an array of all processes matching some name sub find_process { local $name = $_[0]; local @rv = grep { $_->{'args'} =~ /$name/ } &list_processes(); return wantarray ? @rv : $rv[0]; } $has_lsof_command = &has_command("lsof"); # find_socket_processes(protocol, port) # Returns all processes using some port and protocol sub find_socket_processes { local @rv; open(LSOF, "lsof -i '$_[0]:$_[1]' |"); while(<LSOF>) { if (/^(\S+)\s+(\d+)/) { push(@rv, $2); } } close(LSOF); return @rv; } # find_process_sockets(pid) # Returns all network connections made by some process sub find_process_sockets { local @rv; open(LSOF, "lsof -i tcp -i udp -n |"); while(<LSOF>) { if (/^(\S+)\s+(\d+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+).*(TCP|UDP)\s+(.*)/ && $2 eq $_[0]) { local $n = { 'fd' => $4, 'type' => $5, 'proto' => $7 }; local $m = $8; if ($m =~ /^([^:\s]+):([^:\s]+)\s+\(listen\)/i) { $n->{'lhost'} = $1; $n->{'lport'} = $2; $n->{'listen'} = 1; } elsif ($m =~ /^([^:\s]+):([^:\s]+)->([^:\s]+):([^:\s]+)\s+\((\S+)\)/) { $n->{'lhost'} = $1; $n->{'lport'} = $2; $n->{'rhost'} = $3; $n->{'rport'} = $4; $n->{'state'} = $5; } elsif ($m =~ /^([^:\s]+):([^:\s]+)/) { $n->{'lhost'} = $1; $n->{'lport'} = $2; } push(@rv, $n); } } close(LSOF); return @rv; } # find_process_files(pid) # Returns all files currently held open by some process sub find_process_files { local @rv; open(LSOF, "lsof -p '$_[0]' |"); while(<LSOF>) { if (/^(\S+)\s+(\d+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\d+),(\d+)\s+(\d+)\s+(\d+)\s+(.*)/) { push(@rv, { 'fd' => lc($4), 'type' => lc($5), 'device' => [ $6, $7 ], 'size' => $8, 'inode' => $9, 'file' => $10 }); } } close(LSOF); return @rv; } 1;
Save
cmd:
run