diff --git a/proc/config-ALL-linux b/proc/config-ALL-linux index b2db8c472..e5247e102 100644 --- a/proc/config-ALL-linux +++ b/proc/config-ALL-linux @@ -3,3 +3,4 @@ ps_style=linux base_ppid=1 cut_length=80 trace_java=0 +hide_self=1 diff --git a/proc/config-aix b/proc/config-aix index a9e572fc1..19a3b317e 100644 --- a/proc/config-aix +++ b/proc/config-aix @@ -3,3 +3,4 @@ default_mode=last base_ppid=1 cut_length=80 trace_java=0 +hide_self=1 diff --git a/proc/config-freebsd b/proc/config-freebsd index a629fa6c2..d8ef1b0ed 100644 --- a/proc/config-freebsd +++ b/proc/config-freebsd @@ -3,3 +3,4 @@ ps_style=freebsd base_ppid=0 cut_length=80 trace_java=0 +hide_self=1 diff --git a/proc/config-hpux b/proc/config-hpux index 5bcef553f..d8e4b1a61 100644 --- a/proc/config-hpux +++ b/proc/config-hpux @@ -3,3 +3,4 @@ default_mode=last base_ppid=0 cut_length=80 trace_java=0 +hide_self=1 diff --git a/proc/config-irix b/proc/config-irix index 2af6a70b7..3c8d60a98 100644 --- a/proc/config-irix +++ b/proc/config-irix @@ -3,3 +3,4 @@ ps_style=sysv base_ppid=1 cut_length=80 trace_java=0 +hide_self=1 diff --git a/proc/config-macos b/proc/config-macos index 4e120df91..b5ec18f14 100644 --- a/proc/config-macos +++ b/proc/config-macos @@ -3,3 +3,4 @@ ps_style=macos base_ppid=1 cut_length=80 trace_java=0 +hide_self=1 diff --git a/proc/config-netbsd b/proc/config-netbsd index a629fa6c2..d8ef1b0ed 100644 --- a/proc/config-netbsd +++ b/proc/config-netbsd @@ -3,3 +3,4 @@ ps_style=freebsd base_ppid=0 cut_length=80 trace_java=0 +hide_self=1 diff --git a/proc/config-openbsd b/proc/config-openbsd index 1df402c88..61c7052c2 100644 --- a/proc/config-openbsd +++ b/proc/config-openbsd @@ -3,3 +3,4 @@ ps_style=openbsd base_ppid=0 cut_length=80 trace_java=0 +hide_self=1 diff --git a/proc/config-openserver b/proc/config-openserver index a9e572fc1..19a3b317e 100644 --- a/proc/config-openserver +++ b/proc/config-openserver @@ -3,3 +3,4 @@ default_mode=last base_ppid=1 cut_length=80 trace_java=0 +hide_self=1 diff --git a/proc/config-osf1 b/proc/config-osf1 index 8be1d44c4..67c6cea28 100644 --- a/proc/config-osf1 +++ b/proc/config-osf1 @@ -3,3 +3,4 @@ ps_style=osf base_ppid=1 cut_length=80 trace_java=0 +hide_self=1 diff --git a/proc/config-solaris b/proc/config-solaris index a9e572fc1..19a3b317e 100644 --- a/proc/config-solaris +++ b/proc/config-solaris @@ -3,3 +3,4 @@ default_mode=last base_ppid=1 cut_length=80 trace_java=0 +hide_self=1 diff --git a/proc/config-unixware b/proc/config-unixware index a9e572fc1..19a3b317e 100644 --- a/proc/config-unixware +++ b/proc/config-unixware @@ -3,3 +3,4 @@ default_mode=last base_ppid=1 cut_length=80 trace_java=0 +hide_self=1 diff --git a/proc/config-windows b/proc/config-windows index a358028f0..baf7cc184 100644 --- a/proc/config-windows +++ b/proc/config-windows @@ -3,3 +3,4 @@ ps_style=windows base_ppid=1 cut_length=80 trace_java=0 +hide_self=1 diff --git a/proc/config.info b/proc/config.info index e579d8627..c6b4b6e76 100644 --- a/proc/config.info +++ b/proc/config.info @@ -2,5 +2,6 @@ line1=Configurable options,11 default_mode=Default process list style,4,last-Last chosen,tree-Process tree,user-Order by user,size-Order by size,cpu-Order by CPU,search-Search form,run-Run form cut_length=Characters to truncate commands to,3,Unlimited trace_java=Show system call trace using,1,1-Java applet,0-Text +hide_self=Hide Webmin processes from list?,1,1-Yes,0-No line2=System configuration,11 ps_style=PS command output style,1,sysv-SYSV,linux-Linux,hpux-HPUX,freebsd-FreeBSD,macos-MacOS,openbsd-OpenBSD diff --git a/proc/index_cpu.cgi b/proc/index_cpu.cgi index b17727dd7..a565dd352 100755 --- a/proc/index_cpu.cgi +++ b/proc/index_cpu.cgi @@ -32,7 +32,7 @@ if (defined(&get_cpu_info)) { print &ui_columns_start([ $text{'pid'}, $text{'owner'}, $text{'cpu'}, $text{'command'} ], 100); @procs = sort { $b->{'cpu'} <=> $a->{'cpu'} } &list_processes(); -@procs = grep { &can_view_process($_->{'user'}) } @procs; +@procs = grep { &can_view_process($_) } @procs; foreach $pr (@procs) { $p = $pr->{'pid'}; local @cols; diff --git a/proc/index_search.cgi b/proc/index_search.cgi index ceef4a4df..d8f10414c 100755 --- a/proc/index_search.cgi +++ b/proc/index_search.cgi @@ -104,7 +104,7 @@ print &ui_form_end([ [ undef, $text{'search_submit'} ] ]); if (%in) { # search for processes @procs = &list_processes(); - @procs = grep { &can_view_process($_->{'user'}) } @procs; + @procs = grep { &can_view_process($_) } @procs; if ($in{mode} == 0) { # search by user @dis = grep { $_->{'user'} eq $in{'user'} } @procs; diff --git a/proc/index_size.cgi b/proc/index_size.cgi index 3e74dd5b2..a983d916c 100755 --- a/proc/index_size.cgi +++ b/proc/index_size.cgi @@ -29,7 +29,7 @@ print &ui_columns_start([ ], 100); @procs = sort { $b->{'size'} <=> $a->{'size'} } &list_processes(); -@procs = grep { &can_view_process($_->{'user'}) } @procs; +@procs = grep { &can_view_process($_) } @procs; foreach $pr (@procs) { $p = $pr->{'pid'}; local @cols; diff --git a/proc/index_tree.cgi b/proc/index_tree.cgi index af0827a6a..e221ce790 100755 --- a/proc/index_tree.cgi +++ b/proc/index_tree.cgi @@ -13,6 +13,7 @@ print &ui_columns_start([ $text{'pid'}, @procs = sort { $a->{'pid'} <=> $b->{'pid'} } &list_processes(); foreach $pr (@procs) { $p = $pr->{'pid'}; $pp = $pr->{'ppid'}; + $procmap{$p} = $pr; $argmap{$p} = $pr->{'args'}; $usermap{$p} = $pr->{'user'}; $stimemap{$p} = $pr->{'_stime'}; @@ -37,7 +38,7 @@ sub walk_procs { next if ($done_proc{$_[1]}++); local(@ch, $_, $args); -if (&can_view_process($usermap{$_[1]})) { +if (&can_view_process($procmap{$_[1]})) { local @cols; if (&can_edit_process($usermap{$_[1]})) { push(@cols, $_[0].&ui_link("edit_proc.cgi?".$_[1], $_[1]) ); diff --git a/proc/index_user.cgi b/proc/index_user.cgi index 47c8364dd..fde13040f 100755 --- a/proc/index_user.cgi +++ b/proc/index_user.cgi @@ -6,7 +6,7 @@ require './proc-lib.pl'; &index_links("user"); @procs = sort { $b->{'cpu'} <=> $a->{'cpu'} } &list_processes(); -@procs = grep { &can_view_process($_->{'user'}) } @procs; +@procs = grep { &can_view_process($_) } @procs; @users = &unique(map { $_->{'user'} } @procs); foreach $u (@users) { if (&supports_users()) { diff --git a/proc/index_zone.cgi b/proc/index_zone.cgi index a10771ec5..67920e212 100755 --- a/proc/index_zone.cgi +++ b/proc/index_zone.cgi @@ -6,7 +6,7 @@ require './proc-lib.pl'; &index_links("zone"); @procs = sort { $b->{'cpu'} <=> $a->{'cpu'} } &list_processes(); -@procs = grep { &can_view_process($_->{'user'}) } @procs; +@procs = grep { &can_view_process($_) } @procs; @zones = &unique(map { $_->{'_zone'} } @procs); foreach $z (@zones) { print "
",&text('index_inzone', "$z"),"
\n"; diff --git a/proc/proc-lib.pl b/proc/proc-lib.pl index 56f3092cd..f8f934b05 100755 --- a/proc/proc-lib.pl +++ b/proc/proc-lib.pl @@ -528,11 +528,13 @@ else { } } -# can_view_process(user) +# can_view_process(&process) # Returns 1 if processes belong to this user can be seen sub can_view_process { -local ($user) = @_; +local ($p) = @_; +return 0 if ($p->{'pid'} == $$ && $config{'hide_self'}); +local $user = $p->{'user'}; if ($hide{$user}) { return 0; }