-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
50 lines (43 loc) · 1.16 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
'use strict';
var generate = require('le-tls-sni').generate;
module.exports.create = function (defaults) {
var challenges = {};
var handlers = {
getOptions: function () {
return defaults;
}
, set: function (args, domain, token, secret, cb) {
if (!args.sni || !args.sni.cacheCerts || !args.sni.uncacheCerts) {
cb(new Error("incompatible SNI handler"));
}
generate(args, domain, token, secret, function (err, certs) {
if (err) {
cb(err);
return;
}
certs.auto = false;
args.sni.cacheCerts(certs);
challenges[token] = {
subject: certs.subject
, altnames: certs.altnames
, sni: args.sni
};
cb(null);
});
}
, get: function (args, domain, token, cb) {
throw new Error("Challenge.get() has no implementation for standalone/express.");
}
, remove: function (args, domain, token, cb) {
var certs = challenges[token];
if (certs) {
delete challenges[token];
var sni = certs.sni;
delete certs.sni;
sni.uncacheCerts(certs);
}
cb(null);
}
};
return handlers;
};