diff --git a/db/patch-monitor-push_token.sql b/db/patch-monitor-push_token.sql index 8c2e7a4..cdebb67 100644 --- a/db/patch-monitor-push_token.sql +++ b/db/patch-monitor-push_token.sql @@ -2,6 +2,6 @@ BEGIN TRANSACTION; ALTER TABLE monitor - ADD push_token VARCHAR(20) DEFAULT NULL; + ADD push_token VARCHAR(32) DEFAULT NULL; COMMIT; diff --git a/src/languages/de-DE.js b/src/languages/de-DE.js index e6b7710..c7118b2 100644 --- a/src/languages/de-DE.js +++ b/src/languages/de-DE.js @@ -304,4 +304,5 @@ export default { "One record": "Ein Eintrag", steamApiKeyDescription: "Um einen Steam Game Server zu überwachen, wird ein Steam Web-API-Schlüssel benötigt. Dieser kann hier registriert werden: ", "Current User": "Aktueller Benutzer", + "Reset Token": "Token zurücksetzen", }; diff --git a/src/languages/en.js b/src/languages/en.js index 15c3cd0..435604f 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -307,4 +307,5 @@ export default { steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", "Current User": "Current User", recent: "Recent", + "Reset Token": "Reset Token", }; diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 65c3dad..38cc108 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -55,6 +55,9 @@ {{ $t("needPushEvery", [monitor.interval]) }}
{{ $t("pushOptionalParams", ["msg, ping"]) }} + @@ -287,6 +290,8 @@ import { genSecret, isDev } from "../util.ts"; const toast = useToast(); +const pushTokenLength = 32; + export default { components: { CopyableInput, @@ -370,7 +375,9 @@ export default { "monitor.type"() { if (this.monitor.type === "push") { if (! this.monitor.pushToken) { - this.monitor.pushToken = genSecret(10); + // ideally this would require checking if the generated token is already used + // it's very unlikely to get a collision though (62^32 ~ 2.27265788 * 10^57 unique tokens) + this.monitor.pushToken = genSecret(pushTokenLength); } } } @@ -470,6 +477,10 @@ export default { return true; }, + resetToken() { + this.monitor.pushToken = genSecret(pushTokenLength); + }, + async submit() { this.processing = true;