Linux mail.vriendennsm.nl 6.1.0-51-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.177-1 (2026-07-16) x86_64
Apache/2.4.68 (Debian)
Server IP : 217.154.75.17 & Your IP : 216.73.216.195
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
share /
usermin /
Delete
Unzip
Name
Size
Permission
Date
Action
at
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
authentic-theme
[ DIR ]
drwxr-xr-x
2026-07-25 20:56
blue-theme
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
changepass
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
chfn
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
commands
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
cron
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
cshrc
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
fetchmail
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
filemin
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
filter
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
forward
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
gnupg
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
gray-theme
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
htaccess
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
htaccess-htpasswd
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
images
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
lang
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
language
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
mailbox
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
mailcap
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
man
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
mysql
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
plan
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
postgresql
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
proc
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
procmail
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
quota
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
schedule
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
shell
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
spam
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
ssh
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
theme
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
tunnel
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
twofactor
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
ulang
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
unauthenticated
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
updown
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
usermount
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
vendor_perl
[ DIR ]
drwxr-xr-x
2026-06-10 18:25
xterm
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
LICENCE
1.48
KB
-rw-r--r--
2026-07-19 16:26
LICENCE.ja
1.62
KB
-rw-r--r--
2026-07-19 16:26
README
1.92
KB
-rw-r--r--
2026-07-19 16:26
WebminCore.pm
9.05
KB
-rw-r--r--
2026-07-19 16:26
acl_security.pl
2.89
KB
-rwxr-xr-x
2026-07-19 16:26
chooser.cgi
7.21
KB
-rwxr-xr-x
2026-07-19 16:28
config-aix
227
B
-rw-r--r--
2026-07-19 16:26
config-cobalt-linux
264
B
-rw-r--r--
2026-07-19 16:26
config-coherent-linux
264
B
-rw-r--r--
2026-07-19 16:26
config-corel-linux
264
B
-rw-r--r--
2026-07-19 16:26
config-debian-linux
264
B
-rw-r--r--
2026-07-19 16:26
config-freebsd
256
B
-rw-r--r--
2026-07-19 16:26
config-generic-linux
264
B
-rw-r--r--
2026-07-19 16:26
config-gentoo-linux
264
B
-rw-r--r--
2026-07-19 16:26
config-hpux
243
B
-rw-r--r--
2026-07-19 16:26
config-irix
284
B
-rw-r--r--
2026-07-19 16:26
config-lib.pl
11.84
KB
-rwxr-xr-x
2026-07-19 16:26
config-macos
260
B
-rw-r--r--
2026-07-19 16:26
config-mandrake-linux
278
B
-rw-r--r--
2026-07-19 16:26
config-msc-linux
264
B
-rw-r--r--
2026-07-19 16:26
config-netbsd
283
B
-rw-r--r--
2026-07-19 16:26
config-open-linux
264
B
-rw-r--r--
2026-07-19 16:26
config-openbsd
241
B
-rw-r--r--
2026-07-19 16:26
config-openmamba-linux
264
B
-rw-r--r--
2026-07-19 16:26
config-openserver
236
B
-rw-r--r--
2026-07-19 16:26
config-osf1
266
B
-rw-r--r--
2026-07-19 16:26
config-redhat-linux
264
B
-rw-r--r--
2026-07-19 16:26
config-slackware-linux
280
B
-rw-r--r--
2026-07-19 16:26
config-sol-linux
264
B
-rw-r--r--
2026-07-19 16:26
config-solaris
417
B
-rw-r--r--
2026-07-19 16:26
config-suse-linux
264
B
-rw-r--r--
2026-07-19 16:26
config-trustix-linux
264
B
-rw-r--r--
2026-07-19 16:26
config-turbo-linux
264
B
-rw-r--r--
2026-07-19 16:26
config-united-linux
264
B
-rw-r--r--
2026-07-19 16:26
config-unixware
286
B
-rw-r--r--
2026-07-19 16:26
copyconfig.pl
4.33
KB
-rwxr-xr-x
2026-07-19 16:28
date_chooser.cgi
2.19
KB
-rwxr-xr-x
2026-07-19 16:28
deb-name
8
B
-rw-r--r--
2026-07-19 16:28
defaultacl
124
B
-rw-r--r--
2026-07-19 16:26
defaulttheme
16
B
-rw-r--r--
2026-07-19 16:26
entities_map.txt
1.47
KB
-rw-r--r--
2026-07-19 16:26
favicon.ico
14.73
KB
-rw-r--r--
2026-07-19 16:26
group_chooser.cgi
7.51
KB
-rwxr-xr-x
2026-07-19 16:28
help.cgi
2.26
KB
-rwxr-xr-x
2026-07-19 16:28
html-editor-lib.pl
17.72
KB
-rw-r--r--
2026-07-19 16:26
index.cgi
5.64
KB
-rwxr-xr-x
2026-07-19 16:28
install-module.pl
1.27
KB
-rwxr-xr-x
2026-07-19 16:28
install-type
4
B
-rw-r--r--
2026-07-19 16:28
javascript-lib.pl
14.69
KB
-rwxr-xr-x
2026-07-19 16:26
lang_list.txt
2.51
KB
-rw-r--r--
2026-07-19 16:26
maketemp.pl
424
B
-rwxr-xr-x
2026-07-19 16:26
mime.types
12.42
KB
-rw-r--r--
2026-07-19 16:26
miniserv-lib.pl
175.51
KB
-rw-r--r--
2026-07-19 16:26
miniserv.pem
2.9
KB
-rw-r--r--
2026-07-19 16:26
miniserv.pl
33.88
KB
-rwxr-xr-x
2026-07-19 16:28
newmods.pl
1.25
KB
-rwxr-xr-x
2026-07-19 16:26
os_list.txt
35.22
KB
-rw-r--r--
2026-07-19 16:26
oschooser.pl
4.55
KB
-rwxr-xr-x
2026-07-19 16:28
pam_login.cgi
4.33
KB
-rwxr-xr-x
2026-07-19 16:28
password_change.cgi
7.02
KB
-rwxr-xr-x
2026-07-19 16:28
password_form.cgi
1.3
KB
-rwxr-xr-x
2026-07-19 16:28
perlpath.pl
571
B
-rwxr-xr-x
2026-07-19 16:28
robots.txt
26
B
-rw-r--r--
2026-07-19 16:26
session_login.cgi
5.11
KB
-rwxr-xr-x
2026-07-19 16:28
setup.sh
27.29
KB
-rwxr-xr-x
2026-07-19 16:26
switch_user.cgi
404
B
-rwxr-xr-x
2026-07-19 16:28
thirdparty.pl
1.73
KB
-rwxr-xr-x
2026-07-19 16:26
uconfig.cgi
1.39
KB
-rwxr-xr-x
2026-07-19 16:28
uconfig_save.cgi
1.46
KB
-rwxr-xr-x
2026-07-19 16:28
ui-lib.pl
123.52
KB
-rwxr-xr-x
2026-07-19 16:26
update-from-repo.sh
14.77
KB
-rwxr-xr-x
2026-07-19 16:26
updateboot.pl
2.37
KB
-rwxr-xr-x
2026-07-19 16:28
uptracker.cgi
2.89
KB
-rwxr-xr-x
2026-07-19 16:28
user_chooser.cgi
7.39
KB
-rwxr-xr-x
2026-07-19 16:28
usermin-init
1.88
KB
-rwxr-xr-x
2026-07-19 16:26
usermin-pam
101
B
-rw-r--r--
2026-07-19 16:26
usermin-pam-osx
243
B
-rw-r--r--
2026-07-19 16:26
usermin-systemd
375
B
-rw-r--r--
2026-07-19 16:26
version
6
B
-rw-r--r--
2026-07-19 16:26
web-lib-funcs.pl
417.23
KB
-rwxr-xr-x
2026-07-19 16:26
web-lib.pl
856
B
-rwxr-xr-x
2026-07-19 16:26
webmin-search-lib.pl
9.47
KB
-rwxr-xr-x
2026-07-19 16:26
webmin_search.cgi
2.63
KB
-rwxr-xr-x
2026-07-19 16:28
Save
Rename
# Functions for searching the webmin docs and UI =head2 search_webmin(phrase, [callback-function], [&modules]) Searches all Webmin help pages, UI text, module names and config.info files for entries matching the given phrase or word. Returns them sorted by relevance order, each as a hash ref with the following keys : =item mod - A module hash reference for the module the search result was in =item rank - A result ranking, higher being better =item type - One of mod (for module name), dir (for module directory), config (configuration setting), help (help page) or text (UI text) =item text - The text that matched =items cgis - An array ref of pages on which the text appears, each formatted like module/script.cgi =cut sub search_webmin { my ($re, $cbfunc, $onlymods) = @_; # Work out this Webmin's URL base my $urlhost = $ENV{'HTTP_HOST'}; if ($urlhost !~ /:/) { $urlhost .= ":".$ENV{'SERVER_PORT'}; } my $urlbase = ($ENV{'HTTPS'} eq 'ON' ? 'https://' : 'http://').$urlhost; # Search module names and add to results list my @rv = ( ); my $pn = &get_product_name(); my @mods; if ($onlymods) { # Modules specified by caller @mods = grep { &foreign_available($_->{'dir'}) } @$onlymods; } else { # All reasonable modules @mods = &get_available_module_infos(); } @mods = grep { !($_->{clone} || $_->{noui} || ($pn && $_->{"${pn}_noui"})) && (($_->{hidden} // 0) != 1) } @mods; @mods = sort { $b->{'longdesc'} cmp $a->{'longdesc'} } @mods; foreach my $m (@mods) { if ($m->{'desc'} =~ /\Q$re\E/i) { # Module description match push(@rv, { 'mod' => $m, 'rank' => 10, 'type' => 'mod', 'link' => $m->{'dir'}.'/', 'text' => $m->{'desc'} }); } elsif ($m->{'longdesc'} =~ /\Q$re\E/i) { # Module long description match push(@rv, { 'mod' => $m, 'rank' => 9.5, 'type' => 'mod', 'link' => $m->{'dir'}.'/', 'text' => $m->{'longdesc'} }); } elsif ($m->{'dir'} =~ /\Q$re\E/i) { # Module directory match push(@rv, { 'mod' => $m, 'rank' => 9, 'type' => 'dir', 'link' => $m->{'dir'}.'/', 'text' => $urlbase."/".$m->{'dir'}."/" }); } &$cbfunc() if ($cbfunc); } # Extract zipped help files to temp dir my $helpbase = &transname(); &make_dir($helpbase, 0700); my %helpmap; foreach my $m (@mods) { my $helpzip = &module_root_directory($m)."/help/help.zip"; if (-r $helpzip) { my $helpdir = $helpbase."/".$m->{'dir'}; &make_dir($helpdir, 0700); &execute_command("cd ".quotemeta($helpdir)." && unzip ".quotemeta($helpzip)); if (!$?) { $helpmap{$m->{'dir'}} = $helpdir; } } } # Search module configs and their help pages foreach my $m (@mods) { my %access = &get_module_acl(undef, $m); next if ($access{'noconfig'}); my $file = $prod eq 'webmin' ? "$root_directory/$m->{'dir'}/config.info" : "$root_directory/$m->{'dir'}/uconfig.info"; my %info = ( ); my @info_order = ( ); &read_file($file, \%info, \@info_order); foreach my $o (@lang_order_list) { &read_file("$file.$o", \%info); } my $section = undef; my $helpdir = $helpmap{$m->{'dir'}}; foreach my $c (@info_order) { my @p = split(/,/, $info{$c}); if ($p[1] == 11) { $section = $c; } if ($p[0] =~ /\Q$re\E/i) { # Config description matches push(@rv, { 'mod' => $m, 'rank' => 8, 'type' => 'config', 'link' => "/config.cgi?module=$m->{'dir'}&". "section=".&urlize($section)."#$c", 'text' => $p[0], }); } my $hfl = &help_file($mod->{'dir'}, "config_".$c, $helpdir); my ($title, $help) = &help_file_match($hfl); if ($help) { # Config help matches push(@rv, { 'mod' => $m, 'rank' => 6, 'type' => 'help', 'link' => "/help.cgi/$m->{'dir'}/config_".$c, 'desc' => &text('wsearch_helpfor', $p[0]), 'text' => $help, 'cgis' => [ "/config.cgi?". "module=$m->{'dir'}§ion=". &urlize($section)."#$c" ], }); } } &$cbfunc() if ($cbfunc); } # Search other help pages my %lang_order_list = map { $_, 1 } @lang_order_list; foreach my $m (@mods) { my $helpdir = $helpmap{$m->{'dir'}} || &module_root_directory($m)."/help"; my %donepage = ( ); opendir(DIR, $helpdir); foreach my $f (sort { length($b) <=> length($a) } readdir(DIR)) { next if ($f =~ /^config_/); # For config help, already done # Work out if we should grep this help page - don't do the same # page twice for different languages my $grep = 0; my ($page, $lang); if ($f =~ /^(\S+)\.([^\.]+)\.html$/) { ($page, $lang) = ($1, $2); if ($lang_order_list{$lang} && !$donepage{$page}++) { $grep = 1; } } elsif ($f =~ /^(\S+)\.html$/) { $page = $1; if (!$donepage{$page}++) { $grep = 1; } } # If yes, search it if ($grep) { my ($title, $help) = &help_file_match("$helpdir/$f"); if ($title) { my @cgis = &find_cgi_text( [ "hlink\\(.*'$page'", "hlink\\(.*\"$page\"", "header\\([^,]+,[^,]+,[^,]+,\\s*\"$page\"", "header\\([^,]+,[^,]+,[^,]+,\\s*'$page'", ], $m, 1); push(@rv, { 'mod' => $m, 'rank' => 6, 'type' => 'help', 'link' => "/help.cgi/$m->{'dir'}/$page", 'desc' => $title, 'text' => $help, 'cgis' => \@cgis }); } } &$cbfunc() if ($cbfunc); } closedir(DIR); } # Then do text strings my %gtext = &load_language(""); MODULE: foreach my $m (@mods) { my %mtext = &load_language($m->{'dir'}); foreach my $k (keys %mtext) { next if ($gtext{$k}); # Skip repeated global strings $mtext{$k} =~ s/\$[0-9]//g; if ($mtext{$k} =~ /\Q$re\E/i) { # Find CGIs that use this text my @cgis = &find_cgi_text( [ "\$text{'$k'}", "\$text{\"$k\"}", "\$text{$k}", "&text('$k'", "&text(\"$k\"" ], $m); if (@cgis) { push(@rv, { 'mod' => $m, 'rank' => 4, 'type' => 'text', 'text' => $mtext{$k}, 'cgis' => \@cgis }); } } } &$cbfunc() if ($cbfunc); } # Sort results by relevancy # XXX can do better? @rv = sort { $b->{'rank'} <=> $a->{'rank'} || lc($a->{'mod'}->{'desc'}) cmp lc($b->{'mod'}->{'desc'}) } @rv; return @rv; } # highlight_text(text, [length]) # Returns text with the search term bolded, and truncated to 50 characters sub highlight_text { local ($str, $len) = @_; $len ||= 50; local $hlen = $len / 2; $str =~ s/<[^>]*>//g; if ($str =~ /(.*)(\Q$re\E)(.*)/i) { local ($before, $match, $after) = ($1, $2, $3); if (length($before) > $hlen) { $before = "...".substr($before, length($before)-$hlen); } if (length($after) > $hlen) { $after = substr($after, 0, $hlen)."..."; } $str = $before."<b>".&html_escape($match)."</b>".$after; } return $str; } # find_cgi_text(®exps, module, re-mode) # Returns the relative URLs of CGIs that matches some regexps, in the given # module. Does not include those that don't call some header function, as # they cannot be linked to normally sub find_cgi_text { local ($res, $m, $remode) = @_; local $mdir = &module_root_directory($m); local @rv; foreach my $f (glob("$mdir/*.cgi")) { local $found = 0; local $header = 0; open(CGI, "<".$f); LINE: while(my $line = <CGI>) { if ($line =~ /(header|ui_print_header|ui_print_unbuffered_header)\(/) { $header++; } foreach my $r (@$res) { if (!$remode && index($line, $r) >= 0 || $remode && $line =~ /$r/) { $found++; last LINE; } } } close(CGI); if ($found && $header) { local $url = $f; $url =~ s/^\Q$root_directory\E\///; push(@rv, $url); } } return @rv; } # help_file_match(file) # Returns the title if some help file matches the current search sub help_file_match { local ($f) = @_; local $data = &read_file_contents($f); local $title; if ($data =~ /<header>([^<]*)<\/header>/) { $title = $1; } $data =~ s/\s+/ /g; $data =~ s/<p>/\n\n/gi; $data =~ s/<br>/\n/gi; $data =~ s/<[^>]+>//g; if ($data =~ /\Q$re\E/i) { return ($title, $data); } return ( ); } # cgi_page_title(module, cgi) # Given a CGI, return the text for its page title, if possible sub cgi_page_title { local ($m, $cgi) = @_; local $data = &read_file_contents(&module_root_directory($m)."/".$cgi); local $rv; if ($data =~ /(ui_print_header|ui_print_unbuffered_header)\([^,]+,[^,]*(\$text\{'([^']+)'|\$text\{"([^"]+)"|\&text\('([^']+)'|\&text\("([^"]+)")/) { # New header function, with arg before title local $msg = $3 || $4 || $5 || $6; local %mtext = &load_language($m); $rv = $mtext{$msg}; } elsif ($data =~ /(^|\s|mail_page_)header\(\s*(\$text\{'([^']+)'|\$text\{"([^"]+)"|\&text\('([^']+)'|\&text\("([^"]+)")/) { # Old header function local $msg = $3 || $4 || $5 || $6; local %mtext = &load_language($m); $rv = $mtext{$msg}; } if ($cgi eq "index.cgi" && !$rv) { # If no title was found for an index.cgi, use module title local %minfo = &get_module_info($m); $rv = $minfo{'desc'}; } return $rv; } # cgi_page_args(module, cgi) # Given a module and CGI name, returns a string of URL parameters that can be # used for linking to it. Returns "none" if parameters are needed, but cannot # be determined. sub cgi_page_args { local ($m, $cgi) = @_; local $mroot = &module_root_directory($m); if (-r "$mroot/cgi_args.pl") { # Module can tell us what args to use &foreign_require($m, "cgi_args.pl"); $args = &foreign_call($m, "cgi_args", $cgi); if (defined($args)) { return $args; } } if ($cgi eq "index.cgi") { # Index page is always safe to link to return undef; } # Otherwise check if it appears to parse any args local $data = &read_file_contents($mroot."/".$cgi); if ($data =~ /(ReadParse|ReadParseMime)\(/) { return "none"; } return undef; } 1;