Untis – Vertretungsplan als Website – ohne webuntis

Hallo,

habe für das  Untis-Vertretungsplanprogramm ein paar php-Skripte geschrieben,  die die Anzeige auf einem großen Flachbild-TV ermöglichen.

 

Die Skripte hier habe ich an die Linuxmuster.net – Lösung angepasst, man kopiert sie in das  apache – site-Verzeichnis des Linuxmuster.net-Servers (normalerweise unter /var/www/vplan), passt ein wenig die Konfigurationsdateien an – und voilà – der Vertretungsplan wird angezeigt.  Die beiden Tagesanzeigen werden unabhängig voneinander „smoothy“ gescrollt.

Hierbei gehe ich davon aus,  dass alle, die den Vertretungsplan lesen möchten, einen Linuxmuster-Account auf dem Server besitzen..

(Alternativ ist es natürlich möglich, die ldap-Authentifizierung durch ein einfaches Passwort, das schulweit vergeben werden kann, zu ersetzen).

Bei unserer Lösung gibt es aber fünf  Benutzergruppen bzw. -arten:

1. Die Vertretungsplanersteller. Sie müssen mit ihrem Login-Namen in die vplan.ini eingetragen werden. Sie haben ungefilterten Lese- und Schreibzugriff auf alle Daten und jeden beliebigen Kalendertag.

2. Den Benutzer „digiboard“. Auch er steht in der gleichen ini-Datei. Es handelt sich dabei um einen „Pseudobenutzer“, der dem auf einem Flachbildschirm dargestellten Vertretungsplan zugeordnet ist. Alle Betrachter dieses Info-Bildschirms sehen eine gefilterte Ansicht des aktuellen und folgenden Schultag-Vertretungsplans.

Durch eine Einstellung in einer .htaccess-Datei kann erreicht werden, dass die Authentifizierung für das Digiboard in einem lokalen  Netz umgangen werden kann: Auf diese Weise reicht ein Autostart eines Browsers mit lokaler http(s)-Adresse aus, um den Vertretungsplan anzuzeigen.

3. Die Kolleg/innen – sie haben einen gefilterten Zugang zum Vertretungsplan an zwei aufeinanderfolgenden Schultagen, so, wie das „digiboard“. SIe können also beispielsweise mit ihren Mobilgeräten auf den Vplan zugreifen.

4. Die Schüler mit Lesezugriff: Sie sehen eine stark gefilterte Ansicht des Vertretungsplans für ihre Stufe / Klasse an zwei aufeinanderfolgenden Schultagen, so, wie das „digiboard“. Der ausfallende Lehrer wird beispielsweise nicht angezeigt.

5. Die übrigen SchülerInnen / alle weiteren Benutzer: Ihnen ist der lesende Zugriff verwehrt.

Wie funktioniert die Datenübernahme aus Untis ?

Untis liefert auf Wunsch einen Vplan-Datenexport, eine Datei mit dem fest eingestellten Namen „GPU014.TXT“. Sie wird einfach per Mausklick und Webformular durch einen der beiden Vertretungsplan-Admins hochgeladen:

Dort wird sie „geparst“ und als JSON-Datenfile abgespeichert und durch die php-Skripte ausgewertet. Benutzerabhängiges css sorgt für jeweils verschiedene layouts – je nach Einsatzzweck:

  • .Der Vertretungsplan-Admin sieht sämtliche, für die Darstellung relevanten Daten, also den Grund für die Vertretung („Krankheit“, „dienstl.“, usw.), die fehlenden und vertretenden Lehrer, die Raumänderungen und die zusätzlichen freien Angaben. Außerdem bekommt er eine Vorschau auf die Ansicht des Flachbildschirms,  auf die Lehreransicht (s.)., und die Schüleransicht.
  • Der Lehrer / die Lehrerin sieht eine Zweitage-Ansicht des Vplans, teils mit Details, die nur die Kolleg/innen sehen sollten.
  • Die zulässigen Schülergruppen sehen einen datenschutzrechtlich unbedenklichen Ausschnitt, der ausreichend informativ ist:

Es ist ohne weiteres möglich, einen kleinen Raspberry Pi als Vertretungsplan-PC einzurichten. Dazu gibt es einige kleine Kniffe, was den Autostart, den Vollbildmodus etc. betrifft – sie werden im Anschluss an die Installationsanleitung erörtert.

Installation

1. Laden Sie hier– digiboard-11.12.17 – das Archiv mit den php-Scripten herunter und entpacken Sie es in ein Verzeichnis unterhalb des http-Verzeichniszweiges von apache, z.B. also unter /var/www:

unzip vplan2.0.zip -d /var/www/[Wunschverzeichnis]

