Jump to content
Froxlor Forum
  • 0

Einige Probleme beim Upgrade auf Froxlor 2


SCD

Question

Hallo,

ich habe ein Upgrade auf Froxlor 2 durchgeführt.
Leider funktionieren nun einige Sachen nicht mehr, die vorher in der alten Froxlor-Version ohne Probleme funktioniert haben:

API:
Es gibt nur noch die Fehlermeldung: Unauthenticated. Please provide api user credentials. (auch mit der neuen Version unter docs/examples)

Domain editieren:
Pathauswahl ist leer.
HTTP Strict Transport Security (HSTS) ebenfalls - Im Header von VHosts steht dann Header always set Strict-Transport-Security "max-age="

Admin / System / Settings:
Darstellungfehler bei Froxlor VirtualHost settings
(unter demo.froxlor.org nachzustellen wenn bei IP&Ports bei keiner IP ein vHost-Container geschrieben wird)

Debian 11.6 / Apache2 / ProFTPD / Postfix / Dovecot / FCGI
Es wird kein eigener VHost für Froxlor geschrieben sondern liegt als Unterverzeichnis der Server-Domain
Das Homeverzeichnis der Kunden liegt unter /home/xxx/webxxx.

Froxlor läuft unter einem eigenen Benutzer (nicht www-data) unter PHP 7.4 (7.4.33-5+0~20230409.78+debian11~1.gbpa1ea7f).
Wenn ich per chroot auf diesen Wechsel kann ich ohne Probleme in den home-Verzeichnis der Benutzer und Unterverzeichnisse wechseln.

Link to comment
Share on other sites

16 answers to this question

Recommended Posts

  • 0
23 minutes ago, SCD said:

API:
Es gibt nur noch die Fehlermeldung: Unauthenticated. Please provide api user credentials. (auch mit der neuen Version unter docs/examples)

https://docs.froxlor.org/latest/general/migration-guide.html#http-authentication-for-api-api-endpoints

 

24 minutes ago, SCD said:

Pathauswahl ist leer.

Falsche settings/Berechtigungen, funktioniert im Test super.

25 minutes ago, SCD said:

HTTP Strict Transport Security (HSTS) ebenfalls - Im Header von VHosts steht dann Header always set Strict-Transport-Security "max-age="

Kann ich ebenso nicht reproduzieren.

25 minutes ago, SCD said:

Admin / System / Settings:
Darstellungfehler bei Froxlor VirtualHost settings
(unter demo.froxlor.org nachzustellen wenn bei IP&Ports bei keiner IP ein vHost-Container geschrieben wird)

Bitte spezifizieren, verstehe nicht was du meinst

26 minutes ago, SCD said:

Debian 11.6 / Apache2 / ProFTPD / Postfix / Dovecot / FCGI
Es wird kein eigener VHost für Froxlor geschrieben sondern liegt als Unterverzeichnis der Server-Domain
Das Homeverzeichnis der Kunden liegt unter /home/xxx/webxxx.

Verstehe ich ebenso nicht. Es wird ein vhost für jede IP/port (froxlor vhost) erstellt. Je nach settings unterscheidet sich der Inhalt natürlich...wie auch schon bei Version 0.10.x, da hat sich wenig geändert.

Was das Homeverzeichnis der Kunden damit zu tun hat kann ich auch nicht nachvollziehen.

29 minutes ago, SCD said:

Froxlor läuft unter einem eigenen Benutzer (nicht www-data) unter PHP 7.4 (7.4.33-5+0~20230409.78+debian11~1.gbpa1ea7f).
Wenn ich per chroot auf diesen Wechsel kann ich ohne Probleme in den home-Verzeichnis der Benutzer und Unterverzeichnisse wechseln.

Ich verstehe nicht wo hier eine Frage/ein Problem ist?

Link to comment
Share on other sites

  • 0
vor 26 Minuten schrieb d00p:

Also sind die Beispiele unter doc/example/ noch verkehrt ?

vor 27 Minuten schrieb d00p:

Falsche settings/Berechtigungen, funktioniert im Test super.

Wo genau sind die Settings verkehrt - Wie gesagt mit der altern Froxlor-Version ging es ohne Probleme.

vor 29 Minuten schrieb d00p:
vor 58 Minuten schrieb SCD:

HTTP Strict Transport Security (HSTS) ebenfalls - Im Header von VHosts steht dann Header always set Strict-Transport-Security "max-age="

Kann ich ebenso nicht reproduzieren.

Wenn Du in eine Domain änderst, in der HSTS in der DB auf 0 steht wird diese im Panel in nicht ausgeben und beim nächsten Speichern steht dann auch <Leer> in der Datenbank

vor 33 Minuten schrieb d00p:
vor einer Stunde schrieb SCD:

Admin / System / Settings:
Darstellungfehler bei Froxlor VirtualHost settings
(unter demo.froxlor.org nachzustellen wenn bei IP&Ports bei keiner IP ein vHost-Container geschrieben wird)

