Skip to content

Commit 449eb42

Browse files
authored
Merge pull request #71 from androidseb25/dev
PR - Version 1.3.0.0
2 parents 9cccbb3 + 1e85aa0 commit 449eb42

18 files changed

+336
-339
lines changed

.github/workflows/publish.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ on:
1212

1313
jobs:
1414
build_arm64_images:
15-
if: startsWith(github.ref, 'refs/tags/v')
15+
#if: startsWith(github.ref, 'refs/tags/v')
1616
#if: github.event.pull_request.merged == true
1717
name: "Build Multi Arch Images"
1818
runs-on: ubuntu-latest

Controller/DeviceController.cs

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,6 @@ namespace iGotify_Notification_Assist.Controller;
99
[Route("[controller]")]
1010
public class DeviceController : ControllerBase
1111
{
12-
private readonly ILogger<DeviceController> _logger;
13-
14-
public DeviceController(ILogger<DeviceController> logger)
15-
{
16-
_logger = logger;
17-
}
18-
1912
/// <summary>
2013
/// Add device token to the TXT for sending the push notificcation
2114
/// </summary>
@@ -24,17 +17,17 @@ public DeviceController(ILogger<DeviceController> logger)
2417
[HttpPost]
2518
public async Task<IActionResult> PostDeviceModel(DeviceModel deviceModel)
2619
{
27-
string result = "";
28-
bool resultBool = false;
20+
string result;
21+
bool resultBool;
2922

3023
Console.WriteLine($"ClientToken: {deviceModel.ClientToken}");
3124
Console.WriteLine($"DeviceToken: {deviceModel.DeviceToken}");
3225
Console.WriteLine($"GotifyUrl: {deviceModel.GotifyUrl}");
3326

3427
if (
35-
deviceModel.ClientToken!.Length == 0 || deviceModel.ClientToken == "string" ||
36-
deviceModel.DeviceToken!.Length == 0 || deviceModel.DeviceToken.Length < 60 || deviceModel.DeviceToken == "string" ||
37-
deviceModel.GotifyUrl!.Length == 0 || deviceModel.GotifyUrl == "string"
28+
deviceModel.ClientToken.Length == 0 || deviceModel.ClientToken == "string" ||
29+
deviceModel.DeviceToken.Length == 0 || deviceModel.DeviceToken.Length < 60 || deviceModel.DeviceToken == "string" ||
30+
deviceModel.GotifyUrl.Length == 0 || deviceModel.GotifyUrl == "string"
3831
)
3932
{
4033
result = "Fehler beim hinzugefügen des Gerätes!";
@@ -44,8 +37,8 @@ public async Task<IActionResult> PostDeviceModel(DeviceModel deviceModel)
4437

4538
if (await deviceModel.Insert())
4639
{
47-
GotifySocketService gss = GotifySocketService.getInstance();
48-
gss.StartWSThread(deviceModel.GotifyUrl, deviceModel.ClientToken);
40+
GotifySocketService.getInstance();
41+
GotifySocketService.StartWsThread(deviceModel.GotifyUrl, deviceModel.ClientToken);
4942
result = "Gerät erfolgreich hinzugefügt";
5043
resultBool = true;
5144
} else {
@@ -64,8 +57,8 @@ public async Task<IActionResult> PostDeviceModel(DeviceModel deviceModel)
6457
[HttpDelete]
6558
public async Task<IActionResult> DeleteDevcice(string token)
6659
{
67-
string result = "";
68-
bool resultBool = false;
60+
string result;
61+
bool resultBool;
6962

7063
Console.WriteLine($"Delete Token: {token}");
7164
if (token.Length == 0 || token == "string")
@@ -75,15 +68,14 @@ public async Task<IActionResult> DeleteDevcice(string token)
7568
return Ok(new { Message = result, Successful = resultBool });
7669
}
7770

78-
DeviceModel deviceModel = new DeviceModel();
79-
deviceModel.ClientToken = token;
80-
Users usr = await DatabaseService.GetUser(token);
71+
var deviceModel = new DeviceModel { ClientToken = token };
72+
var usr = await DatabaseService.GetUser(token);
8173
if (await deviceModel.Delete())
8274
{
8375
if (usr.Uid > 0)
8476
{
85-
GotifySocketService gss = GotifySocketService.getInstance();
86-
gss.KillWsThread(usr.ClientToken);
77+
GotifySocketService.getInstance();
78+
GotifySocketService.KillWsThread(usr.ClientToken);
8779
}
8880

8981
result = "Gerät erfolgreich gelöscht";
@@ -99,9 +91,9 @@ public async Task<IActionResult> DeleteDevcice(string token)
9991
[HttpGet("Test/{deviceToken}")]
10092
public async Task<IActionResult> Test(string deviceToken)
10193
{
102-
SecNtfy ntfy = new SecNtfy(Environment.GetEnvironmentVariable("SECNTFY_SERVER_URL") ?? "https://api.secntfy.app");
94+
var ntfy = new SecNtfy(Environment.GetEnvironmentVariable("SECNTFY_SERVER_URL") ?? "https://api.secntfy.app");
10395
if (deviceToken.Length > 0)
104-
_ = await ntfy.SendNotification(deviceToken, "Test", "Test Nachricht", false, "", 0);
96+
_ = await ntfy.SendNotification(deviceToken, "Test", "Test Nachricht");
10597
Console.WriteLine(ntfy.encTitle);
10698

10799
return Ok();

Controller/VersionController.cs

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
using System.Reflection;
2-
using System.Security.Cryptography;
3-
using iGotify_Notification_Assist.Helpers;
42
using iGotify_Notification_Assist.Models;
53
using Microsoft.AspNetCore.Mvc;
64

@@ -10,23 +8,15 @@ namespace iGotify_Notification_Assist.Controller;
108
[Route("[controller]")]
119
public class VersionController : ControllerBase
1210
{
13-
private readonly ILogger<DeviceController> _logger;
14-
15-
public VersionController(ILogger<DeviceController> logger)
16-
{
17-
_logger = logger;
18-
}
19-
2011
/// <summary>
2112
/// Get the current version of the container
2213
/// </summary>
2314
/// <returns></returns>
2415
[HttpGet]
2516
public IActionResult GetVersion()
2617
{
27-
ServerVersion sv = new ServerVersion();
28-
sv.version = Assembly.GetEntryAssembly()?.GetName().Version?.ToString() ?? "";
29-
DateTime buildDate = new FileInfo(Assembly.GetExecutingAssembly().Location).LastWriteTime;
18+
var sv = new ServerVersion { version = Assembly.GetEntryAssembly()?.GetName().Version?.ToString() ?? "" };
19+
var buildDate = new FileInfo(Assembly.GetExecutingAssembly().Location).LastWriteTime;
3020
sv.buildDate = buildDate.ToString("yyyy-MM-dd'T'HH:mm:ss");
3121
sv.commit = Programms.StartUpCommit;
3222
return Ok(sv);
@@ -35,5 +25,5 @@ public IActionResult GetVersion()
3525

3626
public static class Programms
3727
{
38-
public static string? StartUpCommit = Guid.NewGuid().ToString().Replace("-", "");
28+
public static readonly string? StartUpCommit = Guid.NewGuid().ToString().Replace("-", "");
3929
}

Helpers/MsgCrypto.cs

Lines changed: 0 additions & 39 deletions
This file was deleted.

Models/DeviceModel.cs

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
using iGotify_Notification_Assist.Services;
22
using SecNtfyNuGet;
3+
using Websocket.Client;
34

45
namespace iGotify_Notification_Assist.Models;
56

67
public class DeviceModel
78
{
8-
public DeviceModel() { }
9-
109
public string ClientToken { get; set; } = "";
1110
public string DeviceToken { get; set; } = "";
1211
public string GotifyUrl { get; set; } = "";
@@ -19,7 +18,8 @@ public async Task<bool> Insert()
1918
{
2019
if (!await DatabaseService.CheckIfUserExists(this))
2120
return await DatabaseService.InsertUser(this);
22-
return true;
21+
else
22+
return false;
2323
}
2424

2525
/// <summary>
@@ -28,28 +28,31 @@ public async Task<bool> Insert()
2828
/// <returns></returns>
2929
public async Task<bool> Delete()
3030
{
31-
return await DatabaseService.DeleteUser(this.ClientToken);
31+
return await DatabaseService.DeleteUser(ClientToken);
3232
}
3333

3434
/// <summary>
3535
/// Send the passed notification from the gotify instance that was passed via WebSocket
3636
/// </summary>
3737
/// <param name="iGotifyMessage"></param>
38-
public async Task SendNotifications(GotifyMessage iGotifyMessage, string clientToken)
38+
/// <param name="clientToken"></param>
39+
public async Task SendNotifications(GotifyMessage iGotifyMessage, WebsocketClient webSock)
3940
{
40-
string? title = iGotifyMessage.title;
41-
string? msg = iGotifyMessage.message;
42-
string imageUrl = "";
43-
44-
45-
Users usr = await DatabaseService.GetUser(clientToken);
41+
var title = iGotifyMessage.title;
42+
var msg = iGotifyMessage.message;
43+
44+
var protocol = webSock.Url.ToString().Contains("ws://") ? "http://" : "https://";
45+
var gotifyServerUrl = webSock.Url.ToString().Replace("ws://", "").Replace("wss://", "").Replace("\"", "").Split("/stream");
46+
var imageUrl = gotifyServerUrl.Length > 0 ? $"{protocol}{gotifyServerUrl[0]}$$${iGotifyMessage.appid}$$${webSock.Name}" : "";
47+
48+
var usr = await DatabaseService.GetUser(webSock.Name!);
4649

4750
if (usr.Uid == 0)
4851
{
4952
Console.WriteLine("THERE'S SOMETHING WRONG HERE? NO USER FOUND");
5053
}
5154

52-
SecNtfy ntfy = new SecNtfy(Environment.GetEnvironmentVariable("SECNTFY_SERVER_URL") ?? "https://api.secntfy.app");
55+
var ntfy = new SecNtfy(Environment.GetEnvironmentVariable("SECNTFY_SERVER_URL") ?? "https://api.secntfy.app");
5356
_ = ntfy.SendNotification(usr.DeviceToken, title, msg, iGotifyMessage.priority == 10, imageUrl, iGotifyMessage.priority);
5457
}
5558
}

Models/GotifyMessage.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ namespace iGotify_Notification_Assist.Models;
22

33
public class GotifyMessage
44
{
5-
public int appid { get; set; }
6-
public string? date { get; set; }
75
public int id { get; set; }
6+
public int appid { get; set; }
87
public string? message { get; set; }
8+
public string? title { get; set; }
99
public int priority { get; set; }
1010
public GotifyExtras? extras { get; set; }
11-
public string? title { get; set; }
11+
public string? date { get; set; }
1212
}
1313

1414
public class GotifyExtras

Models/ServerVersion.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ namespace iGotify_Notification_Assist.Models;
22

33
public class ServerVersion
44
{
5-
public string? version { get; set; }
6-
public string? commit { get; set; }
7-
public string? buildDate { get; set; }
5+
public string? version { get; set; } = "";
6+
public string? commit { get; set; } = "";
7+
public string? buildDate { get; set; } = "";
88
}

Models/Users.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ namespace iGotify_Notification_Assist.Models;
22

33
public class Users
44
{
5-
public int Uid { get; set; }
6-
public string ClientToken { get; set; } = "";
7-
public string DeviceToken { get; set; } = "";
8-
public string GotifyUrl { get; set; } = "";
5+
public int Uid { get; init; }
6+
public string ClientToken { get; init; } = "";
7+
public string DeviceToken { get; init; } = "";
8+
public string GotifyUrl { get; init; } = "";
99
}

Program.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
2-
using System.Net.WebSockets;
3-
using iGotify_Notification_Assist;
41
using iGotify_Notification_Assist.Services;
52
using Microsoft.OpenApi.Models;
63

README.md

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
[![Donate with PayPal](https://raw.githubusercontent.com/androidseb25/iGotify-Notification-Assistent/main/paypal-donate-icon-7_20.png)](https://www.paypal.com/donate/?hosted_button_id=VFSL9ZECRD6D6)
22
![Stars](https://img.shields.io/github/stars/androidseb25/iGotify-Notification-Assistent?style=flat&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAEsWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgdGlmZjpJbWFnZUxlbmd0aD0iNDgiCiAgIHRpZmY6SW1hZ2VXaWR0aD0iNDgiCiAgIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiCiAgIHRpZmY6WFJlc29sdXRpb249IjcyLzEiCiAgIHRpZmY6WVJlc29sdXRpb249IjcyLzEiCiAgIGV4aWY6UGl4ZWxYRGltZW5zaW9uPSI0OCIKICAgZXhpZjpQaXhlbFlEaW1lbnNpb249IjQ4IgogICBleGlmOkNvbG9yU3BhY2U9IjEiCiAgIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiCiAgIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIKICAgeG1wOk1vZGlmeURhdGU9IjIwMjMtMDQtMTlUMTc6NDE6MDIrMDI6MDAiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIwMjMtMDQtMTlUMTc6NDE6MDIrMDI6MDAiPgogICA8eG1wTU06SGlzdG9yeT4KICAgIDxyZGY6U2VxPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJwcm9kdWNlZCIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWZmaW5pdHkgUGhvdG8gMiAyLjAuNCIKICAgICAgc3RFdnQ6d2hlbj0iMjAyMy0wNC0xOVQxNzo0MTowMiswMjowMCIvPgogICAgPC9yZGY6U2VxPgogICA8L3htcE1NOkhpc3Rvcnk+CiAgPC9yZGY6RGVzY3JpcHRpb24+CiA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgo8P3hwYWNrZXQgZW5kPSJyIj8+0oDKYwAAAYFpQ0NQc1JHQiBJRUM2MTk2Ni0yLjEAACiRdZHfK4NRGMc/hiamKS5cuFgaV5tmanGjTEItaaYMN9u7X2o/3t53S8utcqsocePXBX8Bt8q1UkRKbrkmbliv591WW7Ln9Jznc77nPE/nPAcsobSS0Vs8kMnmteC037EUXnZYX2mhGzuDWCOKrk7MzwdoaF8PNJnxzm3WanzuX+uIxXUFmtqExxVVywvPCAfW86rJu8I9SioSEz4XdmlyQeF7U49W+M3kZIV/TNZCwUmwdAk7knUcrWMlpWWE5eU4M+mCUr2P+RJbPLu4ILFfvA+dINP4cTDLFJP4GGZMZh9uvAzJigb5nnL+HDnJVWRWKaKxRpIUeVyiFqR6XGJC9LiMNEWz/3/7qidGvJXqNj+0vhjGxwBYd6C0bRjfx4ZROoHmZ7jK1vJzRzD6Kfp2TXMegn0TLq5rWnQPLreg90mNaJGy1CxuSSTg/Qw6w9B9C+0rlZ5V9zl9hNCGfNUN7B/AoJy3r/4CMN5nzbh35xIAAAAJcEhZcwAACxMAAAsTAQCanBgAAAGYSURBVGiB7VjtjcMgDH2cbhx2KJ2syWSlO2Qf+sd3iji+7NhJT+JJVSKCsY39sCkwMTExMTFhhLRhSRvC1XaIQMYn+i1Wer6sFgZw270/rJSYOEBpE7KxxUKXVQTMdjyH016Qdv9Z+Xx3HlFTn0UEWrsftJVZRCA1FXpdnaoRGDnztcmsuhtpwxMDaaIZBbUIlI7OxtxFSy9rJ7IU2b/fwCNopOerMAbOSVV1gIx9MA3TRqTnWnPquyF8tfHI9MfShBYHXo1vZ6NqS5MDRLbT2oIKVufrpO+S+GInmsYDg6dQp7+xQtd4gHGMnuzEcNPHroij1VaI6DzuHAF2JSYFkSs3gJVrPCBsJUjRKpGtYCjfSzjSC8UDsmprWV7qOQhSwSMOXF3gABy4D/RuXmxDhHcEUQQ+6d+2T+GA+JIjdYCT/1GoYwiWEVidh2PUjFt/yl+IiNMhcLEojdzwJERmR6BD4GpFdf63z6m2IhIeSFIoFMZ+0qVrwM4RlVbkKAeGDc9BMnk0YmmuOtKGoFkLtNebmJj4R3gDsdt6T8W+vnEAAAAASUVORK5CYII=)
33
[![Crowdin](https://badges.crowdin.net/igotify/localized.svg)](https://crowdin.com/project/igotify)
4+
[![Qodana](https://github.com/androidseb25/iGotify-Notification-Assistent/actions/workflows/code_quality.yml/badge.svg?branch=main)](https://github.com/androidseb25/iGotify-Notification-Assistent/actions/workflows/code_quality.yml)
45

56
# iGotify
67

@@ -36,6 +37,20 @@ Download Link to iGotify down below
3637

3738
* `GOTIFY_DEFAULTUSER_PASS` = the user password for the defaultuser
3839

40+
### oOptional environment variables
41+
42+
* `GOTIFY_URLS` = the local gotify sever URL e.g.: `http://gotify`
43+
* `GOTIFY_CLIENT_TOKENS` = the client token from the Gotify Client e.g.: `cXXXXXXXX`
44+
* `SECNTFY_TOKENS` = the SecNtfy Token that you get from the app after configure it e.g.: `NTFY-DEVICE-XXXXXX`
45+
46+
#### All these configuration can be found after configure the app. It will display it for you
47+
#### Please note you can configure multiple instances of local gotify server by adding a semicolon `;` after each environment value e.g.:
48+
49+
* `GOTIFY_URLS: 'http://gotify;http://gotify2;http://gotify3;...'`
50+
* `GOTIFY_CLIENT_TOKENS: 'cXXXXXXXX1;cXXXXXXXX2;cXXXXXXXX3;...'`
51+
* `SECNTFY_TOKENS: 'NTFY-DEVICE-XXXXXX1;NTFY-DEVICE-XXXXXX2;NTFY-DEVICE-XXXXXX3;...'`
52+
53+
&nbsp;
3954

4055
```bash
4156
version: '3.8'
@@ -57,7 +72,6 @@ services:
5772
volumes:
5873
- data:/app/data
5974
environment:
60-
TZ: 'Europe/Berlin'
6175
GOTIFY_DEFAULTUSER_PASS: 'my-very-strong-password' # Change me!!!!!
6276

6377
igotify:
@@ -74,6 +88,10 @@ services:
7488
- "8681:8080"
7589
volumes:
7690
- api-data:/app/data
91+
#environment: # option environment see above note
92+
# GOTIFY_URLS: ''
93+
# GOTIFY_CLIENT_TOKENS: ''
94+
# SECNTFY_TOKENS: ''
7795

7896
networks:
7997
net:
@@ -119,7 +137,6 @@ services:
119137
volumes:
120138
- data:/app/data
121139
environment:
122-
TZ: 'Europe/Berlin'
123140
GOTIFY_DEFAULTUSER_PASS: 'my-very-strong-password' # Change me!!!!!
124141
GOTIFY_REGISTRATION: 'false'
125142
labels:
@@ -150,6 +167,12 @@ services:
150167
pull_policy: always
151168
volumes:
152169
- api-data:/app/data
170+
171+
#environment: # option environment see above note
172+
# GOTIFY_URLS: ''
173+
# GOTIFY_CLIENT_TOKENS: ''
174+
# SECNTFY_TOKENS: ''
175+
153176
labels:
154177
traefik.docker.network: proxy
155178
traefik.enable: "true"

0 commit comments

Comments
 (0)