Pydio 5.2.5 Sharefunktion fixen

Leider mußte ich mal wieder den Sharecenter von Pydio fixen, weil es für einen offensichtlichen Bug keinen Patch gibt, wir kennen das ja schon. Mal sehen ob Charles wieder den Aufstand macht, wenn ich ihm den DIFF schicke, statt den Patch auf GitHub hochzuladen 🙂 Leider kann man nicht auf Version 6 Updaten, weil dann Pydio nicht mehr funktioniert.  Wie man dafür 1300 € im Jahr verlangen kann, ist mir ein Rätsel, leider ist es das beste Tool für die Sache, trotz der Fehler.

Zwei Bugs müssen behoben werden:

  1. class.AJXP_Utils.php    error l.1744    message=mcrypt_create_iv(): Cannot open source device
  2. class.ajxp_confAccessDriver.php(2250) : eval()’d code   error l.2       message=mcrypt_decrypt(): Key of size 6 not supported by this algorithm. Only keys of sizes 16, 24 or 32 supported

Fangen wir mal mit Bug #2 an , der ist einfacher :

In der Defaulteinstellung von Pydio steht ein Hashwert der Länge 6. Das ist aber seit einigen PHP Versionen zu kurz, deswegen die MCrypt Meldung.

Bitte hier auf 16 umstellen :

pydiobug1

Bug #1 ist da schon viel anspruchsvoller 🙂 In der Datei „core/classes/class.AJXP_Utils.php“ Zeile 1746 muß ein Wert geändert werden, weil Charles beim Programmieren offensichtlich ein altes Windows PHP benutzt hat, denn da ist „MCRYPT_DEV_URANDOM“ wohl Pflicht.

public static function pbkdf2_create_hash($password)
    {
        // format: algorithm:iterations:salt:hash
        $salt = base64_encode(mcrypt_create_iv(PBKDF2_SALT_BYTE_SIZE, MCRYPT_DEV_URANDOM));
        return PBKDF2_HASH_ALGORITHM . ":" . PBKDF2_ITERATIONS . ":" .  $salt . ":" .
        base64_encode(self::pbkdf2_apply(
            PBKDF2_HASH_ALGORITHM,
            $password,
            $salt,
            PBKDF2_ITERATIONS,
            PBKDF2_HASH_BYTE_SIZE,
            true
        ));
    }

ersetzen durch :

public static function pbkdf2_create_hash($password)
    {
        // format: algorithm:iterations:salt:hash
        $salt = base64_encode(mcrypt_create_iv(PBKDF2_SALT_BYTE_SIZE, MCRYPT_RAND));
        return PBKDF2_HASH_ALGORITHM . ":" . PBKDF2_ITERATIONS . ":" .  $salt . ":" .
        base64_encode(self::pbkdf2_apply(
            PBKDF2_HASH_ALGORITHM,
            $password,
            $salt,
            PBKDF2_ITERATIONS,
            PBKDF2_HASH_BYTE_SIZE,
            true
        ));
    }

Nach dieser kleinen Anpassung „funktioniert“ der Sharecenter wieder, was aber nicht heißt, daß man den Share in dem Sharecenter angezeigt bekommt 🙂

Den muß man dann aus dem Repository extrahieren :

pydiobug2

LPD 2016 in Braunschweig – Das volle Haus

Wir kommen grade vom LPD 2016 in Braunschweig aus dem Protohaus im Rebenpark.

Ein voller Erfolg im wahrsten Sinne des Wortes, da der Raum überfüllt war. An sechs Stationen wurden alle Fragen rund um Linux beantwortet. Zum Teil  haben uns die Besucher auch zu Problemen mit Windows befragt 🙂 Ich glaube, daß die meisten sehr froh waren die Technikversteher mal direkt fragen zu können 😀

Mein ältester Besucher an der Videobearbeitungsstation war 81 Jahre alt. Da mit Linux neu anzufangen ist wahrhaft eine Leistung.

Vorgestellt haben wir u.a. OpenShot, Wine mit Photoshop Elements, EVE Online, LibreOffice, WPS Office, Thunderbird, Nautilus u.a. Programme.

Hier ein Bild von der Veranstaltung :

Linux Presentation Day 2016

Update:

Laut Zahlen von Frank, waren 120 Besucher in dem kleinen Raum.

Solution – mysqldump – No database selected when selecting the database

International shortform:

Hi, if you reached this page, because it’s one of five webpages regarding this specific error message, please scroll down to the end.

Und für alle anderen, die lange Form:

Die Shell kann komisch sein, aber die Abwesenheit der Bashshell ist noch zu viel komischeren Sachen fähig, eine davon ist der Bug von Mysqldump keine Datenbank angegeben zu haben.

Hintergrund: Wenn man in Java mit Exec() einen Befehl startet, hat man keine Shell vor sich und damit auch eine Menge Sicherheitsprobleme nicht mehr. Nachteil : u.a. „*“ wird nicht mehr funktionieren, denn das wird von der Bash geparst. Keine Bash => Kein „*“ Keine „<>“ .

Das kennt man noch. Was jetzt kommt, ist allerdings extrem schwer zu debuggen, deswegen bin ich auch ein klein bisschen stolz als einziger im Netz eine Lösung präsentieren zu können, auch wenn die eher trivialer Natur ist. Sucht mal nach der Fehlermeldung, es gibt nur 4 Seiten, die diese Meldung behandeln 😉 (OK, jetzt 5 )

Das hier ist der Befehl:

/usr/bin/mysqldump  --add-locks -e --force -R --triggers --add-drop-table --hex-blob -h localhost --password=dbpass --user=dbuser dbname;

Das erzeugt die Fehlermeldung :

mysqldump: Got error: 1046: No database selected when selecting the database

obwohl eine Datenbank angegeben ist. Gibt man den  Befehl in die Shell ein, geht es sofort ohne Anpassungen. Kleine Anmerkung, auf die Fehlermeldung an sich muß man geistig erstmal kommen, richtig wäre nämlich „no databasename given“

Wie löst man das jetzt, wenn man doch schon alles richtig angegeben hat ?

Na man drückt dem Befehl die Pistole auf die Brust, so daß er sich nicht mehr herausreden kann ;D

/usr/bin/mysqldump  --add-locks -e --force -R --triggers --add-drop-table --hex-blob -h localhost --password=dbpass --user=dbuser --databases dbname

Der kleine Zusatz „–databases“ ist eigentlich dazu da, mehr als eine Datenbank in einen SQL-Dump zu integrieren. Es geht aber auch nur mit einer einzigen Datenbank und komischerweise kommt der Parser jetzt nicht mehr durch einander und erkennt die Datenbank am Ende des Befehls. Es gibt so bescheuerte Bugs 😀

Ok, Hello there.  You found this page, because it’s the only one marked as solution to the problem, that you give mysqldump a databasename and it says, that you did not. It’s a bug that occurs only in the absence of bash. You counter it by adding „–databases “ infront of your databasename. See the above example if your uncertain how to do it.

If you wanne see more articles in english, please leave a comment about it. Cu.