Bitte spezifizieren, verstehe nicht was du meinst

Wenn Du unter https://demo.froxlor.org/admin_ipsandports.php?page=ipsandports alle vHost-Container deaktivierst und dann unter https://demo.froxlor.org/admin_settings.php?page=overview gehst, siehst Du was ich meine.

Es kommt dann


									Froxlor VirtualHost settings<br><br><small class="text-danger">None of the IPs and ports has the "Create vHost-Container" option enabled, many settings here will not be available</small>
																	

Habe es in der Demo mal so eingestellt. Weiß nicht wann genau der Reset kommt.

Alles weitere sind keine Fragen sondern nur Informationen zum System auf dem Froxlor läuft

 

Link to comment
Share on other sites

  • 0
8 hours ago, SCD said:

Also sind die Beispiele unter doc/example/ noch verkehrt ?

nein?

Wenn du apache + php-fpm nutzt, vergiss nich das häcken bei "Übergeben von HTTP AUTH BASIC/DIGEST-Headern von Apache an PHP" in der für froxlor verwendeten php-config.

8 hours ago, SCD said:

Wo genau sind die Settings verkehrt - Wie gesagt mit der altern Froxlor-Version ging es ohne Probleme.

Kenne dein system nicht, aber grundsätzlich muss für das "Pfadauswahl"-Feature der froxlor user ja berechtigungen zum lesen der customer-directories haben. Normal packt froxlor hierfür den froxlor-user in die gruppe des jeweiligen kunden...und "ging in der alten Version" hilft uns halt so gar nicht, wie du vllt gemerkst hast gab es da 2-3 Änderungen in 2.0 :)

8 hours ago, SCD said:

Wenn Du unter https://demo.froxlor.org/admin_ipsandports.php?page=ipsandports alle vHost-Container deaktivierst und dann unter https://demo.froxlor.org/admin_settings.php?page=overview gehst, siehst Du was ich meine.

jo, thx, wird gefixed

Link to comment
Share on other sites

  • 0

Hallo,

ich habe nun etwas debuggt. Es liegt nicht an den Berechtigungen:

customer_domains.php (Zeile 276):
$pathSelect = FileDir::makePathfield($userinfo['documentroot'], $userinfo['guid'], $userinfo['guid'], $result['documentroot']);

In $pathSelect['select_var'] stehen alle Pfade drin.
Es wird aber unter /lib/formfields/customer/domains/formfield.domains_edit.php auf $pathSelect['value'] zugegriffen.

Ich habe mal die Funktion makePathfield Froxlor 1 mit Froxlor 2 verglichen:

Froxlor 1:

                        if (sizeof($dirList) > 0) {
                                $_field = '';
                                foreach ($dirList as $dir) {
                                        if (strpos($dir, $path) === 0) {
                                                $dir = substr($dir, strlen($path));
                                                // docroot cut off of current directory == empty -> directory is the docroot
                                                if (empty($dir)) {
                                                        $dir = '/';
                                                }
                                                $dir = self::makeCorrectDir($dir);
                                        }
                                        $_field .= \Froxlor\UI\HTML::makeoption($dir, $dir, $value);
                                }
                                $field = array(
                                        'type' => 'select',
                                        'value' => $_field
                                );
                        } else {
                                // $field = $lng['panel']['dirsmissing'];
                                // $field = '<input type="hidden" name="path" value="/" />';
                                $field = array(
                                        'type' => 'hidden',
                                        'value' => '/',
                                        'note' => $lng['panel']['dirsmissing']
                                );
                        }

Froxlor 2:

                        if (sizeof($dirList) > 0) {
                                $_field = [];
                                foreach ($dirList as $dir) {
                                        if (strpos($dir, $path) === 0) {
                                                $dir = substr($dir, strlen($path));
                                                // docroot cut off of current directory == empty -> directory is the docroot
                                                if (empty($dir)) {
                                                        $dir = '/';
                                                }
                                                $dir = self::makeCorrectDir($dir);
                                        }
                                        $_field[$dir] = $dir;
                                }
                                $field = [
                                        'type' => 'select',
                                        'select_var' => $_field,
                                        'selected' => $value
                                ];
                        } else {
                                $field = [
                                        'type' => 'hidden',
                                        'value' => '/',
                                        'note' => lng('panel.dirsmissing')
                                ];
                        }

Vermutlich ist die fett geschriebene Zeile in V2 verkehrt ?

Dann bleibt noch das HSTS-Problem.

Dies kann man wie folgt unter https://demo.froxlor.org/customer_domains.php?page=domains&action=edit&id=2
nachstellen (zumindest in Firefox): Einen Integer Wert größer 0 unter HTTP Strict Transport Security (HSTS)  eintragen und die Einstellung neu laden.

Der Wert steht wie erwartet drin. Nun eine 0 eintragen und neu laden.
Anstelle von 0 steht nun nichts in diesen Feld. Und deshalb im VHost dann

