61 lines
1.2 KiB
JavaScript
61 lines
1.2 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
// tradeoff - lazy load certs vs DOS invalid sni
|
||
|
|
||
|
var Manager = module.exports;
|
||
|
|
||
|
var Cache = {};
|
||
|
|
||
|
Manager.create = function(conf) {
|
||
|
var domains = conf.domains;
|
||
|
var manager = {};
|
||
|
|
||
|
// { servername, wildname }
|
||
|
manager.getSubject = function(opts) {
|
||
|
if (
|
||
|
!opts.domains.includes(opts.domain) &&
|
||
|
!opts.domains.includes(opts.wildname)
|
||
|
) {
|
||
|
throw new Error('not a registered domain');
|
||
|
}
|
||
|
return opts.domains[0];
|
||
|
};
|
||
|
|
||
|
manager.add = function() {};
|
||
|
|
||
|
// { servername, wildname }
|
||
|
manager.configure = function(opts) {};
|
||
|
|
||
|
// { servername }
|
||
|
manager._contexts = {};
|
||
|
};
|
||
|
|
||
|
var manager = Manager.create({
|
||
|
domains: ['example.com', '*.example.com']
|
||
|
});
|
||
|
|
||
|
Cache.getTlsContext = function(servername) {
|
||
|
// TODO exponential fallback certificate renewal
|
||
|
if (Cache._contexts[servername]) {
|
||
|
// may be a context, or a promise for a context
|
||
|
return Cache._contexts[servername];
|
||
|
}
|
||
|
|
||
|
var wildname =
|
||
|
'*.' +
|
||
|
(servername || '')
|
||
|
.split('.')
|
||
|
.slice(1)
|
||
|
.join('.');
|
||
|
|
||
|
var opts = {
|
||
|
servername: servername,
|
||
|
domain: servername,
|
||
|
wildname: wildname
|
||
|
};
|
||
|
manager._contexts[servername] = manager
|
||
|
.orderCertificate(opts)
|
||
|
.then(function() {})
|
||
|
.catch(function(e) {});
|
||
|
};
|