2. Vergeben Sie die richtigen Benutzerrechte:

cd /var/www/[Wunschverzeichnis]

chown -R www-data:www-data *
chmod a+r /var/wwww/[Wunschverzeichnis]/.htaccess
chmod a+r /var/wwww/[Wunschverzeichnis]/upload/.htaccess

3. Fügen Sie an der geeigneten Stelle in den Apache-Konfigurationsdateien diese kleinen Schnipsel ein:

nano /etc/apache2/sites-available/[000default oder ähnlich...]
NameVirtualHost *:443
<VirtualHost *:443>
  ... andere Direktiven...
<Directory /var/www/[Wunschverzeichnis]>
 Options -Indexes FollowSymLinks MultiViews
 AllowOverride All
 Order allow,deny
 allow from all
 </Directory>
... andere Direktiven
</VirtualHost>

Hinweis:  Die „NameVirtualHost“-Direktive dürfte bereits in einer der Dateien stehen,  ergänzen Sie dann einfach den kursiven Textschnipsel !

4. Passen Sie jetzt die .htaccess aus dem Wunschverzeichnis an:

nano /var/www/[Wunschverzeichnis]/.htaccess
AuthName "Vertretungsplan"
AuthBasicProvider ldap
AuthType Basic
AuthzLDAPAuthoritative on
AuthLDAPURL ldap://10.16.1.1/ou=accounts,dc=linuxmuster-net,dc=lokal
require valid-user

# Das ist für die digitale Anzeige auf einem Flachbildschirm in der Schule: Spezifische IPs werden ohne Authentifizierung durchgelassen !
Order deny,allow
Deny from all
Allow from 192.168
Satisfy any

Im ersten Abschnitt muss man ggf. die Server-IP und die Suchdomain für den ldap anpassen, in der Regel funktioniert aber das hier Angegebene !

Im zweiten Abschnitt geht es darum, dass im lokalen Schulnetz der Zugriff des Anzeigenrechners ohne login funktionieren sollte, daher wird für bestimmte IP-Bereiche der login umgangen – hier für die IP-Adressn 192.168.x.y

5. Starten Sie den Apache neu !

/etc/init.d/apache2 restart

oder:

service apache2 restart

6. Sicherheitscheck:

Laden Sie eine Datei namens x.json in das Verzeichnis

 /var/www/[Wunschverzeichnis]/upload/

hoch und starten Sie einen Browser, geben Sie dort:

https:[Rechnername]/[Wunschverzeichnis]/upload/x.json

ein: Sie dürfen den Inhalt der Datei auf keinen Fall sehen oder downloaden können – ansonsten stimmt etwas mit der apache-Konfiguration oder der .htaccess-Datei nicht ! Auf keinen Fall darf die GPU014.txt.old oder die json-Datei durch Download zugänglich werden. (In der Version 3.0 werden diese Dateien verschlüsselt sein, aber bislang reicht uns das komplette Versperren des Verzeichnisses mit der .htaccess-Datei !)

vplan_admin, guenschi, laempel
vplan_digiboard_1, digiboard
vplan_zugriff_klassen,[Klasse_1],[Klasse_2], ...
vplan_lokale_ip, [192.168 ], ...

Hierbei sind digiboard, guenschi und laempel drei Lehreraccounts der lml, guenschi und laempel existieren als reale Personen, die Schreibrechte für den digitalen Vertretungsplan besitzen und an die Untis-Daten kommen, digiboard ist ein unter der lml anzulegender Pseudo-Account (Lehrer oder Schüler), mit dem man die Funktionsweise des Flachbildschirms (s.o.) von überall her überprüfen kann.

Die Klassen, denen der Zugriff erlaubt sein soll, tragen Sie in die dritte Zeile ein (6a, 6b, …)
In die vierte Zeile kommt ein IP-Torso, die ersten 7 Zeichen des Netzes, in dem auch ohne Authentifizierung auf das Digiboard zugegriffen werden darf, z.B. 192.168 oder 10.16.2.

 

Starten Sie den Apache neu !

8. Rufen Sie nun auf:

/var/www/[Wunschverzeichnis]/vplan.html

Laden Sie dann als Vertretungsplan-Admin eine exportierte GPU014.TXT hoch und kontrollieren Sie das Ergebnis per Datepicker !

Viel Erfolg –

Christoph Günschmann

UPDATE 9.12.2017

  • Korrektur der Anzeigenbreiten
  • In der vplan.ini stehen nun die erlaubten Klassen und eine Angabe für das Subnetz
  • Kleinere bugfixes

UPDATE 11.12.2017

  • Fehler in vplan_tabelle.php behoben (falsches Ausfiltern der Bereitschaften)