Server IP : 195.201.23.43 / Your IP : 18.190.219.146 Web Server : Apache System : Linux webserver2.vercom.be 5.4.0-192-generic #212-Ubuntu SMP Fri Jul 5 09:47:39 UTC 2024 x86_64 User : kdecoratie ( 1041) PHP Version : 7.1.33-63+ubuntu20.04.1+deb.sury.org+1 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/share/usermin/ |
Upload File : |
#!/usr/bin/perl # Search Webmin modules and help pages and text and config.info $trust_unknown_referers = 1; BEGIN { push(@INC, "."); }; use WebminCore; &init_config(); do "$root_directory/webmin-search-lib.pl"; &ReadParse(); $prod = &get_product_name(); $ucprod = ucfirst($prod); &ui_print_unbuffered_header(undef, &html_escape($in{'title'}) || &text('wsearch_title', $ucprod), "", undef, 0, 1); # Validate search text $re = $in{'search'}; if ($re !~ /\S/) { &error($text{'wsearch_esearch'}); } $re =~ s/^\s+//; $re =~ s/\s+$//; # Find modules to search $mods = undef; if ($in{'mod'}) { $mods = [ ]; my %infos = map { $_->{'dir'}, $_ } &get_all_module_infos(); foreach my $mn (split(/\0/, $in{'mod'})) { my $minfo = $infos{$mn}; push(@$mods, $minfo) if ($minfo); } } # Do the search print &text('wsearch_searching', "<i>".&html_escape($re)."</i>"),"\n"; @rv = &search_webmin($re, \&print_search_dot, $mods); print &text('wsearch_found', scalar(@rv)),"<p>\n"; # Show in table if (@rv) { print &ui_columns_start( [ $text{'wsearch_htext'}, $text{'wsearch_htype'}, $text{'wsearch_hmod'}, $text{'wsearch_hcgis'} ], 100); foreach my $r (@rv) { $hi = &highlight_text($r->{'text'}); if ($r->{'link'}) { $hi = "<a href='$r->{'link'}'>$hi</a>"; } @links = ( ); foreach my $c (@{$r->{'cgis'}}) { ($cmod, $cpage) = split(/\//, $c); ($cpage, $cargs) = split(/\?/, $cpage); $ctitle = &cgi_page_title($cmod, $cpage) || $cpage; if ($r->{'mod'}->{'installed'}) { $cargs ||= &cgi_page_args($cmod, $cpage); } else { # For modules that aren't installed, linking # to a CGI is likely useless $cargs ||= "none"; } if ($cargs eq "none") { push(@links, $ctitle); } else { $cargs = "?".$cargs if ($cargs ne '' && $cargs !~ /^(\/|%2F)/); # Don't print it two times, it's very confusing if (grep(/^$ctitle$/, @links)) { my $i = 0; my $c = scalar @links; $i++ until $links[$i] eq $ctitle or $i == $c; splice(@links, $i, 1); } push(@links, "<a href='$cmod/$cpage$cargs'>$ctitle</a>"); } } if (@links > 2) { @links = ( @links[0..1], "..." ); } print &ui_columns_row([ $hi, $text{'wsearch_type_'.$r->{'type'}}, "<a href='$r->{'mod'}->{'dir'}/'>$r->{'mod'}->{'desc'}</a>", &ui_links_row(\@links, 1), ]); } print &ui_columns_end(); } else { print "<b>",&text('wsearch_enone', "<tt>".&html_escape($re)."</tt>"),"</b><p>\n"; } &ui_print_footer(); # print_search_dot() # Print one dot per second sub print_search_dot { local $now = time(); if ($now > $last_print_search_dot) { print ". "; $last_print_search_dot = $now; } }Private