Skip to content

Commit

Permalink
Merge pull request #5 from virtualmin/dev/support-other-webservers
Browse files Browse the repository at this point in the history
Implement directory protection support across various web servers
  • Loading branch information
jcameron authored Feb 3, 2024
2 parents 7fbd53f + aa14c77 commit 7c54e94
Show file tree
Hide file tree
Showing 96 changed files with 1,200 additions and 406 deletions.
17 changes: 15 additions & 2 deletions add.cgi
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,25 @@ my $usersfile = "$dir/$htusers";
foreach my $clash ("AuthUserFile", "AuthType", "AuthName") {
my $dirclash = &apache::find_directive($clash, $conf);
if ($dirclash) {
&error(&text('add_eclash3', $file, $clash));
&error(&text('add_egclash', $file, $clash));
}
}
-r $usersfile && &error(&text('add_eclash2', $usersfile));
-r $usersfile && &error(&text('add_egclash', $usersfile));
-l $file && &error(&text('add_esymlink', $file));

# Add protected directory in other webserver plugins
foreach my $p (&virtual_server::list_feature_plugins()) {
if (&virtual_server::plugin_defined($p, "feature_add_protected_dir")) {
my $err = &virtual_server::plugin_call($p,
"feature_add_protected_dir", $d,
{ 'protected_dir' => $dir,
'protected_user_file_path' => $usersfile,
'protected_user_file' => $htusers,
'protected_name' => $in{'desc'} });
&error($err) if ($err);
}
}

