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.217.15
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
share /
usermin /
authentic-theme /
Delete
Unzip
Name
Size
Permission
Date
Action
extensions
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
help
[ 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
modules
[ DIR ]
drwxr-xr-x
2025-02-07 09:25
unauthenticated
[ DIR ]
drwxr-xr-x
2025-02-07 09:25
401.cgi
342
B
-rwxr-xr-x
2026-07-19 16:28
403.cgi
342
B
-rwxr-xr-x
2026-07-19 16:28
404.cgi
342
B
-rwxr-xr-x
2026-07-19 16:28
FUNDING.yml
102
B
-rw-r--r--
2026-07-19 16:26
LICENSE
1.04
KB
-rw-r--r--
2026-07-19 16:26
THEME.pgp
3.03
KB
-rw-r--r--
2026-07-19 16:26
authentic-funcs.pl
29.95
KB
-rw-r--r--
2026-07-19 16:26
authentic-init.pl
84.64
KB
-rw-r--r--
2026-07-19 16:26
authentic-lib.pl
88.54
KB
-rw-r--r--
2026-07-19 16:26
authentic.pl
60.57
KB
-rw-r--r--
2026-07-19 16:26
config
139
B
-rw-r--r--
2026-07-19 16:26
config.cgi
6.73
KB
-rwxr-xr-x
2026-07-19 16:28
config_save.cgi
2.54
KB
-rwxr-xr-x
2026-07-19 16:28
index.cgi
309
B
-rwxr-xr-x
2026-07-19 16:28
login-lib-funcs.pl
18.66
KB
-rw-r--r--
2026-07-19 16:26
login-lib.pl
1.48
KB
-rw-r--r--
2026-07-19 16:26
manifest.template
920
B
-rw-r--r--
2026-07-19 16:26
mconfig.cgi
6.59
KB
-rwxr-xr-x
2026-07-19 16:28
mconfig_save.cgi
1.68
KB
-rwxr-xr-x
2026-07-19 16:28
navigation-lib.pl
63.24
KB
-rw-r--r--
2026-07-19 16:26
pam_login.cgi
3.41
KB
-rwxr-xr-x
2026-07-19 16:28
password_form.cgi
3.91
KB
-rwxr-xr-x
2026-07-19 16:28
postinstall-usermin.pl
264
B
-rwxr-xr-x
2026-07-19 16:28
postinstall.pl
645
B
-rwxr-xr-x
2026-07-19 16:28
service-worker.js
94
B
-rw-r--r--
2026-07-19 16:26
session_login.cgi
4.52
KB
-rwxr-xr-x
2026-07-19 16:28
settings-backgrounds.cgi
3.62
KB
-rwxr-xr-x
2026-07-19 16:28
settings-backgrounds_save.cgi
1.63
KB
-rwxr-xr-x
2026-07-19 16:28
settings-editor_favorites_read.cgi
897
B
-rwxr-xr-x
2026-07-19 16:28
settings-editor_favorites_write.cgi
574
B
-rwxr-xr-x
2026-07-19 16:28
settings-editor_read.cgi
2.38
KB
-rwxr-xr-x
2026-07-19 16:28
settings-editor_write.cgi
973
B
-rwxr-xr-x
2026-07-19 16:28
settings-favorites_save.cgi
632
B
-rwxr-xr-x
2026-07-19 16:28
settings-lib.pl
651
B
-rw-r--r--
2026-07-19 16:26
settings-logos.cgi
4.61
KB
-rwxr-xr-x
2026-07-19 16:28
settings-logos_save.cgi
2.34
KB
-rwxr-xr-x
2026-07-19 16:28
stats-lib-funcs.pl
16.76
KB
-rw-r--r--
2026-07-19 16:26
stats-lib.pl
432
B
-rw-r--r--
2026-07-19 16:26
stats.cgi
4.2
KB
-rwxr-xr-x
2026-07-19 16:28
stats.pl
7.83
KB
-rwxr-xr-x
2026-07-19 16:28
sysinfo.cgi
7.69
KB
-rwxr-xr-x
2026-07-19 16:28
tconfig-lib.pl
38.67
KB
-rw-r--r--
2026-07-19 16:26
tconfig.cgi
4.44
KB
-rwxr-xr-x
2026-07-19 16:28
theme-update.sh
8.21
KB
-rwxr-xr-x
2026-07-19 16:26
theme.info
374
B
-rw-r--r--
2026-07-19 16:26
theme.info.no
24
B
-rw-r--r--
2026-07-19 16:26
uconfig.cgi
6.29
KB
-rwxr-xr-x
2026-07-19 16:28
uconfig_save.cgi
1.99
KB
-rwxr-xr-x
2026-07-19 16:28
uninstall-usermin.pl
170
B
-rwxr-xr-x
2026-07-19 16:28
uninstall.pl
346
B
-rwxr-xr-x
2026-07-19 16:28
xhr-lib.pl
25.18
KB
-rw-r--r--
2026-07-19 16:26
xhr.cgi
355
B
-rwxr-xr-x
2026-07-19 16:28
Save
Rename
#!/usr/bin/perl # # Authentic Theme (https://github.com/authentic-theme/authentic-theme) # Copyright Ilia Rostovtsev <ilia@virtualmin.com> # Licensed under MIT (https://github.com/authentic-theme/authentic-theme/blob/master/LICENSE) # use strict; require($ENV{'THEME_ROOT'} . "/stats-lib.pl"); our ($config_directory, $current_theme, $root_directory, $var_directory, $base_remote_user, %stats_text); my $parent_path = $ENV{'HTTP_COMPLETE_WEBMIN_PATH'} || $ENV{'HTTP_WEBMIN_PATH'} || ''; my $link_proxy = $parent_path =~ /\/link\.cgi\/\d{8,16}/ ? 1 : 0; sub print_stats_json { my ($data, $rewrite_links) = @_; my $content_type = $link_proxy && $rewrite_links ? "text/html" : "application/json"; print "Content-type: $content_type;\n\n"; print convert_to_json($data); } # Check access init_prefail(); if (!defined(&webmin_user_is_admin) || !webmin_user_is_admin()) { print_stats_json({ error => $stats_text{'index_noadmin_eaccess'}, access => 0 }); exit; } # Check dependencies my @errors; my @modnames = ("Digest::SHA", "Digest::MD5", "IO::Select", "Time::HiRes", "Net::WebSocket::Server"); foreach my $modname (@modnames) { eval "use ${modname};"; if ($@) { push(@errors, $@, $modname); push(@errors, stats_text('index_mods_missing', $modname)); last; } } if (@errors) { print_stats_json({ error => $errors[2], error_module => $errors[1], error_stack => $errors[0] }); exit; } # Get the log file my $get_logfile = sub { my ($port) = @_; return "$var_directory/modules/$current_theme/stats-server-$port.log"; }; # Get the socket URL my $get_socket = sub { my ($port) = @_; return get_miniserv_websocket_url($port, undef, $current_theme); }; # Prevent race condition my $tempname_dir = tempname_dir(); my $lock_file = "stats-server-locking"; my $lock_file_checked = 0; while ($lock_file_checked < 3 && -r "$tempname_dir/$lock_file") { $lock_file_checked++; sleep(1); } my $lock = transname($lock_file); my $lockfh; open_tempfile($lockfh, ">$lock"); print_tempfile($lockfh, $$); close_tempfile($lockfh); sleep(1); # Do we have an active socket? my %miniserv; get_miniserv_config(\%miniserv); foreach my $k (keys %miniserv) { if ($k =~ /^websockets_\/$current_theme\/ws-(\d+)$/) { my $port = $1; my $host = $miniserv{$k}; ($host) = $host =~ /.*host=([^ ]+).*/; next if (!$host); # Is this socket still active? my $err; open_socket($host, $port, my $fh, \$err); next if ($err); my %rv = ( success => 1, port => $port, new => 0, socket => $get_socket->($port), errlog => $get_logfile->($port) ); if ($link_proxy) { my ($backend_session) = $miniserv{$k} =~ /\bbackend_session=(\S+)/; next if (!$backend_session); $rv{'session'} = $backend_session; } print_stats_json(\%rv, 1); exit; } } # Allocate port my $websocket_session_id = $link_proxy ? generate_miniserv_websocket_token() : $main::session_id; my $port = allocate_miniserv_websocket( $current_theme, $base_remote_user, ($link_proxy ? $websocket_session_id : undef)); # Launch the stats server my $server_name = "stats.pl"; my $statsserver_cmd = "$config_directory/$current_theme/$server_name"; create_wrapper($statsserver_cmd, $current_theme, $server_name) if (!-r $statsserver_cmd); # Launch the server in a sub-process (no fork) my $logfile = $get_logfile->($port); my $session_id_q = quotemeta($main::session_id); my $websocket_session_id_q = quotemeta($websocket_session_id); my $statsserver_cmd_q = quotemeta($statsserver_cmd); my $logfile_q = quotemeta($logfile); my $extra_env = $link_proxy ? "WEBSOCKET_SESSION_ID=$websocket_session_id_q " : ""; my $rs = system_logged( "SESSION_ID=$session_id_q ". $extra_env. "$statsserver_cmd_q @{[quotemeta($port)]} ". ">$logfile_q 2>&1 </dev/null &"); # Return the result my %rv = ( success => !$rs, port => $port, socket => $get_socket->($port), new => 1, errlog => $logfile ); $rv{'session'} = $websocket_session_id if ($link_proxy); print_stats_json(\%rv, $rv{'success'}); # Make sure the server is up sleep(1);