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.

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äd alle Registrierungen an der PBX über https via HOTDESKING_PBX_HOST
der HDM läd die Liste der Userobjecte in der Gruppe HOTDESKING_PBX_GROUP der PBX HOTDESKING_PBX_NAME
der HDM sucht Userobjecte mit mehr als einer Registrierung.
hat ein Userobject 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 Userobjekte 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:
version: '3.1'
services:
master:
image: tri2/hotdeskingmanager:latest
ports:
- 1700:80
restart: always
environment:
- HOTDESKING_PBX_HOST=192.168.178.71
- HOTDESKING_PBX_PORT=443
- HOTDESKING_PBX_HTTP_USER=admin
- HOTDESKING_PBX_HTTP_PASSWORD=pbx_admin_password
- HOTDESKING_PBX_NAME=PBX-Master
- HOTDESKING_PBX_GROUP=HOTDESKING
- HOTDESKING_ENDPOINT_USER=phoneadmin
- HOTDESKING_ENDPOINT_PASSWORD=passwordwebinterface
volumes:
- ./data/master/hotdesking/:/data/:rw
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
(Standart, 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 <username> <pass>
htpasswd /data/ssl/passwd.digest admin neuespasword
Das Programm htpasswd
ist im HDM Container installiert, der Aufruf lautet entsprechend:
docker-compose exec <containername> htpasswd /data/ssl/passwd.digest <username> <pass>
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:
version: '3.1'
services:
master:
image: reg.cloud.trizwo.it/hdm/hotdeskingmanager:amd64-latest
ports:
- 1700:80
restart: always
environment:
- HOTDESKING_PBX_HOST=192.168.178.71
- HOTDESKING_PBX_PORT=443
- HOTDESKING_PBX_HTTP_USER=admin
- HOTDESKING_PBX_HTTP_PASSWORD=pbx_admin_password
- HOTDESKING_PBX_NAME=PBX-Master
- HOTDESKING_PBX_GROUP=HOTDESKING
- HOTDESKING_ENDPOINT_USER=phoneadmin
- HOTDESKING_ENDPOINT_PASSWORD=passwordwebinterface
- HOTDESKING_MODUS='time'
- HOTDESKING_TIME_SCHEDULE='23:00'
volumes:
- ./data/master/hotdesking/:/data/:rw
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
:
version: '3.1'
services:
hamburg:
image: reg.cloud.trizwo.it/hdm/hotdeskingmanager:amd64-latest
ports:
- 1700:80
restart: always
environment:
- HOTDESKING_PBX_HOST=192.168.178.71
- HOTDESKING_PBX_PORT=443
- HOTDESKING_PBX_HTTP_USER=admin
- HOTDESKING_PBX_HTTP_PASSWORD=pbx_admin_password
- HOTDESKING_PBX_NAME=PBX-Master
- HOTDESKING_PBX_GROUP=HOTDESKING2300
- HOTDESKING_ENDPOINT_USER=phoneadmin
- HOTDESKING_ENDPOINT_PASSWORD=passwordwebinterface
- HOTDESKING_MODUS='time'
- HOTDESKING_TIME_SCHEDULE='23:00'
volumes:
- ./data/hamburg/hotdesking/:/data/:rw
berlin:
image: reg.cloud.trizwo.it/hdm/hotdeskingmanager:amd64-latest
ports:
- 1701:80
restart: always
environment:
- HOTDESKING_PBX_HOST=192.168.138.71
- HOTDESKING_PBX_PORT=443
- HOTDESKING_PBX_HTTP_USER=admin
- HOTDESKING_PBX_HTTP_PASSWORD=pbx_admin_password
- HOTDESKING_PBX_NAME=PBX-Berlin
- HOTDESKING_PBX_GROUP=HOTDESKING2200
- HOTDESKING_ENDPOINT_USER=phoneadmin
- HOTDESKING_ENDPOINT_PASSWORD=passwordwebinterface
- HOTDESKING_MODUS='time'
- HOTDESKING_TIME_SCHEDULE='22:00'
volumes:
- ./data/berlin/hotdesking/:/data/:rw
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:
version: '3.1'
services:
time:
image: reg.cloud.trizwo.it/hdm/hotdeskingmanager:amd64-latest
ports:
- 1700:80
restart: always
environment:
- HOTDESKING_PBX_HOST=192.168.178.71
- HOTDESKING_PBX_PORT=443
- HOTDESKING_PBX_HTTP_USER=admin
- HOTDESKING_PBX_HTTP_PASSWORD=pbx_admin_password
- HOTDESKING_PBX_NAME=PBX-Master
- HOTDESKING_PBX_GROUP=HOTDESKING2300
- HOTDESKING_ENDPOINT_USER=phoneadmin
- HOTDESKING_ENDPOINT_PASSWORD=passwordwebinterface
# time
- HOTDESKING_MODUS='time'
- HOTDESKING_TIME_SCHEDULE='23:00'
volumes:
- ./data/time/hotdesking/:/data/:rw
classic:
image: reg.cloud.trizwo.it/hdm/hotdeskingmanager:amd64-latest
ports:
- 1701:80
restart: always
environment:
- HOTDESKING_PBX_HOST=192.168.178.71
- HOTDESKING_PBX_PORT=443
- HOTDESKING_PBX_HTTP_USER=admin
- HOTDESKING_PBX_HTTP_PASSWORD=pbx_admin_password
- HOTDESKING_PBX_NAME=PBX-Master
- HOTDESKING_PBX_GROUP=HOTDESKING
- HOTDESKING_ENDPOINT_USER=phoneadmin
- HOTDESKING_ENDPOINT_PASSWORD=passwordwebinterface
# classic, the default, so can be left out, if not set to time
- HOTDESKING_MODUS='classic'
volumes:
- ./data/classic/hotdesking/:/data/:rw