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;