Dateiverwaltung für die WebBox
ulrich
2021-01-28 81abd5a101a52f7ca9c803af879815dacae028b1
commit | author | age
798463 1 # Dateiverwaltung
U 2
4a354d 3 Eine Webanwendung zur Bearbeitung und Verwaltung von Dateien für die [WebBox](/data/ulrich/prg/webbox).  
798463 4
U 5 ## Funktionen
6
65ca7a 7 Die Dateiverwaltung besitzt die folgenden Funktionen
798463 8
65ca7a 9 - Persönliches und öffentliches Verzeichnis je Benutzer
680ec1 10 - Auflisten von Verzeichnissen und ihrer Inhalte
U 11 - Ansehen der Datei-Inhalte
12 - Erstellen und Bearbeiten von Texten und Dokumenten
65ca7a 13 - Dateien und Ordner kopieren, verschieben und löschen
680ec1 14 - Hochladen per Drag and Drop direkt in Ordner
U 15 - Listen- und Kachelansicht
798463 16
ebc1f3 17 Die Bedienoberfläche passt sich an verschiedene Geräteausstattungen an (responsiv).
798463 18
94179c 19 ### Konfiguration
U 20
e5c5b5 21 Die Dateiverwaltung bezieht den Ablageort von Dateien über die Systemvariable `wbx.data`. Diese Angabe muss beim Start des Java-Prozesses als Parameter gesetzt sein wie in `java -Dwbx.data=/pfad/zu/den/daten [weitere Parameter]`. Bei Verwendung von Tomcat kann diese Angabe auch in der Environment-Variable `JAVA_OPTS` hinterlegt werden.
94179c 22
U 23 #### Automatische Ermittlung des Ablageortes
24
e5c5b5 25 Ist die Angabe `wbx.data` nicht zu finden oder leer, wird der Ablageort ausgehend von `$CATALINA_BASE/webapps` ermittelt. Dieser Vorgang kann in der Datei `WEB-INF/web.xml` mit den Parametern `tiefe` und `datenOrdner` beeinflusst werden.
ebc1f3 26
e5c5b5 27 Der Vorgang zur Ermittlung des Ablageortes für Daten geht ausgehend von `$CATALINA_BASE/webapps` die Anzahl Ordner `tiefe` nach oben und verwendet von diesem Ordner aus den Pfad in `datenOrdner`. 
94179c 28
798463 29 ## Webanwendung herstellen
U 30
1ac489 31 Zum Herstellen der Webanwendung wird ein Java Development Kit (JDK) benötigt, wie es z.B. von [Azul](http://azul.com) oder dem [OpenJDK-Projekt](http://openjdk.java.net/) frei erhältlich ist. In der hier folgenden weiteren Beschreibung wird der lokale Ablageort des Java Development Kits `$JDK` genannt.
798463 32
U 33 Desweiteren werden die folgenden Klassenbibliotheken benötigt
34
35 ```
36 Bibliothek            Datei(en)                       Ablageort lokal
37 ----------            ---------                       ---------------
38 Commons Fileupload .. commons-fileupload-1.3.2.jar .. $JLIB
39 Commons IO .......... commons-io-2.5.jar ............ $JLIB
40 Tomcat .............. lib/servlet-api.jar ........... $CATALINA_HOME
41 XStream ............. xstream-1.4.7.jar ............. $JLIB
42 Jettison ............ jettison-1.3.3.jar ............ $JLIB
6720b6 43 Thumbnailator ....... thumbnailator.jar ............. $CATALINA_BASE
U 44 wbx-lib ............. wbx-lib.jar ................... $CATALINA_BASE
798463 45 Transit ............. Transit.jar ................... $JLIB
U 46 ```
47 Diese sind an folgenden Orten frei erhältlich:
48
49 - [Apache Commons](http://commons.apache.org)
50 - [Apache Tomcat](http://tomcat.apache.org)
51 - [XStream](https://github.com/codehaus/xstream)
52 - [Jettison](https://github.com/codehaus/jettison)
6720b6 53 - [Thumbnailator](https://github.com/coobird/thumbnailator)
2d4415 54 - [Transit](/gitblit/docs/Transit.git)
6720b6 55 - [wbx-lib](/gitblit/docs/wbx-lib.git)
798463 56
1197b5 57 Nach Beschaffung des JDK und der oben angegebenen Klassenbibliotheken wird der Quellcode aus diesem Git-Repository an einen frei wählbaren lokalen Ablageort [heruntergeladen](http://uhilger.de/gitblit/zip/?r=file-cms.git&h=master&format=zip) und entpackt. In der hier folgenden weiteren Beschreibung wird das so entstandene Verzeichnis `file-cms-master` einschließlich des absoluten Pfades dorthin `$FILE-CMS` genannt. Ferner wird angenommen, dass die oben aufgeführten Klassenbibliotheken lokal an Orten abgelegt sind, deren Pfade mit den Platzhaltern `$JLIB` und `$CATALINA_HOME` gemeint sind. Anstelle der Platzhalter in den folgenden Kommandos muss also der absolute Pfad des lokalen Ablageortes eingesetzt werden.
798463 58
1ac489 59 Zur Herstellung der Dateiverwaltung werden die folgenden Kommandos ausgeführt (Beispiel für Linux):
798463 60
U 61 ```
62 cd $FILE-CMS
63 mkdir dist
64 mkdir build
65 cp -r web/* build
66 cd build/WEB-INF
67 mkdir classes
68 mkdir lib
69 cd ../..
70 cp $JLIB/* build/WEB-INF/lib
71
6720b6 72 $JDK/bin/javac -classpath $JLIB/commons-fileupload-1.3.2.jar:$JLIB/commons-io-2.5.jar:$JLIB/jettison-1.3.3.jar:$JLIB/Transit.jar:$JLIB/xstream-1.4.7.jar:$CATALINA_HOME/lib/servlet-api:$CATALINA_BASE/lib/thumbnailator.jar:$CATALINA_BASE/lib/wbx-lib.jar.jar -d ./build/WEB-INF/classes src/java/de/uhilger/filecms/api/*.java src/java/de/uhilger/filecms/web/*.java src/java/de/uhilger/filecms/pub/*.java
798463 73
30a32f 74 cp src/java/logging.properties build/WEB-INF/classes
798463 75 $JDK/bin/jar -cf dist/file-cms.war -C build .
U 76 rm -r build
77 ```
78
79 Das Webarchiv der Dateiverwaltung liegt anschließend als `$FILE-CMS/dist/file-cms.war` fertig zum Deployment bereit.
80
8d15c3 81 Die im obigen Build-Skript bereits mit `$CATALINA_BASE` gekennzeichneten Klassenbibliotheken werden nicht als Teil des Webarchivs der Dateiverwaltung gebaut und im Verzeichnis `$CATALINA_BASE/lib` der WebBox erwartet.
6720b6 82
798463 83 ### Distributionsalternative
U 84
85 Das Kommando `cp $JLIB/* build/WEB-INF/lib` kann auch weggelassen werden, dann sind die Klassenbibliotheken nicht Teil des Webarchivs der Dateiverwaltung. In diesem Fall muss stattdessen der Inhalt von `$JLIB` nach `$CATALINA_BASE/lib` kopiert werden.
86
87 ## Abhängigkeiten
88
89 Die Dateiverwaltung erfordert die folgenden Bestandteile auf der Instanz von Tomcat, auf der sie ausgeführt werden soll:
90
91 ```
4d16ad 92 $CATALINA_BASE/webapps/jslib/jquery ............... mindestens in Version 3.2.1
798463 93 $CATALINA_BASE/webapps/jslib/mustache ............. mindestens in Version 2.3.0
U 94 $CATALINA_BASE/webapps/jslib/codemirror ........... mindestens in Version 5.24.2
680ec1 95 $CATALINA_BASE/webapps/jslib/tinymce .............. mindestens in Version 4.3.4
a5c558 96 $CATALINA_BASE/webapps/jslib/fancybox ............. mindestens in Version 3
c5eaaa 97 $CATALINA_BASE/webapps/jslib/moment ............... mindestens in Version 2.8.1
U 98 $CATALINA_BASE/webapps/jslib/numeral .............. mindestens in Version 2.0.6
798463 99 ```
U 100
101 `$CATALINA_BASE` meint das in der der Datei [RUNNING.txt](http://tomcat.apache.org/tomcat-8.5-doc/RUNNING.txt) der Tomcat-Dokumentation so bezeichnete Verzeichnis. Nachfolgend die Quellen, von denen die obigen Abhängigkeiten bezogen werden können:
102
103 - [jQuery](http://jquery.com)
104 - [Mustache](https://github.com/janl/mustache.js)
85053f 105 - [Codemirror](https://codemirror.net)
680ec1 106 - [TinyMCE](https://tinymce.com)
a5c558 107 - [Fancybox](http://fancyapps.com/fancybox/3/)
c5eaaa 108 - [Moment](http://momentjs.com/)
U 109 - [Numeral](http://numeraljs.com/)
85053f 110
d7076e 111 ## Ausfuehren
U 112
e5c5b5 113 Zum Ausfuehren wird die Datei `file-cms.war` in den Ordner `$CATALINA_BASE/webapps` von Tomcat gelegt. Der Aufruf erfolgt anschliessend mit dem URL `https://example.com/file-cms/ui2`. Nutzer muessen die Rolle `ownFileAdmin` besitzen um die Webanwendung verwenden zu koennen. 
4e8bf3 114
U 115 Die Ausfuehrung gelingt in der hier beschriebenen Konfiguration auch ohne die WebBox auf einem Tomcat, wie er ab Werk ausgestattet ist. Die folgenden Einstellungen muessen in diesem Fall von Hand an Tomcat vorgenommen werden:
116
117 - SingleSignOn Valve in `$CATALINA_BASE/conf/server.xml` einschalten
e5c5b5 118 - Parameter fuer den Ablageort uebergeben (Angabe fuer `wbx.data` wie weiter oben erwaehnt)
4e8bf3 119 - `data.xml` und `home.xml` in `$CATALINA_BASE/conf/Catalina/localhost` anlegen wie in folgendem Beispiel
U 120
121 ```
122 <?xml version="1.0" encoding="UTF-8"?>
e5c5b5 123 <Context path="/data" docBase="${wbx.data}/www/">
4e8bf3 124 </Context>
U 125 ```
126
e5c5b5 127 Das `file-cms` legt beim ersten Start die Verzeichnisse www und home in dem Verzeichnis an, das mit `wbx.data` angegeben wurde (siehe weiter oben). Wenn beispielsweise der Ablageort `/media/rdata/cms` als `wbx.data` angegeben wurde ist der Eintrag fuer `docBase` in `data.xml` `/media/rdata/cms/www` und in `home.xml` `/media/rdata/cms/home`.
d7076e 128
85053f 129 ## Lizenz
U 130
8d15c3 131 Die Dateiverwaltung wird zu den Bedingungen der [GNU Affero General Public License](/gitblit/doc/file-cms.git/master/web!agpl.txt) bereitgestellt. Die von der Dateiverwaltung verwendeten Komponenten unterliegen zum Teil anderen Lizenzen. Deren Nutzungsbedingungen sind an den Quellen der Komponenten angegeben.
05e9c4 132