12 / 12
May 2022

Guten Tag,
seit einigen Tagen beobachte ich , dass der Online Status in der Rechten Benutzer Leiste immer unzuverlässiger wird, bzw. zeigt immer weniger Benutzer “Online” an.
Ich habe schon versucht Fehlkonfigurationen in den Zugriffsrechten und bei Benachrichtigungen zu finden, da scheint alles OK zu sein. Oftmals werden einzelne User auch kurzzeitig Rechts “Online” (Highlighted) angezeigt, sind aber sehr schnell wieder “grau”.
Wie und wo kann ich das reproduzierbar prüfen und passend einstellen? Bei uns ist ein Großteil der Benachrichtigungsfunktionen abgeschaltet, da zu viel “Notification” erzeugt wird, gibt es dort Bereiche, die zwingend aktiviert sein müssen, um den Benutzerstatus “Online” anzuzeigen?
Gruß Micha

  • created

    Feb '22
  • last reply

    May '22
  • 11

    replies

  • 1.4k

    views

  • 2

    users

  • 12

    links

Da Du in EGroupware on UCS gepostet hast, gehe ich mal davon aus, das Du die EGroupware App von Univention verwendest, die einen Push Server mitbringt.

Melde Dich mal als Administrator in der EGroupware an und starte dann Administration >> Test Push: das sollte eine grüne Box am oberen Bildschirmrand produzieren.

Bei nicht Administratoren ist es etwas komplizierter zu Testen: https://github.com/EGroupware/egroupware/wiki/Update-recommendations-and-troubleshooting#check-the-push-server-and-fix-problems-with-it8

Diverse Firewalls blockieren z.B. gerne Websockets …

Also wenn es einen funktionierenden Push Server gibt, verwendet EGroupware diesen zum Überprüfen wer alles online ist, und nicht mehr die Benachrichtigungen.

Ralf

Hallo zusammen,
noch in Ergänzung ein paar Fakten unserer eGroupware Installation.

  • wir verwenden EGroupware nicht als APP der Univention, sondern haben einen eigenen Server hierfür
  • Websockets sind in der FW durchlässig, getestet am Kliniksystem
  • PUSH funktioniert auf administrativer Ebene nicht (rot), hier die Fehlermeldung:

Push::onlyFallback()=true --> Using fallback via regular JSON requests

SwoolPush\Backend::failedAttempts()=4, SwoolePush\Backend::backoffTime=3600

SwoolePush\Backend->online()=Stopped trying to connect to push server
https://evoofficex/egroupware/pushafter 4 failed attempts!
Push::onlyFallback()=true --> Using fallback via regular JSON requests

SwoolPush\Backend::failedAttempts()=4, SwoolePush\Backend::backoffTime=3600

Push->online()=

Daher nochmals die Frage,
wie können wir die Präsenz der MA wieder anzeigen lassen, bzw. an welchen Stellen des Systems sind da Einstellungen erforderlich?

Grüße
Micha

Also Ihr habt keine UCS Installation, sondern EGroupware anderweitig installiert und der Push funktioniert nicht.

Wie habt Ihr EGroupware installiert?

  • empfohlen per Linux Paket (das per docker-compose Container verwendet)
  • anderweitig, wenn ja wie

Wie ruft Ihr EGroupware auf (http/https, Domain oder IP Adresse, gültiges Zertifikat)?

Seit Ihr die Troubleshooting Hinweise, deren Link ich gepostet hatte, mal durchgegangen, oder sollen wir das in einem Supportcall zusammen machen?

Ralf

Hallo Ralf,
hier noch ein paar Infos, (sorry für meine teilweise unklaren Begrifflichkeiten, da ich hauptsächlich aus der VMware und Netzwerkadministration komme).
Wir betreiben einen virtualisierten UCS Server, der eGroupware Server liegt ebenfalls auf dem VMware Host.

Die Installation funktioniert auch seit längerem leidlich stabil und in den meisten Modulen relativ störungsfrei, seit Ende Januar haben wir aber das Phänomen der fehlenden Präsents Anzeige.

Hier noch weiter Konfigurations - Settings:

