KeeWeb-Plugin in der Nextcloud verwenden

Nextcloudversion Pluginname Pluginlink Pluginversion
14.0.3 Keeweb https://apps.nextcloud.com/apps/keeweb 0.4.0

- Das Plugin lässt sich nicht starten, da es mit Nextcloudversionen über 12 inkompatibel ist. - Falls es dennoch startet, ist es nicht bedienbar. - Bei einem Klick auf eine .kdbx-Datei wird diese heruntergeladen und nicht im Plugin geöffnet.

Voraussetzungen

- Das Plugin muss manuell installiert werden. Dazu das Plugin herunterladen und entpacken. Nun das Verzeichnis keeweb in den Ordner NEXTCLOUDROOT/apps hochladen.

Schnelle Lösung

Die schnelle Lösung besteht in dem download/clonen von meinem Fork von Keeweb for Nextcloud. Dort habe ich Problem 1 und 2 schon gelöst. Bei Problem 3 müssen noch die Einstellungen in der Nextcloud gemacht werden.

Lösung von 1.

Die Datei keeweb/appinfo/info.xml aus dem keeweb-Ordner des Plugins bearbeiten. Nach der Zeile

    <nextcloud min-version="11" max-version="12" />

suchen und die max-version auf z.B. 14 legen.1)

Lösung von 2.

Dies liegt daran, dass sich etwas am css geändert hat. Ändere die Datei keeweb/css/style.css (die geänderten Zeilen sind hier markiert) oder ersetzte sie mit dieser hier:

style.css
  1. #app-content {
  2. overflow-y: hidden;
  3. }
  4.  
  5. #app-content > iframe {
  6. width: 100%;
  7. height: 100%;
  8. }

Zusätzlich muss die Datei keeweb/templates/main.php noch angepasst werden:2)

main.php
  1. <?php
  2. script('keeweb', 'script');
  3. style('keeweb', 'style');
  4. ?>
  5.  
  6. <div id="app-content">
  7. <iframe src="<?php p($_['keeweb']); ?><?php isset($_['config']) ? p('?config='.$_['config']) : '' ?>" />
  8. </div>

Lösung von 3.

Dafür die Datei unter NEXTCLOUDROOT/resources/config/mimetypemapping.dist.json öffnen und unter dem Eintrag _comment um eine Zeile ergänzen, in etwa so (Komma am Ende ist wichtig):

    "kdbx": ["x-application/kdbx"],

Nun wird diese Datei nach NEXTCLOUDROOT/config/mimetypemapping.dist.json kopiert.3)

Als nächstes die Datei keeweb/appinfo/app.php öffnen und unter den Zeilen

    // Register custom mimetype we can hook in the frontend
    $mimeTypeDetector->getAllMappings();
    $mimeTypeDetector->registerType('kdbx', 'x-application/kdbx', 'x-application/kdbx');

diesen Code einfügen:4)

    $mimetypeId = $mimeTypeLoader->getId('x-application/kdbx');
    $mimeTypeLoader->updateFilecache('%.kdbx', $mimetypeId);

Nun müssen wir dem Webserver den neuen Mimetype noch „beibringen“. Dazu könnte man einen Befehl auf der Kommandozeile absetzten, da dies aber nicht immer bei allen Hostern möglich ist, gehen wir einen anderen Weg: Erstelle oder lade dir die cmd.php mit folgendem Inhalt herunter (sie muss im root der Nextcloud liegen):

cmd.php
  1. <?php
  2. // copy the script into the nextcloud mainfolder where console.php is located, e.g. /var/www/nextcloud
  3. $path = realpath(dirname(__FILE__));
  4. echo "PHP Version: " . phpversion() ."<br>";
  5. // run upgrade routines after installation of a new release. The release has to be installed before.
  6. //exec("php $path/console.php upgrade 2>&1", $out, $result);
  7. // rescan filesystem
  8. exec("php $path/console.php maintenance:mimetype:update-db --repair-filecache 2>&1", $out, $result);
  9. //exec("php $path/console.php maintenance:mode --on 2>&1", $out, $result);
  10. // for more commands see documentation
  11. echo "Returncode: " .$result ."<br>";
  12. echo "Console output: " ."<br>";
  13. echo "<pre>"; print_r($out);
  14. ?>

Diese Datei rufst du jetzt im Browser auf. Die Ausgabe sollte in etwa so aussehen, nur das das Array mehr Inhalte hat. Wichtig ist der Eintrag mit x-application/kdbx.
Ausgabe im Browser
Nun noch die cmd.php vom Webserver löschen und alles sollte funktionieren.5)


  • nextcloud/keeweb.txt
  • Zuletzt geändert: 08.11.2018 20:03