# Create .htaccess (as domain owner)
&lock_file($file);
&apache::save_directive("AuthUserFile", [ "\"$usersfile\"" ], $conf, $conf);
Expand Down
10 changes: 10 additions & 0 deletions delete.cgi
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,16 @@ foreach my $path (@d) {
&can_directory($path, $d) || &error($text{'delete_ecannot'});
my ($dir) = grep { $_->[0] eq $path } @dirs;
if ($dir) {
# Delete protected directory in other webserver plugins
foreach my $p (&virtual_server::list_feature_plugins()) {
if (&virtual_server::plugin_defined($p, "feature_delete_protected_dir")) {
my $err = &virtual_server::plugin_call($p,
"feature_delete_protected_dir", $d,
{ 'protected_dir' => $dir->[0],
'protected_user_file_path' => $dir->[1] });
&error($err) if ($err);
}
}
# Remove protection directives
no warnings "once";
my $file = "$dir->[0]/$htaccess_htpasswd::config{'htaccess'}";
Expand Down
37 changes: 30 additions & 7 deletions find.cgi
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,20 @@ my %got = map { ( "$_->[0]/$htaccess_htpasswd::config{'htaccess'}", 1 ) } @dirs;
# Start the search
&ui_print_header(&virtual_server::domain_in($d), $text{'find_title'}, "");

print &text('find_doing', "<tt>$d->{'home'}</tt>"),"<p>\n";
my $f_apache = $virtual_server::config{'web'};
my $f_indent = "&nbsp;" x 4;
my $f_label;
$f_label = 2 if (!$f_apache);
print &text('find_doing', "<tt>$d->{'home'}</tt>"),"<br>\n";
open(my $FIND, "find ".quotemeta($d->{'home'})." -name ".
quotemeta($htaccess_htpasswd::config{'htaccess'}).
" -print 2>/dev/null |");
while(my $f = <$FIND>) {
chop($f);
my $f_name = $f;
$f_name =~ s|/[^/]*$|| if (!$f_apache);
if ($got{$f}) {
print &text('find_already', "<tt>$f</tt>"),"<br>\n";
print $f_indent.&text("find_already$f_label", "<tt>$f_name</tt>"),"<br>\n";
next;
}

Expand All @@ -41,19 +47,36 @@ while(my $f = <$FIND>) {
$dir =~ s/\/$htaccess_htpasswd::config{'htaccess'}$//;
if (&can_directory($dir, $d)) {
push(@dirs, [ $dir, $currfile ]);
print &text('find_found', "<tt>$f</tt>",
"<tt>$currfile</tt>"),"<br>\n";
my $f_extra;
if (!$f_apache) {
# Now add newly found protected directory in other webserver plugins
my $currfilename = $currfile; # Extract filename from path
$currfilename =~ s/.*\///;
foreach my $p (&virtual_server::list_feature_plugins()) {
if (&virtual_server::plugin_defined($p, "feature_add_protected_dir")) {
my ($err, $status) = &virtual_server::plugin_call($p,
"feature_add_protected_dir", $d,
{ 'protected_dir' => $dir,
'protected_user_file_path' => $currfile,
'protected_user_file' => $currfilename,
'protected_name' => $text{'find_authreq'} });
$f_extra = $text{"find_webservstatus$status"} if (defined($status));
}
}
}
print $f_indent.&text("find_found$f_label", "<tt>$f_name</tt>",
"<tt>$currfile</tt>")." $f_extra","<br>\n";
}
else {
print &text('find_foundnot', "<tt>$f</tt>"),"<br>\n";
print $f_indent.&text("find_foundnot$f_label", "<tt>$f_name</tt>"),"<br>\n";
}
}
else {
print &text('find_noprot', "<tt>$f</tt>"),"<br>\n";
print $f_indent.&text("find_noprot$f_label", "<tt>$f_name</tt>"),"<br>\n";
}
}
close($FIND);

print $text{'find_founddone'},"<br>\n";
&lock_file($htaccess_htpasswd::directories_file);
&htaccess_htpasswd::save_directories(\@dirs);
&unlock_file($htaccess_htpasswd::directories_file);
Expand Down
3 changes: 2 additions & 1 deletion help/intro.af.auto.html
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
<header> Beskermde kaarte </header> Op hierdie bladsy kan u wagwoordbeskerming byvoeg vir sommige of alle webwerf-kaarte vir hierdie virtuele bediener. Om &#39;n gids te beskerm, gebruik die <b>beskerming toe te voeg vir &#39;n nuwe gids</b> skakel. Om beskerming te verwyder, merk die merkblokkie langs die naam van die gids en klik op die knoppie onder die lys. <p> Sodra die beskerming opgestel is, kan u met behulp van die <b>bladsy Bewerker-pos en FTP-gebruikers</b> beheer watter gebruikers toegang daartoe het. As u op &#39;n gebruiker klik of &#39;n nuwe een skep, kan die veld <b>Toegang tot webkaarte</b> gebruik word om een of meer toelaatpaadjies te kies uit die lys wat u hier definieer. <p><footer>
<header>Beskermde Gidse</header> Hierdie bladsy laat jou toe om wagwoordbeskerming by te voeg vir sommige of alle webwerfgidse vir hierdie virtuele bediener. Om &#39;n gids te beskerm, gebruik die <b>Voeg beskerming vir &#39;n nuwe gids</b> by skakel. Om beskerming te verwyder, kies die merkblokkie langs die gidsnaam en klik op die knoppie onder die lys.<p> Sodra beskerming opgestel is, kan jy beheer watter gebruikers toegang daartoe het deur die <b>Wysig Gebruikers-</b> bladsy te gebruik. Wanneer jy op &#39;n gebruiker klik of &#39;n nuwe een skep, kan die veld <b>Toegang tot webgidse</b> gebruik word om een of meer toelaat-paaie te kies uit die lys wat jy hier definieer.<p><footer>

3 changes: 2 additions & 1 deletion help/intro.ar.auto.html
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
<header> الدلائل المحمية </header> تسمح لك هذه الصفحة بإضافة حماية بكلمة مرور لبعض أو كل دلائل مواقع الويب لهذا الخادم الظاهري. لحماية دليل ، استخدم الارتباط <b>إضافة حماية لارتباط دليل جديد</b> . لإزالة الحماية ، حدد مربع الاختيار بجوار اسم الدليل وانقر فوق الزر الموجود أسفل القائمة. <p style=";text-align:right;direction:rtl"> بمجرد إعداد الحماية ، يمكنك التحكم في المستخدمين الذين يمكنهم الوصول إليها باستخدام صفحة <b>تحرير مستخدمي البريد و FTP</b> . عند النقر فوق مستخدم أو إنشاء مستخدم جديد ، يمكن استخدام الحقل <b>السماح بالوصول إلى أدلة الويب</b> لتحديد مسار أو أكثر من المسارات المسموح بها من القائمة التي تحددها هنا. <p style=";text-align:right;direction:rtl"><footer>
<header>الدلائل المحمية</header> تسمح لك هذه الصفحة بإضافة حماية بكلمة مرور لبعض أو كل أدلة مواقع الويب لهذا الخادم الظاهري. لحماية دليل، استخدم رابط <b>إضافة حماية لدليل جديد</b> . لإزالة الحماية، حدد مربع الاختيار الموجود بجوار اسم الدليل وانقر فوق الزر الموجود أسفل القائمة.<p style=";text-align:right;direction:rtl"> بمجرد إعداد الحماية، يمكنك التحكم في المستخدمين الذين يمكنهم الوصول إليها باستخدام صفحة <b>تحرير المستخدمين</b> . عند النقر فوق مستخدم أو إنشاء مستخدم جديد، يمكن استخدام حقل <b>السماح بالوصول إلى أدلة الويب</b> لتحديد واحد أو أكثر من المسارات المسموح بها من القائمة التي تحددها هنا.<p style=";text-align:right;direction:rtl"><footer>

3 changes: 2 additions & 1 deletion help/intro.be.auto.html
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
<header> Абароненыя каталогі </header> Гэтая старонка дазваляе дадаць абарону паролем для некаторых альбо ўсіх каталогаў вэб-сайтаў для гэтага віртуальнага сервера. Для абароны каталога выкарыстоўвайце спасылку <b>Дадаць абарону для новай дырэкторыі</b> . Каб выдаліць абарону, усталюйце сцяжок побач з назвай каталога і націсніце кнопку пад спісам. <p> Пасля налады абароны вы можаце кантраляваць, якія карыстальнікі маюць доступ да яго, выкарыстоўваючы старонку &quot; <b>Рэдагаваць пошту&quot; і &quot;FTP-карыстальнікі&quot;</b> . Калі вы націснеце на карыстальніка альбо створыце новага, поле &quot; <b>Дазволіць доступ да вэб-каталогіў&quot;</b> можа выкарыстоўвацца для выбару аднаго ці некалькіх шляхоў дазволу са спісу, які вы вызначаеце тут. <p><footer>
<header>Абароненыя каталогі</header> Гэтая старонка дазваляе вам дадаць абарону паролем для некаторых або ўсіх каталогаў вэб-сайтаў для гэтага віртуальнага сервера. Каб абараніць каталог, выкарыстоўвайце спасылку <b>Дадаць абарону для новага каталога</b> . Каб зняць абарону, усталюйце сцяжок побач з імем каталога і націсніце кнопку пад спісам.<p> Пасля ўстаноўкі абароны вы можаце кантраляваць, якія карыстальнікі маюць да яе доступ, выкарыстоўваючы старонку <b>Рэдагаваць карыстальнікаў</b> . Калі вы пстрыкаеце па карыстальніку або ствараеце новага, поле <b>«Дазволіць доступ да вэб-каталогаў»</b> можна выкарыстоўваць для выбару аднаго або некалькіх дазволеных шляхоў са спісу, які вы вызначаеце тут.<p><footer>

3 changes: 2 additions & 1 deletion help/intro.bg.auto.html
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
<header> Защитени директории </header> Тази страница ви позволява да добавите защита на паролата за някои или всички директории на уебсайтове за този виртуален сървър. За да защитите директория, използвайте <b>защитата за добавяне на нова директория</b> . За да премахнете защитата, поставете отметка в квадратчето до името на директорията и щракнете върху бутона под списъка. <p> След като защитата е настроена, можете да контролирате кои потребители имат достъп до нея, използвайки страницата <b>Редактиране на поща и FTP потребители</b> . Когато щракнете върху потребител или създадете нов, полето <b>Разрешаване на достъп до уеб директории</b> може да се използва за избор на един или повече разрешителни пътища от списъка, който дефинирате тук. <p><footer>
<header>Защитени директории</header> Тази страница ви позволява да добавите защита с парола за някои или всички директории на уебсайтове за този виртуален сървър. За да защитите директория, използвайте връзката <b>Добавяне на защита за нова директория</b> . За да премахнете защитата, поставете отметка в квадратчето до името на директорията и щракнете върху бутона под списъка.<p> След като защитата бъде настроена, можете да контролирате кои потребители имат достъп до нея, като използвате страницата <b>Редактиране на потребители</b> . Когато щракнете върху потребител или създадете нов, полето <b>Разрешаване на достъп до уеб директории</b> може да се използва за избор на един или повече разрешени пътища от списъка, който дефинирате тук.<p><footer>

3 changes: 2 additions & 1 deletion help/intro.ca.auto.html
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
<header> Directoris protegits </header> Aquesta pàgina permet afegir protecció de contrasenya per a alguns o tots els directoris de llocs web per a aquest servidor virtual. Per protegir un directori, utilitzeu la <b>protecció Afegir un</b> enllaç de <b>directori nou</b> . Per suprimir la protecció, seleccioneu la casella de selecció que hi ha al costat del nom del directori i feu clic al botó situat a sota de la llista. <p> Un cop configurada la protecció, podeu controlar quins usuaris hi tenen accés mitjançant la pàgina <b>Edita correu i FTP Usuaris</b> . Quan feu clic a un usuari o en creeu un de nou, el camp <b>Permet l&#39;accés als directoris web</b> es pot utilitzar per seleccionar un o més <b>permisos de</b> ruta de la llista que definiu aquí. <p><footer>
<header>Directoris protegits</header> Aquesta pàgina us permet afegir protecció amb contrasenya per a alguns o tots els directoris de llocs web d&#39;aquest servidor virtual. Per protegir un directori, utilitzeu l&#39;enllaç <b>Afegeix protecció per a un directori nou</b> . Per eliminar la protecció, marqueu la casella de selecció que hi ha al costat del nom del directori i feu clic al botó que hi ha a sota de la llista.<p> Un cop configurada la protecció, podeu controlar quins usuaris hi tenen accés mitjançant la pàgina <b>Edita usuaris</b> . Quan feu clic a un usuari o en creeu un de nou, el camp <b>Permet l&#39;accés als directoris web</b> es pot utilitzar per seleccionar un o més camins d&#39;accés de la llista que definiu aquí.<p><footer>

3 changes: 2 additions & 1 deletion help/intro.cs.auto.html
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
<header> Chráněné adresáře </header> Tato stránka vám umožňuje přidat ochranu heslem pro některé nebo všechny adresáře webových stránek pro tento virtuální server. Chcete-li chránit adresář, použijte odkaz <b>Přidat ochranu pro nový adresář</b> . Chcete-li ochranu odebrat, zaškrtněte políčko vedle názvu adresáře a klikněte na tlačítko pod seznamem. <p> Po nastavení ochrany můžete určit, kteří uživatelé k němu mají přístup, pomocí stránky <b>Upravit poštu a FTP uživatelé</b> . Když kliknete na uživatele nebo vytvoříte nového, můžete pomocí pole <b>Povolit přístup k webovým adresářům</b> vybrat jednu nebo více povolených cest ze seznamu, který zde definujete. <p><footer>
<header>Chráněné adresáře</header> Tato stránka vám umožňuje přidat ochranu heslem pro některé nebo všechny adresáře webových stránek pro tento virtuální server. Chcete-li chránit adresář, použijte odkaz <b>Přidat ochranu pro nový adresář</b> . Chcete-li ochranu odstranit, zaškrtněte políčko vedle názvu adresáře a klikněte na tlačítko pod seznamem.<p> Po nastavení ochrany můžete ovládat, kteří uživatelé k ní mají přístup, pomocí stránky <b>Upravit uživatele</b> . Když kliknete na uživatele nebo vytvoříte nového, pole <b>Povolit přístup k webovým adresářům</b> lze použít k výběru jedné nebo více povolených cest ze seznamu, který zde definujete.<p><footer>

3 changes: 2 additions & 1 deletion help/intro.da.auto.html
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
<header> Beskyttede kataloger </header> Denne side giver dig mulighed for at tilføje adgangskodebeskyttelse for nogle eller alle webstedsmapper for denne virtuelle server. For at beskytte et bibliotek skal du bruge <b>Tilføj beskyttelsen til et nyt bibliotekslink</b> . For at fjerne beskyttelsen skal du markere afkrydsningsfeltet ud for katalognavnet og klikke på knappen under listen. <p> Når beskyttelsen er konfigureret, kan du kontrollere, hvilke brugere der har adgang til den ved hjælp af siden <b>Rediger mail og FTP-brugere</b> . Når du klikker på en bruger eller opretter en ny, kan feltet <b>Tillad adgang til webkataloger</b> bruges til at vælge en eller flere tilladte stier fra den liste, du definerer her. <p><footer>
<header>Beskyttede mapper</header> Denne side giver dig mulighed for at tilføje adgangskodebeskyttelse til nogle eller alle webstedsmapper for denne virtuelle server. For at beskytte en mappe, brug linket <b>Tilføj beskyttelse til en ny mappe</b> . For at fjerne beskyttelsen skal du markere afkrydsningsfeltet ud for mappenavnet og klikke på knappen under listen.<p> Når beskyttelsen er konfigureret, kan du kontrollere, hvilke brugere der har adgang til den ved at bruge siden <b>Rediger brugere</b> . Når du klikker på en bruger eller opretter en ny, kan feltet <b>Tillad adgang til webmapper</b> bruges til at vælge en eller flere tillade stier fra den liste, du definerer her.<p><footer>

3 changes: 2 additions & 1 deletion help/intro.de.auto.html
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
<header> Geschützte Verzeichnisse </header> Auf dieser Seite können Sie einen Kennwortschutz für einige oder alle Website-Verzeichnisse für diesen virtuellen Server hinzufügen. Verwenden <b>Sie zum Schutz eines Verzeichnisses den</b> Link <b>Schutz für ein neues Verzeichnis</b> hinzufügen. Um den Schutz zu entfernen, aktivieren Sie das Kontrollkästchen neben dem Verzeichnisnamen und klicken Sie auf die Schaltfläche unter der Liste. <p> Sobald der Schutz eingerichtet wurde, können Sie auf der Seite <b>Mail bearbeiten und FTP-Benutzer bearbeiten</b> steuern, welche Benutzer Zugriff darauf haben. Wenn Sie auf einen Benutzer klicken oder einen neuen erstellen, können <b>Sie im</b> Feld <b>Zugriff auf Webverzeichnisse</b> zulassen einen oder mehrere zulässige Pfade aus der hier definierten Liste auswählen. <p><footer>
<header>Geschützte Verzeichnisse</header> Auf dieser Seite können Sie einen Passwortschutz für einige oder alle Website-Verzeichnisse dieses virtuellen Servers hinzufügen. Um ein Verzeichnis zu schützen, verwenden Sie den Link <b>Schutz für ein neues Verzeichnis hinzufügen</b> . Um den Schutz aufzuheben, aktivieren Sie das Kontrollkästchen neben dem Verzeichnisnamen und klicken Sie auf die Schaltfläche unter der Liste.<p> Sobald der Schutz eingerichtet wurde, können Sie über die Seite <b>„Benutzer bearbeiten“</b> steuern, welche Benutzer Zugriff darauf haben. Wenn Sie auf einen Benutzer klicken oder einen neuen erstellen, können Sie über das Feld <b>„Zugriff auf Webverzeichnisse zulassen“</b> einen oder mehrere zulässige Pfade aus der hier definierten Liste auswählen.<p><footer>

Loading

0 comments on commit 7c54e94

Please sign in to comment.