Vorab sei noch Anzumerken, dass der Name der eGroupware Maschine “evoofficex” lautet.
Die url zum Aufruf des Mailsystem aber wie folgt lautet:
https://office.evocare.de/egroupware

Unsere Versuche die “Push” Meldungen ohne Fehler zu bekommen war bislang erfolglos.

explicitOriginalTarget: WebSocket { url: “wss://evoofficex/egroupware/push”,
readyState: 3, bufferedAmount: 0, … }

Firefox kann keine Verbindung zu dem Server unter wss://evoofficex/egroupware/push aufbauen.

  • In Benutzung Apache2
  • apache.conf:
#################################################
# Reverse proxy for EGroupware Docker container #
#################################################

# Please note:
#
# This proxy configuration is currently included at global level in
# /etc/apache2/conf.d/egroupware-docker.conf and used for all vhosts.
#
# You can comment it out there and include it only in a certain vhost:
#
# <VirtualHost *:80>
# include /etc/egroupware-docker/apache.conf
# </VirtualHost>

RequestHeader set X-Forwarded-Proto "https" env=HTTPS
# required for push / websocket
RewriteEngine on
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule /egroupware/push ws://127.0.0.1:8080/egroupware/push [P]
ProxyPass /egroupware/ 127.0.0.1:8080/egroupware/ timeout=4000 connectiontimeout=600 acquire=3000 retry=6
ProxyPassReverse /egroupware/ 127.0.0.1:8080/egroupware/

ProxyPass /Microsoft-Server-ActiveSync 127.0.0.1:8080/Microsoft-Server-ActiveSync timeout=4000 connectiontimeout=600 acquire=3000 retry=6
ProxyPassReverse /Microsoft-Server-ActiveSync 127.0.0.1:8080/Microsoft-Server-ActiveSync

RedirectMatch ^/.well-known/(caldav|carddav)$ /egroupware/groupdav.php/
RedirectMatch ^(/principals/users/.*)$ /egroupware/groupdav.php$1
RedirectMatch ^/$ /egroupware/index.php
RedirectMatch ^/egroupware$ /egroupware/index.php

hosts:

127.0.0.1 localhost
127.0.1.1 office.evocare.de

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters  

Gruß Micha

Das ist das Problem!

Da müsste: wss://office.evocare.de/egroupware/push stehen.

Apache sollte die X-Forwarded-* Header automatisch senden.
Suche doch mal unter Admin >> PHP Informationen nach “X-Fowrwarded-” und poste das hier.

Habt Ihr evtl. noch einen Proxy for dem Apachen?

Ralf

Guten Morgen Ralf,
ja, das haben wir auch so gesehen.

ein paar Kleinigkeiten haben wir gerade gezogen.
Das sind die aktuellen EInträge:

$_SERVER[‘HTTP_X_FORWARDED_SERVER’] office.evocare.de2
$_SERVER[‘HTTP_X_FORWARDED_HOST’] office.evocare.de2, office.evocare.de2

FQDN repared

kein weiterer Proxy. PUSH jetzt bei Clients vorhanden, aber TEST Push immer noch fehlerhaft:

Push::onlyFallback()?lse --> Using native Swoole Push

