# Diashow Editor

Das Zusammenstellen der Steuerdatei list.js kann einer langwierige Angelegenheit werden. Deswegen wurde ein Browser basierten Editor entwickelt.

## Vorraussetzungen

Der Editor benötigt ein HTTP Server und PHP. Da die Bilder dynamisch verkleinert werden, muss php-gd zusätzlich installiert werden.

### Windows

Ein XAMP System sollte installiert werden. Auf der entsprechende Dokumentation wird verwiesen.

### Linux

Der Editor wurde unter Fedora und Mint gestestet. Auf andere Linux Distributionen sollte es ohne weiteres funktionnieren.

Auf Systeme mit selinux muss gegebenen falls als root das Befehl:
setsebool -P httpd_unified 1
ausgeführt werden.

Selinux sollte auch auf permissive gestellt werden. Damit kommt es zur Meldungen, die gewünschte Aktionen werden aber ausgeführt.

#### Installation mit den Apache Web Server

Unter Linux werden die Web Seiten meistens im Verzeichnis /var/www/html.

Wir sehen zwei Verzeichnis vor:
ds für den Zugriff auf

Die Datei ist unter der Web Root Verzeichnis zu kopieren, der HTTP Server ist dementsprechend zu konfigurieren.

Datei /etc/httpd/conf.d/vhost.conf (Fedora)
oder
/etc/apache2/sites-enabled/002-vhost.conf (Debian) anlegen.

    # Virtual  hosts

    <VirtualHost *:80>
            ServerName ds.localhost
            ServerAlias ds
            DocumentRoot /var/www/html/ds
    </VirtualHost>

    <VirtualHost *:80>
            ServerName dse.localhost
            ServerAlias dse
            DocumentRoot /var/www/html/dse
    </VirtualHost>

    <Directory "/var/www/html/dse">
    	Order allow,deny
    	Allow from all
    	AllowOverride All
    	DirectoryIndex edit.php
    </Directory>

    <Directory "/var/www/html/ds">
    	Order allow,deny
    	Allow from all
    	AllowOverride All
    	DirectoryIndex diashow.html index.php
    	Options +Indexes
    </Directory>

Hier stehen dse für Diashow Editor und ds für Diashow.

Nach den Erstellen der Verzeichnisse /var/www/html/ds sowie /var/www/html/dse ist im Verzeichnis dse die Dateien und Verzeichnis der Zip oder tgz Datei im Verzeichnis dse zu kopieren.

Der Eigentümer der Ordner ds und dse müssen angepasst werden.
Für Fedora:

    # chown -R apache:apache /var/www/html/dse
    # chown apache:apache /var/www/html/ds

Für Debian:

    # chown -R www-data:www-data /var/www/html/dse
    # chown www-data:www-data /var/www/html/ds

Als letztes muss der Apache Server neu gestartetverden
für Fedora:

    # systemctl restart httpd

für Debian basierten Systeme

    # systemctl restart apache2

Als letztes ist die Datei config.php an der gewünschten Anforderungen gegebenenfalls anzupassen:

    <?php
    $root="/var/www/html/ds";
    // the importopt may contain:
    //   m (music), t (textes), p (image folder), f (fonts)
    //   M (music), T (textes), P (image folder), F (fonts)
    // The corresponding folder will be copied to the slideshow folder
    // If we want to create a new slide show the folder marked with
    // a capital letter will be deleted.
    $importopt="mTPf";
    ?>

Die Variable $importopt steuert das Kopiervorgang beim erzeugen des fertigen Diashow.

#### Verwendung des Webserver caddy

Anstelle von Apache oder Nginx kann der in der Sprache go geschriebenen Http Server verwendet werden. Die Configuration ist einfach.

In dem Fall wird der Diashow Editor im Homebereich des Anwenders betrieben.

Von der Caddy Seite kann ein Server heruntergeladen werden. Bei den Module wird nur der fastcgi module zusätzlich benötigt.

PHP muss dennoch installiert werden. Für Windows Systeme ist es leichter ein fertige XAMP System zu verwenden, damit wird auch PHP installiert.

Das beste Weg php unter Linux einzubingen ist die Verwendung von php-fpm. dies bedeutet, dass die Konfiguration von php-fpm ergänzt wird, wenn der Diashow Editor unter der Home Verzeichniss verwendet werden. Unter Fedora ist eine Datei zusätzlich einzurichten /etc/php-fpm.d/user.conf

    [dse]
    user = <user>
    group = <user>
    listen = /run/php-fpm/dse.sock
    listen.owner = <user>
    listen.group = <user>
    listen.mode = 0660

    pm = dynamic
    pm.max_children = 5
    pm.start_servers = 2
    pm.min_spare_servers = 1
    pm.max_spare_servers = 3
    pm.max_spare_servers = 3

<user> ist durch den User Name zu ersetzen
Unter Debian basierten Systeme ist der Datei Beispielsweise unter /etc/php/7.2/fpm/pool.d anzulegen wobei 7.2 die Version vom installierten php-fpm entspricht.

Damit caddy der Port 80 verwenden kann ist caddy mit ausreichenden Rechts zu versehen:

    # chmod u+s /usr/local/bin/caddy

Gegebenenfalls muss auch php-fpm das Bedinenen von HOME Verzeichnisse zu erlauben:

    # setsebool -P httpd_enable_homedirs 1

### Konfiguration von Caddy

Damit caddy läuft muss er wissen wo die Webdatein sich befinden. Dazu muss ein Konfigurationsdatei erstellt werden. Wir gehen davon aus, dass die Komponenten unter /home/<Name>/Diashow installiert wird wobei <Name> durch den realer Name des Anwenders ersetzt werden muss.

Das Verzeichnis Diashow/dse beinhaltet den Editor und unter Diashow/ds werden die fertige Diashow abgelgt.

Die Konfigurationsdatei caddyFile könnte so ausehen:

    :80 {
    	root /home/<Name>/Diashow/dse
    	bind 0.0.0.0
    	tls off
    	gzip
    	# Bei Fedora wie nachstehend, bei Debian /run/php/dse.sock
    	fastcgi / /run/php-fpm/dse.sock {
    		ext .php
    		split .php
    		index index.php edit.php
    	}
    }

Es muss sichergestellt werden, dass php-fpm läuft, gegebenenfalls über systemctl den dienst "enabeln" und starten.
`systemctl enable php-fpm;systemctl start`. Bei Debian lautet der dienstname nicht php-fpm aber beispielsweise php7.2-fpm wobei 7.2 der PHP version entspricht.

### Nginx

Eine Konfiguration kann unter https://nginxconfig.io erzeugt werden.