Hotdesking Manager ------------------ Der Hotdesking Manager (HDM) ist ein Programm, um eine automatische Hotdesking Lösung für Innovaphone Telefonanlagen abzubilden. Dabei werden die Registrierungen von definierten Userobjekten überwacht und anschließend in Abhängigkeit der Konfiguration automatisch an Endgeräten abgemeldet. Grundsätzlich ist der HDM ein zentrale Server in einer von mehreren Betriebsarten, der einerseits Zugriff auf die PBX hat, andererseits Zugriff auf alle Telefone haben muss, die sich mit dieser PBX regisrieren und der HDM ggf. HTTP Requests schicken können muss. Eine HDM Instanz stellt dabei eine Funktion für eine PBX für eine Gruppe von Nutzern da. Ist der Betrieb an mehreren PBXen gewünscht, oder innerhalb einer PBX Gruppen mit Unterschiedlicher Betriebsart gewünscht, können mehrere Instanzen parralel gestartet werden. .. figure:: ./hotdeskingmanager.png :align: center :width: 90% Voraussetzungen ^^^^^^^^^^^^^^^ Docker Host ,,,,,,,,,,, * Docker >= 1.13 * docker-compose >= 1.17 oder * VoipioOS PBX ,,, * Innovaphone PBX >= V10 * Zugriff via *192.168.178.71* über HTTPS Port *443* * Zugriff mit Username *admin* und Password *pbx_admin_password*, readonly reicht. * Name der PBX *PBX-Master* * Name der Gruppe der zu überwachenden Userobjekte *HOTDESKING* Telefone ,,,,,,,, * Zugriff über IP des Telefons über HTTPS Port *443* * Zugriff auf PBX mit Username *phoneadmin* und Password *passwordwebinterface*, volle Admin Berechtigung nötig. Betriebsarten ^^^^^^^^^^^^^ Classic ,,,,,,, Meldet sich ein Nutzer an einem Telefon an, ohne sich vorher an einem vorherigem Telefone abzumelden, werden automatisch seine anderen Registrierungen gelöscht. * der HDM lädt alle Registrierungen an der PBX über https via HOTDESKING_PBX_HOST * der HDM lädt die Liste der Benutzerobjekte in der Gruppe HOTDESKING_PBX_GROUP der PBX HOTDESKING_PBX_NAME * der HDM sucht Benutzerobjekte mit mehr als einer Registrierung. * hat ein Benutzerobjekt mehrere Registrierungen, werden alle Registrierungen bis auf die jüngste gelöscht. Time ,,,, Alle Registrierungen von Nutzern werden zu einer bestimmten Tageszeit gelöscht. * Der HDM pollt die PBX und sucht Benutzerobjekte mit mehr als einer Registrierung. * Ist ein Nutzer zu der konfigurierten Zeit an einem Endgerät angemeldet, wird er dort abgemeldet. Installation ^^^^^^^^^^^^ erstellen des Installationsordner (der Ordnername wird Bestandteil der Containernamen):: mkdir hotdeskingmanager in den Installationsordner wechseln:: cd hotdeskingmanager erstellen der Datei ``docker-compose.yml`` mit bspw. ``nano`` (Speichern mit STRG-x und STRG-y):: nano docker-compose.yml anschließen sieht die ``docker-compose.yml`` so aus: .. literalinclude:: ./docker-compose.yml Konfiguration und Parameter ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Die gesamte Konfiguration des HDM geschieht über Umgebungsvariablen im resultierendem Container. mit dem Vorteil, das mehrere Instanzen über eine ``docker-compose.yml`` erstellt werden können oder über einen Docker swarm via Stack verteilt werden können. Pflichtparameter ,,,,,,,,,,,,,,,, Hostname oder IP Adresse der PBX:: HOTDESKING_PBX_HOST=pbx.example.com HOTDESKING_PBX_PORT=443 Zertifikat der PBX, um die TLS Verbindung zu verifizieren. Derzeit unbenutzt:: HOTDESKING_PBX_HTTP_CERTIFICATEFILE= Username und Passwort um auf die PBX zuzugreifen. Benötigt nur lesenden Zugriff.:: HOTDESKING_PBX_HTTP_USER=admin HOTDESKING_PBX_HTTP_PASSWORD=ipva Der Name der PBX in dem sie die Gruppe HOTDESKING_PBX_GROUP befindet (PBX-Master, Slave-Sindelfingen):: HOTDESKING_PBX_NAME=PBX-Master Name der Gruppe der zu überwachenden Userobjekte. Bei mehreren Instanzen (``classic`` und gleichzeitig ``time``) empfiehlt es sich für die ``time`` Gruppe bspw. ``HOTDESKINGTIME`` zu wählen.:: HOTDESKING_PBX_GROUP=HOTDESKING Zugangsdaten auf das Webinterface der Telefone/Endgeräte. Es muss überall der gleiche Nutzer vorhanden sein.:: HOTDESKING_ENDPOINT_USER=admin HOTDESKING_ENDPOINT_PASSWORD=ip222 Betriebsart ,,,,,,,,,,, die Parameter in ``HOTDESKING_MODUS`` widersprechen sich, wenn beide gewählt. Der letzte gewinnt. Bitte eine zweite Instanz konfigurieren. ``classic`` (Standard, maximal 1 Registrierung pro Nutzer ):: HOTDESKING_MODUS=classic ``time`` (alle Registrierungen werden an Uhrzeit abgemeldet):: HOTDESKING_MODUS=time Ist Betriebsart ``time`` gewählt, ist dies der Zeitpunkt in ``HH:MM``, an dem Telefone abgemeldet werden:: HOTDESKING_TIME_SCHEDULE=00:00 optionale Parameter ,,,,,,,,,,,,,,,,,,, Interval in Sekunden in dem die PBX gepollt wird nach Registrierungen und Usern. Im ``classic`` Modus die Zeit, bis merkt wird, ob ein User eine zweite, neue Registrierung eröffnet hat.:: HOTDESKING_INTERVAL=60 Logfile Einstellungen, siehe https://docs.python.org/3/library/logging.html:: HOTDESKING_LOGLEVEL=20 HOTDESKING_LOGFORMAT="%(asctime)s %(name)-12s %(levelname)-8s %(message)s" Pfad innerhalb des Containers. Pfad auf dem Host ergibt sich aus der ``volumes`` Einstellung in der ``docker-compose.yml``:: HOTDESKING_LOGFILE=/data/hotdeskingmanager.log max. Größe einer Logdatei:: HOTDESKING_LOGFILE_SIZE=1000000 Anzahl an historischen, rollenden Logdateien:: HOTDESKING_LOGFILE_BACKUPCOUNT=2 nicht benutzt derzeit, mal gedacht, um das eigene Log wohin zu melden:: HOTDESKING_SYSLOG_HOST= HOTDESKING_SYSLOG_UDPPORT=0 Wichtig für den betrieb von Telefonen mit Softwarestand <= Innovaphone V10. Änderung im WebInterface ab V11. Parrallelbetrieb von <= 10 und >=11 Endgeräten nicht möglich. Dazu jeweils getrennte Instanzen anlegen.:: HOTDESKING_LEGACY_V10_ENDPOINT=false Webinterface ,,,,,,,,,,,, Jede HDM Instanz hat eine eigene Weboberfläche. Der HTTP Port über den sie erreichbar ist hängt von der Konfiguration in der docker-compose.yml ab. Im Standart ist es ``1700``. Damit die Oberfläche leichter via Reverse Proxy einbinden kann in eine Oberfläche, ist der Webroot auf ``/hotdesking`` eingestellt. Die Anmeldedaten lauten im Standart User ``admin`` und Passwort ``hotdesking``. Webinterface Passwort ändern ,,,,,,,,,,,,,,,,,,,,,,,,,,,, Beim ersten Start desContainers wird eine Datei mit Standart Zugangsdaten erstellt. Das Paswort für das Webinterface wird aus Sicht des Containers in der Datei ``/data/ssl/passwd.digest``. Diese findet sich über das Sharing zwischen Host und Container im Installationsordner ebenfalls unter ``./data/``. Erzeugen sie ein neues Password mit dem Befehl ``htpaswd``:: htpasswd /data/ssl/passwd.digest htpasswd /data/ssl/passwd.digest admin neuespasword Das Programm ``htpasswd`` ist im HDM Container installiert, der Aufruf lautet entsprechend:: docker-compose exec htpasswd /data/ssl/passwd.digest docker-compose exec master htpasswd /data/ssl/passwd.digest admin neuespasword Beim nächsten Start des Containers wird die Änderung übernommen.:: docker-compose down && docker-compose up -d --build Beispiele ^^^^^^^^^ Time Modus an einer PBX ,,,,,,,,,,,,,,,,,,,,,,, Alle Nutzer in der PBX ``PBX-Master`` in der Gruppe ``HOTDESKING`` werden um ``23:00`` abgemeldet: .. literalinclude:: ./docker-compose-time.yml Time Modus an Master und einer Slave PBX ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Alle Nutzer in der PBX ``PBX-Master`` in der Gruppe ``HOTDESKING2300`` werden um ``23:00`` abgemeldet, die in Berlin in Gruppe ``HOTDESKING2200`` der ``PBX-Berlin`` schon um ``22:00``: .. literalinclude:: ./docker-compose-two.yml Mischbetrieb Classic und Time Modus an einer PBX ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Alle Nutzer in der Gruppe ``HOTDESKING2300`` werden um ``23:00`` abgemeldet, die in Gruppe ``HOTDESKING`` haben max. eine Registrierung: .. literalinclude:: ./docker-compose-modes.yml