Header always set Strict-Transport-Security "max-age="

 

Edited by SCD
Vergleich V1 und V2 hinzugefügt
Link to comment
Share on other sites

  • 0
17 minutes ago, SCD said:

Vermutlich ist die fett geschriebene Zeile in V2 verkehrt

Nein, schau in den formfield.templates.wie die selectbox aufgebaut wird, das ist schon richtig so eigentlich.

Ich kann das später auf nem Testsystem Mal nachstellen. Hab aktuell im Urlaub nicht viel Zeit am PC, da schimpft die Frau ;)

19 minutes ago, SCD said:

Der Wert steht wie erwartet drin. Nun eine 0 eintragen und neu laden.
Anstelle von 0 steht nun nichts in diesen Feld. Und deshalb im VHost dann

Werd ich in dem Zuge dann auch nachschauen, kann sein das ich da tatsächlich noch nie von 0 auf einen Wert und dann wieder auf 0 zurück bin, das findet sich sicher ;)

Danke fürs ausgiebige debuggen.

Link to comment
Share on other sites

  • 0

lib/formfields/customer/domains/formfield.domains_edit.php:

                                        'path' => [
                                                'label' => lng('panel.path'),
                                                'desc' => (Settings::Get('panel.pathedit') != 'Dropdown' ? lng('panel.pathDescriptionSubdomain').(Settings::G
                                                'type' => $pathSelect['type'],
                                                'select_var' => $pathSelect['value'],
                                                'selected' => $pathSelect['value'],
                                                'value' => $pathSelect['value'],
                                                'note' => $pathSelect['note'] ?? '',
                                        ],

aber lib/formfields/customer/domains/formfield.domains_add.php

                                        'path' => [
                                                'label' => lng('panel.path'),
                                                'desc' => (Settings::Get('panel.pathedit') != 'Dropdown' ? lng('panel.pathDescriptionSubdomain').(Settings::G
                                                'type' => $pathSelect['type'],
                                                'select_var' => $pathSelect['select_var'] ?? '',
                                                'selected' => $pathSelect['value'],
                                                'value' => $pathSelect['value'],
                                                'note' => $pathSelect['note'] ?? '',
                                        ],

Und bei anlegen von neuen Sub-Domains funktioniert es

Link to comment
Share on other sites

  • 0

jo fürs pathselect sollte folgender patch das problem beheben:

diff --git a/lib/formfields/customer/domains/formfield.domains_edit.php b/lib/formfields/customer/domains/formfield.domains_edit.php
index 2374029b..6d89369c 100644
--- a/lib/formfields/customer/domains/formfield.domains_edit.php
+++ b/lib/formfields/customer/domains/formfield.domains_edit.php
@@ -57,7 +57,7 @@ return [
                                                'label' => lng('panel.path'),
                                                'desc' => (Settings::Get('panel.pathedit') != 'Dropdown' ? lng('panel.pathDescriptionSubdomain').(Settings::Get('system.documentroot_use_default_value') == 1 ? lng('panel.pathDescriptionEx') : '') : null),
                                                'type' => $pathSelect['type'],
-                                               'select_var' => $pathSelect['value'],
+                                               'select_var' => $pathSelect['select_var'] ?? '',
                                                'selected' => $pathSelect['value'],
                                                'value' => $pathSelect['value'],
                                                'note' => $pathSelect['note'] ?? '',

 

Link to comment
Share on other sites

  • 0

Auch unterhalb des Kunden-Heimatverzeichnisses?

Diese Pfadauswahl ist etwas eingeschränkt/einschränkend. Du kannst halt nur ordner wählen die es auch gibt.

Sonst muss ich das hier bei uns Mal debuggen, kann vieles sein. Wie gesagt beim Testsystem mit ein paar Ordnern ging das eigentlich immer super. Nutzen tun wir selbst diese Feature halt nicht wirklich ;) kommt noch aus syscp Zeiten 

Link to comment
Share on other sites

  • 0

Kann es sein, das folgende Zeile fehlt  - dann funktioniert es nämlich

lib/Froxlor/FileDir.php

                } elseif ($fieldType == 'dropdown') {
                        $dirList = self::findDirs($path, $uid, $gid);
                        natcasesort($dirList);

                        if (sizeof($dirList) > 0) {
                                $_field = [];
                                foreach ($dirList as $dir) {
                                        if (strpos($dir, $path) === 0) {
                                                $dir = substr($dir, strlen($path));
                                                // docroot cut off of current directory == empty -> directory is the docroot
                                                if (empty($dir)) {
                                                        $dir = '/';
                                                }
                                                $dir = self::makeCorrectDir($dir);
                                        }
                                        $_field[$dir] = $dir;
                                }
                                $field = [
                                        'type' => 'select',
                                        'select_var' => $_field,
                                        'selected' => $value,
                                        'value' => $value
                                ];

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×
×
  • Create New...