Work around pywebpush issue #130 by copying claims before passing

This commit is contained in:
Oskar Winkels 2021-11-03 12:35:33 +01:00
parent e043f475da
commit 3cfe42023b
Signed by: o.winkels
GPG Key ID: E7484A06E99DAEF1
2 changed files with 13 additions and 8 deletions

View File

@ -1,4 +1,5 @@
import json import json
import copy
from slugify import slugify from slugify import slugify
from threading import Thread, Event from threading import Thread, Event
from datetime import datetime, timedelta from datetime import datetime, timedelta
@ -33,7 +34,7 @@ class Notifier(Thread):
ps = ps[0] ps = ps[0]
print("Sending notification", arrival, ps) print("Sending notification", arrival, ps, self.vapid_creds)
subscription = ps['sub'] subscription = ps['sub']
notification = { notification = {
@ -41,13 +42,15 @@ class Notifier(Thread):
'body': "You didn't sign out of ftracker yet", 'body': "You didn't sign out of ftracker yet",
'arr': arrival 'arr': arrival
} }
privkey = self.vapid_creds['private_key']
claims = copy.copy(self.vapid_creds['claims'])
try: try:
webpush( webpush(
subscription, subscription,
json.dumps(notification), json.dumps(notification),
vapid_private_key = self.vapid_creds['private_key'], vapid_private_key = privkey,
vapid_claims = self.vapid_creds['claims'] vapid_claims = claims
) )
print("Notification sent") print("Notification sent")
return None return None

View File

@ -268,16 +268,18 @@ function registerPush(name, pushServerPublicKey) {
}).then(function(subscription) { }).then(function(subscription) {
console.log("User is subscribed:", subscription); console.log("User is subscribed:", subscription);
var jsonSub = JSON.stringify({
name: name,
sub: subscription
});
fetch('/pushsubscribe', { fetch('/pushsubscribe', {
method: "POST", method: "POST",
headers: {"Content-Type": "application/json"}, headers: {"Content-Type": "application/json"},
body: JSON.stringify({ body: jsonSub
name: name,
sub: subscription
})
}).then(function(res) { }).then(function(res) {
if (res.ok) if (res.ok)
localStorage.setItem('pushsub', subscription); localStorage.setItem('pushsub', jsonSub);
}); });
}); });
}); });