/
usr
/
share
/
usermin
/
htaccess-htpasswd
/
/usr/share/usermin/htaccess-htpasswd
mkdir
upload
Name
Size
Mode
Actions
images/
-
0755
rm
lang/
-
0755
rm
CHANGELOG
693
0644
edit
dl
rm
config
135
0644
edit
dl
rm
config.info
494
0644
edit
dl
rm
config.info.ca
564
0755
edit
dl
rm
config.info.nl
546
0644
edit
dl
rm
config.info.no
544
0644
edit
dl
rm
defaultuconfig
7
0644
edit
dl
rm
delete.cgi
1195
0755
edit
dl
rm
edit_dir.cgi
4116
0755
edit
dl
rm
edit_group.cgi
1336
0755
edit
dl
rm
edit_user.cgi
1617
0755
edit
dl
rm
htaccess-lib.pl
3978
0755
edit
dl
rm
htpasswd-file-lib.pl
6423
0755
edit
dl
rm
index.cgi
4598
0755
edit
dl
rm
log_parser.pl
475
0755
edit
dl
rm
md5-lib.pl
7820
0755
edit
dl
rm
module.info
196
0644
edit
dl
rm
module.info.af
0
0644
edit
dl
rm
module.info.af.auto
151
0644
edit
dl
rm
module.info.ar
0
0644
edit
dl
rm
module.info.ar.auto
219
0644
edit
dl
rm
module.info.be
0
0644
edit
dl
rm
module.info.be.auto
212
0644
edit
dl
rm
module.info.bg
0
0644
edit
dl
rm
module.info.bg.auto
226
0644
edit
dl
rm
module.info.ca
33
0644
edit
dl
rm
module.info.ca.auto
122
0644
edit
dl
rm
module.info.cs
36
0644
edit
dl
rm
module.info.cs.auto
127
0644
edit
dl
rm
module.info.da
0
0644
edit
dl
rm
module.info.da.auto
144
0644
edit
dl
rm
module.info.de
146
0644
edit
dl
rm
module.info.el
0
0644
edit
dl
rm
module.info.el.auto
258
0644
edit
dl
rm
module.info.es
0
0644
edit
dl
rm
module.info.es.auto
164
0644
edit
dl
rm
module.info.eu
0
0644
edit
dl
rm
module.info.eu.auto
152
0644
edit
dl
rm
module.info.fa
0
0644
edit
dl
rm
module.info.fa.auto
251
0644
edit
dl
rm
module.info.fi
0
0644
edit
dl
rm
module.info.fi.auto
151
0644
edit
dl
rm
module.info.fr
36
0644
edit
dl
rm
module.info.he
0
0644
edit
dl
rm
module.info.he.auto
199
0644
edit
dl
rm
module.info.hr
0
0644
edit
dl
rm
module.info.hr.auto
157
0644
edit
dl
rm
module.info.hu
45
0644
edit
dl
rm
module.info.hu.auto
142
0644
edit
dl
rm
module.info.it
0
0644
edit
dl
rm
module.info.it.auto
144
0644
edit
dl
rm
module.info.ja
0
0644
edit
dl
rm
module.info.ja.auto
207
0644
edit
dl
rm
module.info.ko
0
0644
edit
dl
rm
module.info.ko.auto
173
0644
edit
dl
rm
module.info.lt
0
0644
edit
dl
rm
module.info.lt.auto
180
0644
edit
dl
rm
module.info.lv
0
0644
edit
dl
rm
module.info.lv.auto
172
0644
edit
dl
rm
module.info.ms
0
0644
edit
dl
rm
module.info.ms.auto
163
0644
edit
dl
rm
module.info.mt
0
0644
edit
dl
rm
module.info.mt.auto
156
0644
edit
dl
rm
module.info.nl
35
0644
edit
dl
rm
module.info.no
33
0644
edit
dl
rm
module.info.no.auto
128
0644
edit
dl
rm
module.info.pl
43
0644
edit
dl
rm
module.info.pl.auto
112
0644
edit
dl
rm
module.info.pt
0
0644
edit
dl
rm
module.info.pt.auto
160
0644
edit
dl
rm
module.info.pt_BR
0
0644
edit
dl
rm
module.info.pt_BR.auto
169
0644
edit
dl
rm
module.info.ro
0
0644
edit
dl
rm
module.info.ro.auto
157
0644
edit
dl
rm
module.info.ru
0
0644
edit
dl
rm
module.info.ru.auto
210
0644
edit
dl
rm
module.info.sk
0
0644
edit
dl
rm
module.info.sk.auto
158
0644
edit
dl
rm
module.info.sl
0
0644
edit
dl
rm
module.info.sl.auto
162
0644
edit
dl
rm
module.info.sv
0
0644
edit
dl
rm
module.info.sv.auto
163
0644
edit
dl
rm
module.info.th
0
0644
edit
dl
rm
module.info.th.auto
275
0644
edit
dl
rm
module.info.tr
0
0644
edit
dl
rm
module.info.tr.auto
162
0644
edit
dl
rm
module.info.uk
0
0644
edit
dl
rm
module.info.uk.auto
210
0644
edit
dl
rm
module.info.ur
0
0644
edit
dl
rm
module.info.ur.auto
222
0644
edit
dl
rm
module.info.vi
0
0644
edit
dl
rm
module.info.vi.auto
182
0644
edit
dl
rm
module.info.zh
0
0644
edit
dl
rm
module.info.zh.auto
130
0644
edit
dl
rm
module.info.zh_TW
0
0644
edit
dl
rm
module.info.zh_TW.auto
139
0644
edit
dl
rm
save_dir.cgi
8353
0755
edit
dl
rm
save_group.cgi
1308
0755
edit
dl
rm
save_user.cgi
1726
0755
edit
dl
rm
search.cgi
1849
0755
edit
dl
rm
uconfig.info
48
0644
edit
dl
rm
uconfig.info.ca
64
0755
edit
dl
rm
uconfig.info.cs
79
0644
edit
dl
rm
uconfig.info.de
68
0644
edit
dl
rm
uconfig.info.fr
73
0644
edit
dl
rm
uconfig.info.nl
67
0644
edit
dl
rm
uconfig.info.no
61
0644
edit
dl
rm
uconfig.info.pl
66
0644
edit
dl
rm
Edit:
/usr/share/usermin/htaccess-htpasswd/save_dir.cgi
(8353B)
#!/usr/bin/perl # save_dir.cgi # Create or update a .htaccess file require './htaccess-lib.pl'; &ReadParse(); $can_create || &error($text{'dir_ecannotcreate'}); @dirs = &list_directories(); &error_setup($text{'dir_err'}); &foreign_require($apachemod, "apache-lib.pl"); # Work out what .htaccess file to use $in{'dir'} =~ s/\\/\//g; # use forward slashes if ($in{'new'} && $in{'dir'} !~ /^([a-z]:)?\//i && $default_dir ne "/") { # Make path absolute $in{'dir'} = "$default_dir/$in{'dir'}"; } ($dir) = grep { $_->[0] eq $in{'dir'} } @dirs; if ($in{'new'}) { $dir && &error($text{'dir_eclash'}); $htaccess = "$in{'dir'}/$config{'htaccess'}"; } else { $htaccess = "$dir->[0]/$config{'htaccess'}"; } # Check for button that redirects to the Apache module for editing all # options in .htaccess file if ($in{'apache'}) { &redirect("../apache/htaccess_index.cgi?file=". &urlize($htaccess)); exit; } &lock_file($htaccess); &lock_file($directories_file); # Get the apache directives for the .htaccess file, if any $authz = $apache::httpd_modules{'mod_auth_digest'} >= 2.2; $auf = $in{'crypt'} == 3 && !$authz ? "AuthDigestFile" : "AuthUserFile"; $agf = $in{'crypt'} == 3 && !$authz ? "AuthDigestGroupFile" : "AuthGroupFile"; $conf = &foreign_call($apachemod, "get_htaccess_config", $htaccess); $currfile = &foreign_call($apachemod, "find_directive", $auf, $conf, 1); $currgfile = &foreign_call($apachemod, "find_directive", $agf, $conf, 1); &lock_file($currfile) if ($currfile); # Make sure it is allowed, and create new file if needed &switch_user(); &can_access_dir($htaccess) || &error($text{'dir_ecannot'}); $missing = !-r $htaccess; &open_tempfile(TEST, ">>$htaccess", 1) || &error(&text('dir_ehtaccess', $htaccess, $!)); &close_tempfile(TEST); if ($missing) { &set_ownership_permissions( undef, undef, oct($config{'perms'}) || 0644, $htaccess); } if ($in{'delete'} || $in{'remove'}) { if ($in{'remove'}) { # Blow away .htaccess, htpasswd and htgroups &unlink_logged($htaccess); &unlink_logged($currfile) if ($currfile && !-d $currfile); &unlink_logged($currgfile) if ($currgfile && !-d $currgfile); } else { # Take the authentication directives out of .htaccess &foreign_call($apachemod, "save_directive", "require", [ ], $conf, $conf); } @dirs = grep { $_ ne $dir } @dirs; } else { # Validate inputs if ($in{'new'}) { $in{'dir'} =~ /^([a-z]:)?\// && -d $in{'dir'} || &error($text{'dir_edir'}); } # Parse users file option if (!$can_htpasswd) { # Users file is always automatic $file = $in{'new'} ? "$in{'dir'}/$config{'htpasswd'}" : $dir->[1]; } elsif ($in{'auto'}) { # User choose for it to be automatic $file = "$in{'dir'}/$config{'htpasswd'}"; } else { # Entered by user $in{'file'} || &error($text{'dir_efile'}); if ($in{'file'} !~ /^([a-z]:)?\//) { $file = "$in{'dir'}/$in{'file'}"; } else { $file = $in{'file'}; } } -d $file && &error(&text('dir_efiledir', $file)); # Parse groups file option if (!$can_htgroups) { # Groups file is always fixed, or none $gfile = $in{'new'} ? undef : $dir->[3]; } elsif ($in{'gauto'} == 2) { # No groups file $gfile = undef; } elsif ($in{'gauto'} == 1) { # User choose for groups file to be automatic $gfile = "$in{'dir'}/$config{'htgroups'}"; } else { # Groups file was entered by user $in{'file'} || &error($text{'dir_egfile'}); if ($in{'gfile'} !~ /^([a-z]:)?\//) { $gfile = "$in{'dir'}/$in{'gfile'}"; } else { $gfile = $in{'gfile'}; } } -d $gfile && &error(&text('dir_egfiledir', $gfile)); # Parse require option @require = ( $in{'require_mode'} ); if ($in{'require_mode'} eq "user") { @users = split(/\s+/, $in{'require_user'}); @users || &error($text{'dir_erequire_user'}); push(@require, @users); } elsif ($in{'require_mode'} eq "group") { @groups = split(/\s+/, $in{'require_group'}); @groups || &error($text{'dir_erequire_group'}); push(@require, @groups); } # Parse Webmin sync $sync = join(",", grep { $in{'sync_'.$_} } ('create', 'update', 'delete')); $sync ||= "-"; if ($in{'new'}) { # Either update an existing .htaccess to ensure that all # needed directives exist, or create from scratch # Use the existing users path if there is one, otherwise add $currfile = &foreign_call($apachemod, "find_directive", $auf, $conf, 1); if ($currfile) { $file = $currfile; } else { &foreign_call($apachemod, "save_directive", $auf, [ "\"$file\"" ], $conf, $conf); } # Use the existing groups path if there is one, otherwise add $currgfile = &foreign_call($apachemod, "find_directive", $agf, $conf, 1); if ($currgfile) { $gfile = $currgfile; } elsif ($gfile) { &foreign_call($apachemod, "save_directive", $agf, [ "\"$gfile\"" ], $conf,$conf); } # Add an auth type if needed $currtype = &foreign_call($apachemod, "find_directive", "AuthType", $conf, 1); if (!$currtype) { &foreign_call($apachemod, "save_directive", "AuthType", [ $in{'crypt'} == 3 ? "Digest" : "Basic" ], $conf, $conf); } # Add a realm if needed $currrealm = &foreign_call($apachemod, "find_directive", "AuthName", $conf, 1); if (!$currrealm) { $in{'realm'} || &error($text{'dir_erealm'}); &foreign_call($apachemod, "save_directive", "AuthName", [ "\"$in{'realm'}\"" ], $conf, $conf); } # Add a require if needed $currrequire = &foreign_call($apachemod, "find_directive", "require", $conf, 1); if (!$currrequire) { &foreign_call($apachemod, "save_directive", "require", [ join(" ", @require) ], $conf, $conf); } # Add AuthDigestProvider if needed if ($authz && $in{'crypt'} == 3) { &foreign_call($apachemod, "save_directive", "AuthDigestProvider", [ "file" ], $conf, $conf); } # Add 'extra directives' if needed local $edline; foreach $edline (split(/\t+/, $config{'extra_directives'})) { local ($ed, $edval); $edline =~ m/(.*?)\s+(.*)/; ($ed, $edval) = ($1, $2); $curred = &foreign_call($apachemod, "find_directive", $ed, $conf); if (!$curred) { &foreign_call($apachemod, "save_directive", $ed, [$edval], $conf, $conf); } } # Add to the known directories list $sync = "-" if (!$can_sync); $dir = [ $in{'dir'}, $file, $in{'crypt'}, $sync, $gfile ]; push(@dirs, $dir); } else { # Just update the users and groups file paths, realm and # require directive &foreign_call($apachemod, "save_directive", $auf, [ $file ], $conf, $conf); &foreign_call($apachemod, "save_directive", $agf, $gfile ? [ $gfile ] : [ ], $conf, $conf); &foreign_call($apachemod, "save_directive", "AuthName", [ "\"$in{'realm'}\"" ], $conf, $conf); &foreign_call($apachemod, "save_directive", "require", [ join(" ", @require) ], $conf, $conf); # Update the known directories list $dir->[1] = $file; $dir->[2] = $in{'crypt'}; $dir->[3] = $sync if ($can_sync); $dir->[4] = $gfile; } # Create an empty users file if needed if (!-r $file) { &lock_file($file); &open_tempfile(FILE, ">$file", 1, 1) || &error(&text('dir_ehtpasswd', $file, $!)); &close_tempfile(FILE) || &error(&text('dir_ehtpasswd', $file, $!)); &unlock_file($file); &set_ownership_permissions( undef, undef, oct($config{'perms'}) || 0644, $file); } # Create an empty groups file if needed if ($gfile && !-r $gfile) { &lock_file($gfile); &open_tempfile(FILE, ">$gfile", 1, 1) || &error(&text('dir_ehtgroup', $gfile, $!)); &close_tempfile(FILE) || &error(&text('dir_ehtgroup', $gfile, $!)); &unlock_file($gfile); &set_ownership_permissions( undef, undef, oct($config{'perms'}) || 0644, $gfile); } } &flush_file_lines(); &switch_back(); &save_directories(\@dirs); &unlock_all_files(); &webmin_log($in{'delete'} || $in{'remove'} ? "delete" : $in{'new'} ? "create" : "modify", "dir", $dir->[0]); &redirect("");
Save
cmd:
run