X7ROOT File Manager
Current Path:
/usr/libexec/webmin/usermin
usr
/
libexec
/
webmin
/
usermin
/
📁
..
📄
CHANGELOG
(3.94 KB)
📄
acl_security.pl
(1.37 KB)
📄
backup_config.pl
(2.17 KB)
📄
bootup.cgi
(1.12 KB)
📄
cgi_args.pl
(160 B)
📄
change_access.cgi
(783 B)
📄
change_advanced.cgi
(1.57 KB)
📄
change_anon.cgi
(758 B)
📄
change_bind.cgi
(2.96 KB)
📄
change_lang.cgi
(409 B)
📄
change_mobile.cgi
(989 B)
📄
change_os.cgi
(1.9 KB)
📄
change_referers.cgi
(462 B)
📄
change_session.cgi
(5.15 KB)
📄
change_ssl.cgi
(2.44 KB)
📄
change_theme.cgi
(675 B)
📄
change_twofactor.cgi
(1.07 KB)
📄
change_ui.cgi
(1.59 KB)
📄
change_users.cgi
(1.19 KB)
📄
change_web.cgi
(2.8 KB)
📄
clear_blocked.cgi
(126 B)
📄
clone_mod.cgi
(1.53 KB)
📄
config
(85 B)
📄
config.info
(242 B)
📄
config.info.ar
(315 B)
📄
config.info.ca
(287 B)
📄
config.info.cs
(287 B)
📄
config.info.de
(275 B)
📄
config.info.es
(298 B)
📄
config.info.fa
(221 B)
📄
config.info.fi
(273 B)
📄
config.info.fr
(300 B)
📄
config.info.hu
(0 B)
📄
config.info.it
(304 B)
📄
config.info.ja
(275 B)
📄
config.info.ms
(264 B)
📄
config.info.nl
(266 B)
📄
config.info.no
(244 B)
📄
config.info.pl
(290 B)
📄
config.info.pt_BR
(54 B)
📄
config.info.ru
(62 B)
📄
config.info.uk
(63 B)
📄
config.info.zh_TW
(34 B)
📄
copycert.cgi
(1.58 KB)
📄
defaultacl
(269 B)
📄
delete_mod.cgi
(2.14 KB)
📄
delete_session.cgi
(317 B)
📄
download_cert.cgi
(575 B)
📄
edit_access.cgi
(1.22 KB)
📄
edit_acl.cgi
(620 B)
📄
edit_advanced.cgi
(2.05 KB)
📄
edit_anon.cgi
(807 B)
📄
edit_assignment.cgi
(1.18 KB)
📄
edit_bind.cgi
(2.08 KB)
📄
edit_blocked.cgi
(892 B)
📄
edit_categories.cgi
(2.03 KB)
📄
edit_configs.cgi
(2.68 KB)
📄
edit_dav.cgi
(1.75 KB)
📄
edit_defacl.cgi
(692 B)
📄
edit_descs.cgi
(846 B)
📄
edit_ipkey.cgi
(1.62 KB)
📄
edit_lang.cgi
(876 B)
📄
edit_logout.cgi
(1.16 KB)
📄
edit_mobile.cgi
(1.14 KB)
📄
edit_mods.cgi
(4.49 KB)
📄
edit_os.cgi
(3.04 KB)
📄
edit_referers.cgi
(937 B)
📄
edit_restrict.cgi
(2.05 KB)
📄
edit_session.cgi
(6.01 KB)
📄
edit_ssl.cgi
(6.24 KB)
📄
edit_themes.cgi
(3.28 KB)
📄
edit_twofactor.cgi
(1.65 KB)
📄
edit_ui.cgi
(2.86 KB)
📄
edit_upgrade.cgi
(4.05 KB)
📄
edit_users.cgi
(1.19 KB)
📄
edit_web.cgi
(3.08 KB)
📄
export_mod.cgi
(1.33 KB)
📄
feedback_files.pl
(137 B)
📁
images
📄
index.cgi
(3.64 KB)
📄
install_check.pl
(530 B)
📄
install_mod.cgi
(2.68 KB)
📄
install_theme.cgi
(2.19 KB)
📁
lang
📄
list_configs.cgi
(780 B)
📄
list_restrict.cgi
(1.51 KB)
📄
list_sessions.cgi
(1.42 KB)
📄
log_parser.pl
(1.49 KB)
📄
module.info
(217 B)
📄
module.info.af
(0 B)
📄
module.info.af.auto
(130 B)
📄
module.info.ar
(133 B)
📄
module.info.ar.auto
(16 B)
📄
module.info.be
(0 B)
📄
module.info.be.auto
(229 B)
📄
module.info.bg
(0 B)
📄
module.info.bg.auto
(251 B)
📄
module.info.ca
(131 B)
📄
module.info.ca.auto
(16 B)
📄
module.info.cs
(29 B)
📄
module.info.cs.auto
(116 B)
📄
module.info.da
(0 B)
📄
module.info.da.auto
(129 B)
📄
module.info.de
(122 B)
📄
module.info.de.auto
(16 B)
📄
module.info.el
(0 B)
📄
module.info.el.auto
(212 B)
📄
module.info.es
(34 B)
📄
module.info.es.auto
(127 B)
📄
module.info.eu
(0 B)
📄
module.info.eu.auto
(164 B)
📄
module.info.fa
(0 B)
📄
module.info.fa.auto
(190 B)
📄
module.info.fi
(26 B)
📄
module.info.fi.auto
(103 B)
📄
module.info.fr
(33 B)
📄
module.info.fr.auto
(123 B)
📄
module.info.he
(0 B)
📄
module.info.he.auto
(182 B)
📄
module.info.hr
(0 B)
📄
module.info.hr.auto
(154 B)
📄
module.info.hu
(31 B)
📄
module.info.hu.auto
(120 B)
📄
module.info.it
(34 B)
📄
module.info.it.auto
(114 B)
📄
module.info.ja
(23 B)
📄
module.info.ja.auto
(135 B)
📄
module.info.ko
(0 B)
📄
module.info.ko.auto
(140 B)
📄
module.info.lt
(0 B)
📄
module.info.lt.auto
(162 B)
📄
module.info.lv
(0 B)
📄
module.info.lv.auto
(143 B)
📄
module.info.ms
(120 B)
📄
module.info.ms.auto
(16 B)
📄
module.info.mt
(0 B)
📄
module.info.mt.auto
(152 B)
📄
module.info.nl
(29 B)
📄
module.info.nl.auto
(103 B)
📄
module.info.no
(30 B)
📄
module.info.no.auto
(119 B)
📄
module.info.pl
(120 B)
📄
module.info.pl.auto
(16 B)
📄
module.info.pt
(0 B)
📄
module.info.pt.auto
(153 B)
📄
module.info.pt_BR
(37 B)
📄
module.info.pt_BR.auto
(125 B)
📄
module.info.ro
(0 B)
📄
module.info.ro.auto
(154 B)
📄
module.info.ru
(35 B)
📄
module.info.ru.auto
(200 B)
📄
module.info.sk
(0 B)
📄
module.info.sk.auto
(146 B)
📄
module.info.sl
(0 B)
📄
module.info.sl.auto
(155 B)
📄
module.info.sv
(0 B)
📄
module.info.sv.auto
(142 B)
📄
module.info.th
(0 B)
📄
module.info.th.auto
(258 B)
📄
module.info.tr
(0 B)
📄
module.info.tr.auto
(150 B)
📄
module.info.uk
(0 B)
📄
module.info.uk.auto
(258 B)
📄
module.info.ur
(0 B)
📄
module.info.ur.auto
(192 B)
📄
module.info.vi
(0 B)
📄
module.info.vi.auto
(163 B)
📄
module.info.zh
(0 B)
📄
module.info.zh.auto
(114 B)
📄
module.info.zh_TW
(25 B)
📄
module.info.zh_TW.auto
(98 B)
📄
move.cgi
(606 B)
📄
newkey.cgi
(2.64 KB)
📄
restart.cgi
(110 B)
📄
save_acl.cgi
(355 B)
📄
save_assignment.cgi
(588 B)
📄
save_categories.cgi
(1.05 KB)
📄
save_configs.cgi
(751 B)
📄
save_dav.cgi
(1019 B)
📄
save_defacl.cgi
(626 B)
📄
save_descs.cgi
(585 B)
📄
save_ipkey.cgi
(1.49 KB)
📄
save_logout.cgi
(1022 B)
📄
save_restrict.cgi
(1.31 KB)
📄
save_uconfigs.cgi
(1.38 KB)
📄
savekey.cgi
(2.38 KB)
📄
start.cgi
(200 B)
📄
stop.cgi
(203 B)
📄
switch.cgi
(317 B)
📄
syslog_logs.pl
(651 B)
📄
uninstall.pl
(350 B)
📄
update.cgi
(3.55 KB)
📄
update.pl
(3.71 KB)
📄
update_sched.cgi
(1.98 KB)
📄
upgrade.cgi
(9.57 KB)
📄
usermin-lib.pl
(26.86 KB)
Editing: upgrade.cgi
#!/usr/bin/perl # upgrade.cgi # Upgrade usermin if possible require './usermin-lib.pl'; $access{'upgrade'} || &error($text{'acl_ecannot'}); &foreign_require("proc", "proc-lib.pl"); if ($ENV{'CONTENT_TYPE'} =~ /boundary=/) { &ReadParseMime(); } else { &ReadParse(); } &get_usermin_miniserv_config(\%miniserv); &ui_print_unbuffered_header(undef, $in{'install'} ? $text{'upgrade_title2'} : $text{'upgrade_title'}, ""); if ($in{'source'} == 0) { # from local file &error_setup(&text('upgrade_err1', $in{'file'})); $file = $in{'file'}; if (!(-r $file)) { &inst_error($text{'upgrade_efile'}); } } elsif ($in{'source'} == 1) { # from uploaded file &error_setup($text{'upgrade_err2'}); $file = &transname(); $need_unlink = 1; if ($no_upload) { &inst_error($text{'upgrade_ebrowser'}); } &open_tempfile(MOD, ">$file", 0, 1); &print_tempfile(MOD, $in{'upload'}); &close_tempfile(MOD); } elsif ($in{'source'} == 2) { # find latest version at www.webmin.com by looking at index page &error_setup($text{'upgrade_err3'}); $file = &transname(); &http_download('www.webmin.com', 80, '/index6.html', $file, \$error); $error && &inst_error($error); open(FILE, "<$file"); while(<FILE>) { if (/usermin-([0-9\.]+)-(\d+)\.tar\.gz/ || /usermin-([0-9\.]+)\.tar\.gz/) { $version = $1; $release = $2; last; } } close(FILE); unlink($file); if (!$in{'force'}) { if ($version == &get_usermin_version()) { &inst_error(&text('upgrade_elatest', $version)); } elsif ($version <= &get_usermin_version()) { &inst_error(&text('upgrade_eversion', $version)); } } # Work out the current Usermin type (webmail or regular) $product = "usermin"; if (&has_command("rpm") && $in{'mode'} eq 'rpm' && &execute_command("rpm -q usermin-webmail") == 0) { $product = "usermin-webmail"; } elsif (&has_command("dpkg") && $in{'mode'} eq 'deb' && &execute_command("dpkg --list usermin-webmail") == 0) { $product = "usermin-webmail"; } if ($in{'mode'} eq 'rpm') { $release ||= 1; $progress_callback_url = &convert_osdn_url( "http://$webmin::osdn_host/webadmin/${product}-${version}-${release}.noarch.rpm"); } elsif ($in{'mode'} eq 'deb') { $release = $release ? "-".$release : ""; $progress_callback_url = &convert_osdn_url( "http://$webmin::osdn_host/webadmin/${product}_${version}${release}_all.deb"); } else { $release = $release ? "-".$release : ""; $progress_callback_url = &convert_osdn_url( "http://$webmin::osdn_host/webadmin/${product}-${version}${release}.tar.gz"); } ($host, $port, $page, $ssl) = &parse_http_url($progress_callback_url); &http_download($host, $port, $page, $file, \$error, \&progress_callback, $ssl); $error && &inst_error($error); $need_unlink = 1; } elsif ($in{'source'} == 5) { # Download from some URL &error_setup(&text('upgrade_err5', $in{'url'})); $file = &transname(); $progress_callback_url = $in{'url'}; if ($in{'url'} =~ /^(http|https):\/\/([^\/]+)(\/.*)$/) { $ssl = $1 eq 'https'; $host = $2; $page = $3; $port = $ssl ? 443 : 80; if ($host =~ /^(.*):(\d+)$/) { $host = $1; $port = $2; } &http_download($host, $port, $page, $file, \$error, \&progress_callback, $ssl); } elsif ($in{'url'} =~ /^ftp:\/\/([^\/]+)(:21)?\/(.*)$/) { $host = $1; $ffile = $3; &ftp_download($host, $ffile, $file, \$error, \&progress_callback); } else { &inst_error($text{'upgrade_eurl'}); } $need_unlink = 1; $error && &inst_error($error); } $qfile = quotemeta($file); # gunzip the file if needed open(FILE, "<$file"); read(FILE, $two, 2); close(FILE); if ($two eq "\037\213") { if (!&has_command("gunzip")) { &inst_error($text{'upgrade_egunzip'}); } $newfile = &transname(); $out = `gunzip -c $file 2>&1 >$newfile`; if ($?) { unlink($newfile); &inst_error(&text('upgrade_egzip', "<tt>$out</tt>")); } unlink($file) if ($need_unlink); $need_unlink = 1; $file = $newfile; } $qfile = quotemeta($file); # Get list of updates $updatestemp = &transname(); &http_download($update_host, $update_port, $update_page, $updatestemp, \$updates_error); if ($in{'mode'} eq 'rpm') { # Check if it is an RPM package $out = `rpm -qp $qfile`; $out =~ /^usermin-(\d+\.\d+)/ || $out =~ /^usermin-webmail-(\d+\.\d+)/ || &inst_error($text{'upgrade_erpm'}); $version = $1; if ($version <= &get_usermin_version() && !$in{'force'}) { &inst_error(&text('upgrade_eversion', $version)); } # Install the RPM if ($in{'force'}) { $cmd = "rpm -U --force --nodeps $qfile"; } else { $cmd = "rpm -U --ignoreos --ignorearch --nodeps $qfile"; } print "<p>",&text($in{'install'} ? 'upgrade_setup2' : 'upgrade_setup', "<tt>$cmd</tt>"),"<br>\n"; print "<pre>"; &proc::safe_process_exec($cmd, 0, 0, STDOUT, undef, 1); print "</pre>"; unlink($file) if ($need_unlink); } elsif ($in{'mode'} eq 'deb') { # Check if it is a Debian package $out = `dpkg --info $qfile`; $out =~ /Package:\s+(\S+)/ && ($1 eq "usermin" || $1 eq "usermin-webmail") || &inst_error($text{'upgrade_edeb'}); $out =~ /Version:\s+(\S+)/ || &inst_error($text{'upgrade_edeb'}); $version = $1; if ($version <= &get_usermin_version() && !$in{'force'}) { &inst_error(&text('upgrade_eversion', $version)); } # Install the package $cmd = "dpkg --install $qfile"; print "<p>",&text($in{'install'} ? 'upgrade_setup2' : 'upgrade_setup', "<tt>$cmd</tt>"),"<br>\n"; print "<pre>"; &proc::safe_process_exec($cmd, 0, 0, STDOUT, undef, 1); print "</pre>"; unlink($file) if ($need_unlink); } else { # Check if it is a usermin tarfile open(TAR, "tar tf $file 2>&1 |"); while(<TAR>) { if (/^usermin-([0-9\.]+)\//) { $version = $1; } if (/^webmin-([0-9\.]+)\//) { $webmin_version = $1; } if (/^[^\/]+\/(\S+)$/) { $hasfile{$1}++; } } close(TAR); if ($webmin_version) { &inst_error(&text('upgrade_ewebmin', $webmin_version)); } if (!$version) { if ($hasfile{'module.info'}) { &inst_error(&text('upgrade_emod', 'edit_mods.cgi')); } else { &inst_error($text{'upgrade_etar'}); } } if (!$in{'force'}) { if ($version <= &get_usermin_version()) { &inst_error(&text('upgrade_eversion', $version)); } } $| = 1; local $cmd; if ($in{'install'}) { # Installing .. extract it in /usr/local and run setup.sh local $root = "/usr/local"; mkdir($root, 0755); $out = `cd $root ; tar xf $file 2>&1 >/dev/null`; if ($?) { &inst_error(&text('upgrade_euntar', "<tt>$out</tt>")); } unlink($file) if ($need_unlink); $ENV{'config_dir'} = $standard_usermin_dir; $ENV{'var_dir'} = "/var/usermin"; $perl = &get_perl_path(); $ENV{'perl'} = $perl; $ENV{'autoos'} = 3; $ENV{'port'} = 20000; $ENV{'ssl'} = 1; $ENV{'os_type'} = $gconfig{'os_type'}; $ENV{'os_version'} = $gconfig{'os_version'}; $ENV{'real_os_type'} = $gconfig{'real_os_type'}; $ENV{'real_os_version'} = $gconfig{'real_os_version'}; $cmd = "(cd $root/usermin-$version && ./setup.sh)"; print "<p>",&text('upgrade_setup2', "<tt>setup.sh</tt>"),"<br>\n"; } else { # Upgrading .. work out where to extract if ($in{'dir'}) { # Since we are currently installed in a fixed directory, # just extract to a temporary location $extract = &transname(); mkdir($extract, 0755); } else { # Next to the current directory $extract = "$miniserv{'root'}/.."; } # Extract it next to the current directory and run setup.sh $out = `cd $extract ; tar xf $file 2>&1 >/dev/null`; if ($?) { &inst_error(&text('upgrade_euntar', "<tt>$out</tt>")); } unlink($file) if ($need_unlink); $ENV{'config_dir'} = $config{'usermin_dir'}; $ENV{'webmin_upgrade'} = 1; $ENV{'autothird'} = 1; $setup = $in{'dir'} ? "./setup.sh '$in{'dir'}'" : "./setup.sh"; if ($in{'delete'}) { $ENV{'deletedold'} = 1; $cmd = "(cd $extract/usermin-$version && $setup && rm -rf \"$miniserv{'root'}\")"; } else { $cmd = "(cd $extract/usermin-$version && $setup)"; } print "<p>",&text('upgrade_setup', "<tt>setup.sh</tt>"),"<br>\n"; } print "<pre>"; &proc::safe_process_exec($cmd, 0, 0, STDOUT, undef, 1); print "</pre>"; if ($in{'dir'}) { # Can delete the temporary source directory system("rm -rf \"$extract\""); } } # Notify Webmin that this module might now be usable &foreign_require("webmin", "webmin-lib.pl"); ($inst, $changed) = &webmin::build_installed_modules(0, 'usermin'); if (@$changed && defined(&theme_post_change_modules)) { &theme_post_change_modules(); } &webmin_log($in{'install'} ? "uinstall" : "upgrade", undef, undef, { 'version' => $version, 'mode' => $in{'mode'} }); # Find out about any updates for this new version. if ($updates_error) { print "<br>",&text('upgrade_eupdates', $updates_error),"<p>\n"; } else { open(UPDATES, "<$updatestemp"); while(<UPDATES>) { if (/^([^\t]+)\t+([^\t]+)\t+([^\t]+)\t+([^\t]+)\t+(.*)/) { push(@updates, [ $1, $2, $3, $4, $5 ]); } } close(UPDATES); unlink($updatestemp); $bversion = &base_version($version); foreach $u (@updates) { next if ($u->[1] >= $bversion + .01 || $u->[1] <= $bversion || $u->[1] <= $version); local $osinfo = { 'os_support' => $u->[3] }; next if (!&check_usermin_os_support($osinfo)); $ucount++; } if ($ucount) { print "<br>",&text('upgrade_updates', $ucount, "update.cgi?source=0&show=0&missing=0"),"<p>\n"; } } &ui_print_footer("", $text{'index_return'}); sub inst_error { unlink($file) if ($need_unlink); &error($_[0]); exit; }
Upload File
Create Folder