#!/usr/bin/perl # index_search.cgi # Allows searching for processes by user or command require './proc-lib.pl'; &ReadParse(); $in{'mode'} = 1 if ($in{'mode'} eq ''); $deffield = ("user", "match", "cpu", "sfs", "files", "port", "sip") [$in{'mode'}]; &ui_print_header(undef, $text{'index_title'}, "", "search", !$no_module_config, 1, 0, undef, undef, "onLoad='document.forms[0].$deffield.focus()'"); &index_links("search"); # Javascript to select radio print <<EOF; <script> function select_mode(m) { for(i=0; i<document.forms[0].mode.length; i++) { document.forms[0].mode[i].checked = document.forms[0].mode[i].value == m; } } </script> EOF # display search form print &ui_form_start("index_search.cgi"); print &ui_table_start(undef, undef, 4); # By user print &ui_table_row(&ui_oneradio("mode", 0, &hlink($text{'search_user'}, "suser"), $in{'mode'} == 0), &ui_user_textbox("user", $in{'user'}, 0, 0, &mode_selector(0))); # By process name print &ui_table_row(&ui_oneradio("mode", 1, &hlink($text{'search_match'},"smatch"), $in{'mode'} == 1), &ui_textbox("match", $in{'match'}, 30, 0, undef, &mode_selector(1))); if ($has_lsof_command) { # TCP port print &ui_table_row(&ui_oneradio("mode", 5, &hlink($text{'search_port'}, "ssocket"), $in{'mode'} == 5), &ui_textbox("port", $in{'port'}, 6, 0, undef, &mode_selector(5))." ". $text{'search_protocol'}." ". &ui_select("protocol", $in{'protocol'}, [ [ 'tcp', 'TCP' ], [ 'udp', 'UDP' ] ], 1, 0, 0, 0, &mode_selector(5, "onChange"))); # Using IP address print &ui_table_row(&ui_oneradio("mode", 6, &hlink($text{'search_ip'}, "sip"), $in{'mode'} == 6), &ui_textbox("ip", $in{'ip'}, 20, 0, undef, &mode_selector(6))); } # By CPU used print &ui_table_row(&ui_oneradio("mode", 2, &hlink($text{'search_cpupc2'}, "scpu"), $in{'mode'} == 2), &ui_textbox("cpu", $in{'cpu'}, 4, 0, undef, &mode_selector(2))."%"); if ($has_fuser_command) { # Using filesystem if (&foreign_check("mount")) { &foreign_require("mount", "mount-lib.pl"); @opts = ( ); foreach $fs (&foreign_call("mount", "list_mounted")) { next if ($fs->[2] eq "swap"); push(@opts, $fs->[0]); } $fschooser = &ui_select("fs", $in{'fs'}, \@opts, 1, 0, 0, 0, &mode_selector(3, "onChange")); } else { $fschooser = &ui_textbox("fs", $in{'fs'}, 30, 0, undef, &mode_selector(3)); } print &ui_table_row(&ui_oneradio("mode", 3, &hlink($text{'search_fs'}, "sfs"), $in{'mode'} == 3), $fschooser, 3); # Using file print &ui_table_row(&ui_oneradio("mode", 4, &hlink($text{'search_files'}, "sfiles"), $in{'mode'} == 4), &ui_textbox("files", $in{'files'}, 50, 0, undef, &mode_selector(4))." ". &file_chooser_button("files", 0), 3); } # Exclude own processes print &ui_table_row(undef, &ui_checkbox("ignore", 1, &hlink("<b>$text{'search_ignore'}</b>","signore"), $in{'ignore'} || !defined($in{'mode'}))); print &ui_table_end(); print &ui_form_end([ [ undef, $text{'search_submit'} ] ]); if (%in) { # search for processes @procs = &list_processes(); @procs = grep { &can_view_process($_) } @procs; if ($in{mode} == 0) { # search by user @dis = grep { $_->{'user'} eq $in{'user'} } @procs; } elsif ($in{mode} == 1) { # search by regexp @dis = grep { $_->{'args'} =~ /\Q$in{match}\E/i } @procs; } elsif ($in{mode} == 2) { # search by cpu @dis = grep { $_->{'cpu'} > $in{'cpu'} } @procs; @dis = sort { $b->{'cpu'} <=> $a->{'cpu'} } @dis; } elsif ($in{mode} == 3 && $has_fuser_command) { # search by filesystem foreach $p (&find_mount_processes($in{'fs'})) { $using{$p}++; } @dis = grep { defined($using{$_->{'pid'}}) } @procs; } elsif ($in{mode} == 4 && $has_fuser_command) { # search by files foreach $p (&find_file_processes(split(/\s+/, $in{'files'}))) { $using{$p}++; } @dis = grep { defined($using{$_->{'pid'}}) } @procs; } elsif ($in{mode} == 5 && $has_lsof_command) { foreach $p (&find_socket_processes($in{'protocol'},$in{'port'})) { $using{$p}++; } @dis = grep { defined($using{$_->{'pid'}}) } @procs; } elsif ($in{mode} == 6 && $has_lsof_command) { foreach $p (&find_ip_processes($in{'ip'})) { $using{$p}++; } @dis = grep { defined($using{$_->{'pid'}}) } @procs; } if ($in{'ignore'}) { # Ignore this process and any children @dis = grep { $_->{'pid'} != $$ && $_->{'ppid'} != $$ } @dis; } # display matches if (@dis) { print &ui_columns_start([ $text{'pid'}, $text{'owner'}, $text{'cpu'}, $info_arg_map{'_stime'} ? ( $text{'stime'} ) : ( ), $text{'command'} ], 100); foreach $d (@dis) { $p = $d->{'pid'}; push(@pidlist, $p); local @cols; if (&can_edit_process($d->{'user'})) { push(@cols, &ui_link("edit_proc.cgi?".$p, $p) ); } else { push(@cols, $p); } push(@cols, $d->{user}); push(@cols, $d->{cpu}); if ($info_arg_map{'_stime'}) { push(@cols, $d->{'_stime'}); } push(@cols, &html_escape(cut_string($d->{args}))); print &ui_columns_row(\@cols); } print &ui_columns_end(),"<p>\n"; } else { print "<p><b>$text{'search_none'}</b><p>\n"; } if (@pidlist && $access{'simple'} && $access{'edit'}) { # display form for mass killing with selected signals print "<form action=kill_proc_list.cgi>\n"; print "<input type=hidden name=args value=\"$in\">\n"; printf "<input type=hidden name=pidlist value=\"%s\">\n", join(" ", @pidlist); print "<input type=hidden name=pid value=$pinfo{pid}>\n"; foreach $s ('KILL', 'TERM', 'HUP', 'STOP', 'CONT') { printf "<input type=submit value=\"%s\" name=%s>\n", $text{"kill_".lc($s)}, $s; } print "</form>\n"; } elsif (@pidlist && $access{'edit'}) { # display form for mass killing with any signal print "<form action=kill_proc_list.cgi>\n"; print "<input type=submit value=\"$text{'search_kill'}\">\n"; print "<input type=hidden name=args value=\"$in\">\n"; printf "<input type=hidden name=pidlist value=\"%s\">\n", join(" ", @pidlist); print "<select name=signal>\n"; foreach $s (&supported_signals()) { printf "<option value=\"$s\" %s>$s</option>\n", $s eq "HUP" ? "selected" : ""; } print "</select>\n"; print " " x 2; print "<input type=submit name=TERM ", "value='$text{'search_sigterm'}'>\n"; print " " x 2; print "<input type=submit name=KILL ", "value='$text{'search_sigkill'}'>\n"; print "</form>\n"; } } &ui_print_footer("/", $text{'index'}); sub mode_selector { local ($m, $action) = @_; $action ||= "onFocus"; return "$action='select_mode($m)'"; }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
help | Folder | 0755 |
|
|
images | Folder | 0755 |
|
|
lang | Folder | 0755 |
|
|
BorderPanel.class | File | 1.73 KB | 0644 |
|
BorderPanel.java | File | 1.02 KB | 0644 |
|
CHANGELOG | File | 1.58 KB | 0644 |
|
CbButton.class | File | 4.68 KB | 0644 |
|
CbButton.java | File | 5.31 KB | 0644 |
|
CbButtonCallback.class | File | 137 B | 0644 |
|
CbButtonGroup.class | File | 675 B | 0644 |
|
CbScrollbar.class | File | 4.2 KB | 0644 |
|
CbScrollbar.java | File | 7.62 KB | 0644 |
|
CbScrollbarArrow.class | File | 1.9 KB | 0644 |
|
CbScrollbarCallback.class | File | 164 B | 0644 |
|
LineInputStream.class | File | 1.74 KB | 0644 |
|
LineInputStream.java | File | 2.08 KB | 0644 |
|
Makefile | File | 67 B | 0644 |
|
MultiColumn.class | File | 9.55 KB | 0644 |
|
MultiColumn.java | File | 12.55 KB | 0644 |
|
MultiColumnCallback.class | File | 200 B | 0644 |
|
StringJoiner.class | File | 783 B | 0644 |
|
StringSplitter.class | File | 1.2 KB | 0644 |
|
StringSplitter.java | File | 2.02 KB | 0644 |
|
Tracer.class | File | 3.99 KB | 0644 |
|
Tracer.java | File | 2.98 KB | 0644 |
|
Util.class | File | 4.34 KB | 0644 |
|
Util.java | File | 3.15 KB | 0644 |
|
acl_security.pl | File | 1.53 KB | 0755 |
|
cgi_args.pl | File | 280 B | 0755 |
|
config-ALL-linux | File | 84 B | 0644 |
|
config-aix | File | 83 B | 0644 |
|
config-freebsd | File | 86 B | 0644 |
|
config-hpux | File | 83 B | 0644 |
|
config-irix | File | 83 B | 0644 |
|
config-macos | File | 84 B | 0644 |
|
config-netbsd | File | 86 B | 0644 |
|
config-openbsd | File | 86 B | 0644 |
|
config-openserver | File | 83 B | 0644 |
|
config-osf1 | File | 82 B | 0644 |
|
config-solaris | File | 83 B | 0644 |
|
config-unixware | File | 83 B | 0644 |
|
config-windows | File | 86 B | 0644 |
|
config.info | File | 512 B | 0644 |
|
config.info.ca | File | 635 B | 0644 |
|
config.info.cs | File | 555 B | 0644 |
|
config.info.de | File | 509 B | 0644 |
|
config.info.es | File | 341 B | 0644 |
|
config.info.fa | File | 679 B | 0644 |
|
config.info.fr | File | 382 B | 0644 |
|
config.info.hu | File | 521 B | 0644 |
|
config.info.it | File | 576 B | 0644 |
|
config.info.ja | File | 553 B | 0644 |
|
config.info.nl | File | 513 B | 0644 |
|
config.info.no | File | 513 B | 0644 |
|
config.info.pl | File | 517 B | 0644 |
|
config.info.pt_BR | File | 486 B | 0644 |
|
config.info.ru | File | 891 B | 0644 |
|
config.info.sv | File | 320 B | 0644 |
|
config.info.tr | File | 570 B | 0644 |
|
config.info.uk | File | 759 B | 0644 |
|
config.info.zh | File | 253 B | 0644 |
|
config.info.zh_TW | File | 303 B | 0644 |
|
cpan_modules.pl | File | 73 B | 0755 |
|
defaultacl | File | 38 B | 0644 |
|
edit_proc.cgi | File | 4.17 KB | 0755 |
|
freebsd-lib.pl | File | 4.5 KB | 0755 |
|
hpux-lib.pl | File | 2.62 KB | 0755 |
|
index.cgi | File | 466 B | 0755 |
|
index_cpu.cgi | File | 1.3 KB | 0755 |
|
index_run.cgi | File | 1.07 KB | 0755 |
|
index_search.cgi | File | 6.48 KB | 0755 |
|
index_size.cgi | File | 1.26 KB | 0755 |
|
index_tree.cgi | File | 1.5 KB | 0755 |
|
index_user.cgi | File | 1.11 KB | 0755 |
|
index_zone.cgi | File | 1.34 KB | 0755 |
|
kill_proc.cgi | File | 738 B | 0755 |
|
kill_proc_list.cgi | File | 860 B | 0755 |
|
killtail.cgi | File | 316 B | 0755 |
|
linux-lib.pl | File | 18.45 KB | 0755 |
|
log_parser.pl | File | 1.05 KB | 0755 |
|
macos-lib.pl | File | 4.45 KB | 0755 |
|
module.info | File | 289 B | 0644 |
|
module.info.af | File | 0 B | 0644 |
|
module.info.af.auto | File | 119 B | 0644 |
|
module.info.ar | File | 0 B | 0644 |
|
module.info.ar.auto | File | 163 B | 0644 |
|
module.info.be | File | 0 B | 0644 |
|
module.info.be.auto | File | 213 B | 0644 |
|
module.info.bg | File | 0 B | 0644 |
|
module.info.bg.auto | File | 226 B | 0644 |
|
module.info.ca | File | 118 B | 0644 |
|
module.info.ca.auto | File | 28 B | 0644 |
|
module.info.cs | File | 28 B | 0644 |
|
module.info.cs.auto | File | 112 B | 0644 |
|
module.info.da | File | 0 B | 0644 |
|
module.info.da.auto | File | 119 B | 0644 |
|
module.info.de | File | 96 B | 0644 |
|
module.info.de.auto | File | 23 B | 0644 |
|
module.info.el | File | 0 B | 0644 |
|
module.info.el.auto | File | 217 B | 0644 |
|
module.info.es | File | 26 B | 0644 |
|
module.info.es.auto | File | 101 B | 0644 |
|
module.info.eu | File | 0 B | 0644 |
|
module.info.eu.auto | File | 145 B | 0644 |
|
module.info.fa | File | 0 B | 0644 |
|
module.info.fa.auto | File | 230 B | 0644 |
|
module.info.fi | File | 0 B | 0644 |
|
module.info.fi.auto | File | 127 B | 0644 |
|
module.info.fr | File | 34 B | 0644 |
|
module.info.fr.auto | File | 123 B | 0644 |
|
module.info.he | File | 0 B | 0644 |
|
module.info.he.auto | File | 171 B | 0644 |
|
module.info.hr | File | 0 B | 0644 |
|
module.info.hr.auto | File | 132 B | 0644 |
|
module.info.hu | File | 25 B | 0644 |
|
module.info.hu.auto | File | 109 B | 0644 |
|
module.info.it | File | 31 B | 0644 |
|
module.info.it.auto | File | 105 B | 0644 |
|
module.info.ja | File | 27 B | 0644 |
|
module.info.ja.auto | File | 154 B | 0644 |
|
module.info.ko | File | 34 B | 0644 |
|
module.info.ko.auto | File | 127 B | 0644 |
|
module.info.lt | File | 0 B | 0644 |
|
module.info.lt.auto | File | 147 B | 0644 |
|
module.info.lv | File | 0 B | 0644 |
|
module.info.lv.auto | File | 131 B | 0644 |
|
module.info.ms | File | 120 B | 0644 |
|
module.info.ms.auto | File | 24 B | 0644 |
|
module.info.mt | File | 0 B | 0644 |
|
module.info.mt.auto | File | 147 B | 0644 |
|
module.info.nl | File | 27 B | 0644 |
|
module.info.nl.auto | File | 90 B | 0644 |
|
module.info.no | File | 28 B | 0644 |
|
module.info.no.auto | File | 95 B | 0644 |
|
module.info.pl | File | 29 B | 0644 |
|
module.info.pl.auto | File | 108 B | 0644 |
|
module.info.pt | File | 27 B | 0644 |
|
module.info.pt.auto | File | 107 B | 0644 |
|
module.info.pt_BR | File | 0 B | 0644 |
|
module.info.pt_BR.auto | File | 148 B | 0644 |
|
module.info.ro | File | 0 B | 0644 |
|
module.info.ro.auto | File | 138 B | 0644 |
|
module.info.ru | File | 25 B | 0644 |
|
module.info.ru.auto | File | 179 B | 0644 |
|
module.info.sk | File | 0 B | 0644 |
|
module.info.sk.auto | File | 133 B | 0644 |
|
module.info.sl | File | 0 B | 0644 |
|
module.info.sl.auto | File | 126 B | 0644 |
|
module.info.sv | File | 25 B | 0644 |
|
module.info.sv.auto | File | 91 B | 0644 |
|
module.info.th | File | 0 B | 0644 |
|
module.info.th.auto | File | 325 B | 0644 |
|
module.info.tr | File | 30 B | 0644 |
|
module.info.tr.auto | File | 123 B | 0644 |
|
module.info.uk | File | 0 B | 0644 |
|
module.info.uk.auto | File | 217 B | 0644 |
|
module.info.ur | File | 0 B | 0644 |
|
module.info.ur.auto | File | 193 B | 0644 |
|
module.info.vi | File | 0 B | 0644 |
|
module.info.vi.auto | File | 168 B | 0644 |
|
module.info.zh | File | 24 B | 0644 |
|
module.info.zh.auto | File | 91 B | 0644 |
|
module.info.zh_TW | File | 30 B | 0644 |
|
module.info.zh_TW.auto | File | 97 B | 0644 |
|
open_files.cgi | File | 2.57 KB | 0755 |
|
openbsd-lib.pl | File | 1.81 KB | 0755 |
|
osf-lib.pl | File | 2.44 KB | 0755 |
|
prefs.info | File | 53 B | 0644 |
|
proc-lib.pl | File | 15.8 KB | 0755 |
|
rbac-mapping | File | 126 B | 0644 |
|
renice_proc.cgi | File | 617 B | 0755 |
|
run.cgi | File | 1.38 KB | 0755 |
|
safeacl | File | 35 B | 0644 |
|
syslog_logs.pl | File | 336 B | 0755 |
|
sysv-lib.pl | File | 6.12 KB | 0755 |
|
tail.cgi | File | 750 B | 0755 |
|
trace.cgi | File | 2.4 KB | 0755 |
|
windows-lib.pl | File | 1.25 KB | 0755 |
|