androidseb25 / iGotify-Notification-Assistent

Docker container for sending Gotify notifications to iOS devices (bridge to gotify websocket)
MIT License
131 stars 6 forks source link

[BUG]Nach iGotify Update, keine Push Mitteilungen mehr #44

Closed lks-ntzl closed 6 months ago

lks-ntzl commented 6 months ago

Hallo Seb,

seit dem letzten Update von iGotify, werden mir auf meinem iPhone keine Push Mitteilungen mehr angezeigt. Wenn die App geöffnet und die Ansicht aktualisiert, werden alle Mitteilungen korrekt angezeigt.

Alle Komponenten wurden bereits neu installiert:

Gotify & iGotify stecken hinter einem NGINX Proxy Manager. Beide Dienste werden über jeweils eine Domain erreicht: (funktioniert jeweils Intern als auch Extern)

  1. https://gotify.xxx.de
  2. https://igotify.xxx.de

Der Gotify Container läuft soweit Fehlerfrei, lediglich beim iGotify Container kommt es zu Fehlermeldungen:

iGotify Container Log nach Installation und Einrichtung der App:

Database is created: True
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://[::]:8080
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
      Content root path: /app
warn: Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3]
      Failed to determine the https port for redirect.
ClientToken: CJ802XwXXXXX
DeviceToken: NTFY-DEVICE-d7fSst6Ogdx4gFfcWiQooHgspXXXXXXXXXX
GotifyUrl: https://gotify.xxx.de
Client connecting...
Done!
Disconnection happened, type: Websocket.Client.DisconnectionInfo

Nach einiger Zeit kommt folgender Fehlerblock in Dauerschleife:

Database is created: True
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://[::]:8080
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
      Content root path: /app
warn: Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3]
      Failed to determine the https port for redirect.
Unhandled exception. System.Threading.Tasks.TaskCanceledException: The request was canceled due to the configured HttpClient.Timeout of 100 seconds elapsing.
 ---> System.TimeoutException: A task was canceled.
 ---> System.Threading.Tasks.TaskCanceledException: A task was canceled.
   at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
   --- End of inner exception stack trace ---
   --- End of inner exception stack trace ---
   at System.Net.Http.HttpClient.HandleFailure(Exception e, Boolean telemetryStarted, HttpResponseMessage response, CancellationTokenSource cts, CancellationToken cancellationToken, CancellationTokenSource pendingRequestsCts)
   at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
   at iGotify_Notification_Assist.Services.Tool.CheckIfUrlReachable(String url) in /src/Services/Tool.cs:line 148
   at iGotify_Notification_Assist.Services.GotifySocketService.Start() in /src/Services/GotifySocketService.cs:line 96
   at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_1(Object state)
   at System.Threading.ThreadPoolWorkQueue.Dispatch()
   at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart()

Am Setup hat sich, bis auf das iGotify Update und die Nutzung deines neuen Compose Files, nichts verändert.

Smartphone:

androidseb25 commented 6 months ago

hi es sieht so aus als hättest du beim NPM den Websocket Support deaktiviert, da er beim versuch eine Websocket Verbindung herzustellen einen Disconnect bekommt und später beim erneuten probieren in ein Request timeout läuft

in der alten version ging er erst nicht über den npm sondern über den im compose file angegebene url (default: http://gotify)

lks-ntzl commented 6 months ago

Vielen Dank für die schnelle Reaktion.

Das war auch mein erster Gedanke, doch leider ist der Websocket Support aktiv: image

Auch sonst steht der Verbindung eigentlich nichts im wege.

lks-ntzl commented 6 months ago

Kurzes Update

Ich habe selbstverständlich SSL Zertifikate auf den Domains liegen und dementsprechend auch das SSL enforcement aktiv. Den Haken habe ich testweise mal herausgenommen und trotzdem in der App Einrichtung gesagt, er soll die Domain per "https://" ansprechen.

Kurz gesagt, danach hat die Einrichtung ohne die Fehlermeldung:

warn: Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3]
      Failed to determine the https port for redirect.

funktioniert und die Push Mitteilung gingen durch. Nach der Einrichtung habe ich das SSL enforcement wieder aktiviert....bis jetzt funktioniert es noch. Entweder hat sich mein NPM verschluckt oder in der Geschichte ist doch irgendwo ein Bug.

Im Internen Netz habe ich in der App mal direkt die IPs + Port angegeben, dies hat ebenfalls funktioniert gehabt.

androidseb25 commented 6 months ago

OK gut zuhören das es jetzt funktioniert.

Ich würde eher auf den NPM tippen, den die Nachricht

warn: Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3]
      Failed to determine the https port for redirect.

ist kein Fehler sondern nur ne Warnung das er von einem 443 Port auf einen Port 80 zugreift, das hab ich bei mir auch

lks-ntzl commented 6 months ago

Trotzdem vielen Dank. Sollte nochmal was sein, melde ich mich :)

lks-ntzl commented 4 months ago

Moin, eine kleine Info für Leute die ggf. das gleiche Problem haben, dass keine Push Nachrichten aufs Handy kommen.

In der App habe ich meine https://DOMAIN.de, jeweils für Gotify und für iGotify, hinterlegt. Alle Komponenten stehen in meinem Heim Netzwerk. Wenn Gotify oder iGotify nun die hinterlegte Domain nutzen möchte, um eine Verbindung aufzubauen, schlägt dies fehl, da die tolle "dns rebind protection" greift.

Zur Lösung: Entweder man kann in seinem Router die DNS Rebind Protection für seine entsprechende Domain deaktivieren oder man macht ein Bind von einer eigenen /etc/hosts Datei, die irgendwo auf dem Hostsystem liegt, auf die /etc/hosts im Container. Somit würde der Container, wenn er die entsprechende Domain nutzen möchte, direkt auf die statisch hinterlegte interne IP gehen und muss nicht übers öffentliche Netz.

androidseb25 commented 4 months ago

hi, ich habe mir überlegt die Environment variablen zurückzubringen ohne den Multiuser support zu verlieren

du kannst den issue #59 dafür verfolgen

lks-ntzl commented 4 months ago

Moin,

klingt nach einem guten Plan. Würde dieses Problem definitiv beheben.