X7ROOT File Manager
Current Path:
/usr/libexec/webmin/authentic-theme
usr
/
libexec
/
webmin
/
authentic-theme
/
📁
..
📄
401.cgi
(339 B)
📄
403.cgi
(339 B)
📄
404.cgi
(339 B)
📄
CHANGELOG.md
(74.28 KB)
📄
FUNDING.yml
(103 B)
📄
LICENSE
(1.04 KB)
📄
THEME.pgp
(3.04 KB)
📄
authentic-funcs.pl
(27.33 KB)
📄
authentic-init.pl
(63.33 KB)
📄
authentic-lib.pl
(100.41 KB)
📄
authentic.pl
(49.24 KB)
📄
config
(139 B)
📄
config.cgi
(6.52 KB)
📄
config_save.cgi
(2.14 KB)
📁
extensions
📁
help
📁
images
📄
index.cgi
(306 B)
📁
lang
📁
lib
📄
manifest-cloudmin.json
(0 B)
📄
manifest-virtualmin.json
(0 B)
📄
manifest-webmin.json
(996 B)
📄
manifest.template
(920 B)
📄
mconfig.cgi
(6.57 KB)
📄
mconfig_save.cgi
(1.69 KB)
📁
modules
📄
navigation-lib.pl
(54.13 KB)
📄
pam_login.cgi
(6.33 KB)
📄
password_form.cgi
(4.07 KB)
📄
postinstall-usermin.pl
(264 B)
📄
postinstall.pl
(645 B)
📄
service-worker.js
(141 B)
📄
session_login.cgi
(8.17 KB)
📄
settings-backgrounds.cgi
(3.61 KB)
📄
settings-backgrounds_save.cgi
(1.16 KB)
📄
settings-editor_favorites_read.cgi
(894 B)
📄
settings-editor_favorites_write.cgi
(571 B)
📄
settings-editor_read.cgi
(2.4 KB)
📄
settings-editor_write.cgi
(967 B)
📄
settings-favorites_save.cgi
(629 B)
📄
settings-lib.pl
(651 B)
📄
settings-logos.cgi
(4.61 KB)
📄
settings-logos_save.cgi
(1.75 KB)
📄
stats.cgi
(8.37 KB)
📄
sysinfo.cgi
(6.44 KB)
📄
tconfig-lib.pl
(33.02 KB)
📄
tconfig.cgi
(6.09 KB)
📄
theme-update.sh
(8.08 KB)
📄
theme.info
(344 B)
📄
theme.info.no
(24 B)
📄
uconfig.cgi
(6.27 KB)
📄
uconfig_save.cgi
(1.99 KB)
📁
unauthenticated
📄
uninstall-usermin.pl
(170 B)
📄
uninstall.pl
(346 B)
📄
xhr-lib.pl
(10.22 KB)
📄
xhr.cgi
(349 B)
Editing: xhr-lib.pl
# # 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; our (%in, %gconfig, $root_directory, $remote_user, $get_user_level); sub xhr { my $type = $in{'type'}; my $subtype = $in{'subtype'}; my $action = $in{'action'}; my %data = (); my $output = sub { my ($data) = @_; # Set no links header print "x-no-links: 1\n"; # Return fetched data if any print_json($data); }; if ($type eq "cmd") { # Fail state restart if ($action eq "restart") { if (webmin_user_is_admin()) { my $systemd = has_command('systemctl'); if ($systemd) { # We need to force kill a potentially stuck process without pid my %miniserv; get_miniserv_config(\%miniserv); my $force_restart = -r $miniserv{'pidfile'} ? "${systemd} kill -s SIGTERM webmin" : "/etc/webmin/stop ; /etc/webmin/start ; /etc/webmin/.stop-init --kill"; system($force_restart); } else { restart_miniserv(); } } } } if ($type eq 'nav') { # Returns navigation menu available for requested domain/server if ($action eq 'validate') { my $module = $in{'module'}; my $param = $in{'param'}; my @menu = list_combined_webmin_menu(undef, \%in, $module); # Returns a list of allowed domain/server related links if ($subtype eq 'links') { my @submenu = map { $_->{'link'} =~ /.*?$module.*\/(\w+\.cgi).*?$param=/, $_->{'link'} =~ /(\/.*?_log\.cgi\?.*)/, $_->{'link'} =~ /(.*?\/webminlog\/.*?\.cgi.*)/, $_->{'link'} =~ /(.*?\/phpini\/.*?\.cgi.*)/, $_->{'link'} =~ /(.*?\/spam\/.*?\.cgi.*)/, $_->{'link'} =~ /(.*?\/apache\/.*?\.cgi.*)/, $_->{'link'} =~ /(.*?\/virtualmin-.*?\/.*?\.cgi.*)/, } array_flatten(grep {$_->[0]->{'link'}} map {$_->{'members'}} @menu); my @fmmenu = map {$_->{'link'} =~ /(filemin\/.*?\.cgi.*)/} @menu; @menu = map {$_->{'link'} =~ /.*?$module.*\/(\w+\.cgi).*?$param=/} @menu; @menu = (@menu, @submenu, @fmmenu); $data{'menu'} = \@menu; } } # Returns default goto if set if ($action eq 'goto') { # Validate if default goto is allowed for the given user my $mod_def = get_default_module(); if ($mod_def) { $data{'gotomodule'} = "$mod_def"; } } # Returns requested navigation if ($action eq 'get') { require("$ENV{'THEME_ROOT'}/navigation-lib.pl"); my ($tab, $page) = nav_detector(); if ($subtype eq 'cloudmin') { $data{'menu'} = nav_cloudmin_menu($page); } elsif ($subtype eq 'virtualmin') { $data{'menu'} = nav_virtualmin_menu($page); } elsif ($subtype eq 'webmail') { $data{'menu'} = nav_mailbox_menu($page); } else { $data{'menu'} = nav_webmin_menu($page); } } } # Check if action is allowed if ($type eq 'can') { if ($action eq 'view_dom') { require("$ENV{'THEME_ROOT'}/navigation-lib.pl"); $data{$action} = nav_virtualmin_domain_available($in{'dom'}, 'id'); } } if ($type eq 'file') { if ($action eq 'cache') { if ($in{'module'} eq 'virtual-server') { if ($in{'submodule'} eq 'server-templates') { if (foreign_available('virtual-server')) { foreign_require("virtual-server"); my $var_dir = $virtual_server::module_var_directory; my $server_template_id = int($in{'server-template-id'}); my $server_template_id_user_file = "$var_dir/$in{'module'}-$in{'submodule'}-$server_template_id.$remote_user"; if ($in{'subaction'} eq 'get') { if (-r $server_template_id_user_file) { $data{'cached'} = unserialise_variable(read_file_contents($server_template_id_user_file)); } } elsif ($in{'subaction'} eq 'put') { my $data = convert_from_json($in{'data'}); write_file_contents($server_template_id_user_file, serialise_variable($data)); &$output(\%data); exit; } } } } } if ($action eq 'motd') { # Get current user motd file if ($subtype eq 'get') { $data{'motd'} = get_all_users_motd_data($remote_user); } # Save current user motd file if ($subtype eq 'set' && webmin_user_is_admin()) { my $data = convert_from_json($in{'data'}); put_user_motd($data); } # Get current user motd sent messages if ($subtype eq 'receive') { $data{'motd'} = get_all_users_motd_data(); } } # Generate given file info if ($action eq 'stat') { my ($module, $sumtype, $jailed_user, $jailed_user_home, $cfile, $mime, $dir, $fzi, $fz, $ft, $s, $sz, $nz); $module = 'filemin'; # $in{'module'}; if (!foreign_available($module)) { $data{'module-access-denied'} = $module; &$output(\%data); exit; } $cfile = $in{'file'}; $sumtype = $in{'checksum'}; $jailed_user = get_fm_jailed_user($module, 1); $jailed_user_home = get_fm_jailed_user($module); if ($jailed_user) { switch_to_given_unix_user($jailed_user); $cfile = $jailed_user_home . $cfile; } else { switch_to_remote_user_safe(); } my $get_file_checksum = sub { my ($cfile, $cmd) = @_; my $sum = 0; my @allowed_checksum_cmds = ('md5sum', 'sha1sum', 'sha256sum'); foreach my $c (@allowed_checksum_cmds) { if ($cmd eq $c) { if (has_command($c)) { $sum = backquote_command("$c " . quotemeta($cfile) . " 2>/dev/null"); $sum =~ s/(\S+)(\s+)(.*)/$1/; $sum = trim($sum); } else { $sum = -1; } } } return $sum; }; # Get given checksum and exit if ($sumtype) { my $sum = &$get_file_checksum($cfile, $sumtype); $data{'checksum'} = $sum; &$output(\%data); exit; } # Build extended file stats $fzi = recursive_disk_usage($cfile); $dir = -d $cfile; $fz = $fzi; $fz = nice_size($fz, -1); $ft = backquote_command("file -b " . quotemeta($cfile) . " 2>/dev/null"); $s = backquote_command("stat " . quotemeta($cfile) . " 2>/dev/null"); $ft = trim($ft); $s =~ /(Size:)(\s+)(\d+)(\s+)/; $sz = length($3) + length($4); $nz = length($fz); $sz -= $nz; $sz = " " x ($sz + 2); $s =~ s/(Size:)(\s+)(\d+)(\s+)/$1$2$fz$sz/; if (!$dir) { $mime = guess_mime_type($cfile, -1); if ($mime == -1) { $mime = undef; } else { $mime = " ($mime) "; } } $s =~ s/(File:)(.*)\n/$1$2\n Type: $ft\n/ if ($ft); $s =~ s/(File:)(\s+)(.*)/$1$2$cfile$mime/; $s =~ s/(Birth:\s+-.*[\n\s]+)//m; $s =~ s/\((\s*)(\d+\/)\s*(.*?)\)/($2$3)/g; my $lsattr_cmd = has_command('lsattr'); if ($lsattr_cmd) { my $lsattr; my $lsattr_param = $dir ? " -d" : undef; $lsattr = backquote_command("$lsattr_cmd$lsattr_param " . quotemeta($cfile) . " 2>/dev/null"); $lsattr =~ s/(\S+)(\s+)(.*)/$1/; $s =~ s/(Links:)(.*)\n/$1$2\n Attrs: $lsattr/ if ($lsattr); } my $getfacl_cmd = has_command('getfacl'); if ($getfacl_cmd) { my $lbl = $lsattr_cmd ? "Attrs:" : "Links:"; my $getfacl = backquote_command("$getfacl_cmd -p " . quotemeta($cfile) . " 2>/dev/null"); my @getfacls = ($getfacl =~ /^(?!(#|user::|group::|other::))([\w\:\-\_]+)/gm); $getfacl = join(' ', @getfacls); $s =~ s/($lbl)(.*)\n/$1$2\n ACLs:$getfacl\n/ if ($getfacl); } if (!$dir) { my @csums = ('md5sum', 'sha1sum', 'sha256sum'); foreach my $c (@csums) { my ($sp, $sumv, $sum, $sumn); $sum = 'data-a-checksum="' . $c . '"'; $sumn = $c; $sumn =~ s/sum//; $sp = " " x (6 - length($sumn)); if ($fzi < 1024000) { $sumv = &$get_file_checksum($cfile, $c); $sum = $sumv if ($sumv != -1); } $s = rtrim($s); $s = "$s\n"; $s .= "$sp$sumn: $sum\n" if ($sumv != -1); } } $data{'content'} = rtrim($s); $data{'size'} = [$fz, $fzi]; } } &$output(\%data); } 1;
Upload File
Create Folder