1
1
#! /usr/bin/env node
2
+ const fs = require ( 'fs' ) ;
2
3
const webPush = require ( 'web-push' ) ;
3
4
webPush . setGCMAPIKey ( process . env . GCM_API_KEY ) ;
4
5
5
6
const argv = require ( 'minimist' ) ( process . argv . slice ( 2 ) ) ;
6
7
7
- const usage = 'Use: web-push --endpoint=<url> --key=<browser key> [--auth=<auth secret>] [--ttl=<seconds>] [--payload=<message>] [--vapid]' ;
8
+ const usage = 'Use: web-push --endpoint=<url> --key=<browser key> [--auth=<auth secret>] [--ttl=<seconds>] [--payload=<message>] [--vapid-audience] [--vapid-subject] [--vapid-pvtkey] [--vapid-pubkey ]' ;
8
9
9
10
if ( ! argv [ 'endpoint' ] || ! argv [ 'key' ] ) {
10
11
console . log ( usage ) ;
@@ -16,18 +17,37 @@ const key = argv['key'];
16
17
const ttl = argv [ 'ttl' ] || 0 ;
17
18
const payload = argv [ 'payload' ] || '' ;
18
19
const auth = argv [ 'auth' ] || null ;
19
- const useVAPID = argv [ 'vapid' ] || false ;
20
+ const vapidAudience = argv [ 'vapid-audience' ] || null ;
21
+ const vapidSubject = argv [ 'vapid-subject' ] || null ;
22
+ const vapidPubKey = argv [ 'vapid-pubkey' ] || null ;
23
+ const vapidPvtKey = argv [ 'vapid-pvtkey' ] || null ;
24
+
25
+ function getKeys ( ) {
26
+ if ( vapidPubKey && vapidPvtKey ) {
27
+ const publicKey = fs . readFileSync ( argv [ 'vapid-pubkey' ] ) ;
28
+ const privateKey = fs . readFileSync ( argv [ 'vapid-pvtkey' ] ) ;
29
+
30
+ if ( pubKey && pvtKey ) {
31
+ return {
32
+ privateKey,
33
+ publicKey
34
+ } ;
35
+ }
36
+ }
37
+
38
+ return webPush . generateVAPIDKeys ( ) ;
39
+ }
20
40
21
41
var params = {
22
42
TTL : ttl ,
23
43
payload,
24
44
userPublicKey : key
25
45
} ;
26
- if ( useVAPID ) {
27
- const vapidKeys = webPush . generateVAPIDKeys ( ) ;
46
+ if ( vapidAudience && vapidSubject ) {
47
+ const vapidKeys = getKeys ( ) ;
28
48
const vapid = {
29
- audience : 'https://www.mozilla.org/' ,
30
- subject :
' mailto:[email protected] ',
49
+ audience : vapidAudience ,
50
+ subject : ` mailto:${ vapidSubject } ` ,
31
51
privateKey : vapidKeys . privateKey ,
32
52
publicKey : vapidKeys . publicKey ,
33
53
} ;
0 commit comments