SwoolPush\Backend::failedAttempts()=2, SwoolePush\Backend::backoffTime`

SwoolePush\Backend->online()=

Push::onlyFallback()=true --> Using fallback via regular JSON requests

SwoolPush\Backend::failedAttempts()=4, SwoolePush\Backend::backoffTime0

Push->online()=

after retry;
Push::onlyFallback()=true --> Using fallback via regular JSON requests

SwoolPush\Backend::failedAttempts()=4, SwoolePush\Backend::backoffTime0

SwoolePush\Backend->online()=Stopped trying to connect to push server office.evocare.de/egroupware/pushafter 4 failed attempts!
Push::onlyFallback()=true --> Using fallback via regular JSON requests

SwoolPush\Backend::failedAttempts()=4, SwoolePush\Backend::backoffTime0

Push->online()=

Leider nur ein Teilerfolg, … die Präsents Anzeige ist immer noch buggy

Grüße Micha

Das ist der Header den EGroupware verwendet um die Websocket URL zu konstruieren, allerdings wird das mit dem doppelten Hostnamen sicher fehlschlagen, kann aber auch einfach ein Typo sein.

Da Euer Server ja von außen erreichbar ist, kann ich sagen von außen, sprich mit dem Browser sieht alles ok aus.

Das Problem scheint in der Verbindung zwischen dem EGroupware und Push Container zu liegen. Typischerweise ist das Problem die Nat-Reflektion oder eine Regel auf der Firewall, die von innen heraus die Verbindung über die äußere Adresse nicht erlaubt. Kann man einfach testen:

docker exec -it egroupware bash -c "apt update && apt install -y curl && curl -i wscat --connect https://office.evocare.de/egroupware/push"

Die einfachste Lösung dafür ist in der /etc/egroupware-docker/docker-compose.override.yml einen extra_hosts Eintrag zu machen:

    extra_hosts:
    - "office.evocare.de:172.17.0.1"

Und danach mit mit cd /etc/egroupware-docker; docker-compose up -d --force recreate egroupware zu aktivieren. Das sorgt dafür das statt über die Firewall / äußere Adresse zu gehen, das docker0 Interface, auf dem der Apache auch gebunden ist, zu verwenden.

Das steht übrigens alle in den Troubleshooting Hinweisen für den Push Server bei uns im Wiki, den Link hatte ich ja schon geposted:

Ralf

Hallo Ralf,
vielen Dank für die detaillierten Hinweise.

Natürlich haben wir diese direkt umgesetzt, wie auch das gesamte Troubleshooting aus dem Wiki nochmal durchgeführt/getestet wurde.

Es gab zwar kleinere Abweichungen, aber auch nach Korrektur dieser Konfiguration und ein paar Neustarts des Servers kein besseres Ergebnis.

Lediglich an diesen beiden Stellen kommen wir auf kein Ergebnis:

docker exec -it egroupware bash -c “apt update && apt install -y curl
&& curl -i wscat --connect office.evocare.de/egroupware/push

Hit:1 archive.ubuntu.com/ubuntu focal InRelease
Hit:2 ppa.launchpad.net/ondrej/php/ubuntu focal InRelease
Hit:3 archive.ubuntu.com/ubuntu focal-updates InRelease
Hit:4 archive.ubuntu.com/ubuntu focal-backports InRelease
Hit:5 security.ubuntu.com/ubuntu focal-security InRelease
Reading package lists… Done
Building dependency tree
Reading state information… Done
17 packages can be upgraded. Run ‘apt list --upgradable’ to see them.
Reading package lists… Done
Building dependency tree
Reading state information… Done
curl is already the newest version (7.68.0-1ubuntu2.7).
0 upgraded, 0 newly installed, 0 to remove and 17 not upgraded.
curl: option --connect: is ambiguous
curl: try ‘curl --help’ or ‘curl --manual’ for more information

und

if you see the green array, but no red one(s) when you eg. add an
InfoLog, run the above curl command inside the egroupware container to
see if you get the same output as above: docker exec -it egroupware
curl -i example.org/egroupware/push

docker exec -it egroupware curl -i office.evocare.de/egroupware/push
curl: (7) Failed to connect to office.evocare.de port “XXX”: Connection refused

office.evocare.de wird über die WAF aufgerufen.
Das Zertifikat liegt auf der FW.
WAF und Server kommunizieren über den Standard Port

Was könnte uns hier noch weiterhelfen?

Gruß Micha

Kleiner Fehler vom Amt :wink: entweder curl oder wscat …

Das habe ich so erwartet.

Entweder machen was ich im Beitrag davor schon geschrieben habe (extra_hosts) oder die Anleitung/Support der WAF bemühen, die blockiert ja den Aufruf.

Ralf

3 months later

… im Zuge der Konfigurationsüberprüfung wurde auch der Fehler bei der wss Konfiguration und SwoolPush auf die Standardwerte gesetzt, die Anpassungen für die Firewall abwicklung erstmal entfernt und anschließend neu gesetzt.
MfG
Micha
EvoCare