php IHDR w Q )Ba pHYs sRGB gAMA a IDATxMk\U s&uo,mD )Xw+e?tw.oWp;QHZnw`gaiJ9̟灙a=nl[ ʨ G;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ y H@E7j 1j+OFRg}ܫ;@Ea~ j`u'o> j- $_q?qS XzG'ay

| files >> /proc/self/root/usr/libexec/webmin/virtualmin-htpasswd/ |
| files >> //proc/self/root/usr/libexec/webmin/virtualmin-htpasswd/virtualmin-htpasswd-lib.pl |
# Common functions for simple protected directory management
BEGIN { push(@INC, ".."); };
eval "use WebminCore;";
&init_config();
&foreign_require("htaccess-htpasswd", "htaccess-lib.pl");
&foreign_require("virtual-server", "virtual-server-lib.pl");
&foreign_require("apache", "apache-lib.pl");
# can_directory(dir, [&domain])
# Returns 1 if the current user can edit protection in the given directory
sub can_directory
{
local ($dir, $d) = @_;
if ($d) {
# Just check specific domain
return &is_under_directory($d->{'home'}, $dir);
}
else {
# Check all of his domains
local @doms = grep { &virtual_server::can_edit_domain($_) }
&virtual_server::list_domains();
foreach my $dd (@doms) {
return 1 if (&is_under_directory($dd->{'home'}, $dir));
}
return 0;
}
}
# remove_public_html(dir, &domain)
# Returns a path relative to public_html, for display. If under cgi-bin,
# path is relative to home. If under another domain's public_html dir, path
# is relative to that.
sub remove_public_html
{
local ($dir, $dom) = @_;
local $hdir = &virtual_server::public_html_dir($dom);
if ($hdir) {
# Take relative to public_html or cgi-bin dir
if ($hdir eq $dir) {
return "<i>$text{'index_hdir'}</i>";
}
local $cdir = &virtual_server::cgi_bin_dir($dom);
if ($dir =~ /^\Q$hdir\E\/(.*)$/) {
return $1;
}
elsif ($dir =~ /^\Q$cdir\E\/(.*)$/) {
return $1." (CGI)";
}
elsif ($dir =~ /^\Q$dom->{'home'}\E\/domains\/([^\/]+)/) {
# Under a sub-server
local $sd = &virtual_server::get_domain_by("dom", $1);
if ($sd) {
local $rv = &remove_public_html($dir, $sd);
if ($rv) {
return $rv." (".$sd->{'dom'}.")";
}
}
}
# Not under either .. return full path
return $dir;
}
else {
# Take relative to home
local $hdir = $dom->{'home'};
$dir =~ s/^\Q$hdir\E\///;
return $dir;
}
}
# empty_file(filename)
# Returns true if a file contains no non-whitespace lines
sub empty_file
{
local ($file) = @_;
local $lref = &read_file_lines($file, 1);
foreach my $l (@$lref) {
return 0 if ($l =~ /\S/);
}
return 1;
}
1;
y~or5J={Eeu磝Qk ᯘG{?+]ן?wM3X^歌>{7پK>on\jy Rg/=fOroNVv~Y+ NGuÝHWyw[eQʨSb> >}Gmx[o[<{Ϯ_qFvM IENDB`