wildduck/lib/certs.js

45 lines
893 B
JavaScript
Raw Normal View History

2017-07-16 19:37:33 +08:00
'use strict';
const config = require('wild-config');
const fs = require('fs');
const certs = new Map();
// load certificate files
2017-07-17 21:32:31 +08:00
[false, 'imap', 'lmtp', 'pop3', 'api'].forEach(type => {
2017-07-16 19:37:33 +08:00
let tlsconf = type ? config[type] && config[type].tls : config.tls;
if (!tlsconf) {
return;
}
let key, cert, ca;
if (tlsconf.key) {
key = fs.readFileSync(tlsconf.key, 'ascii');
}
if (!key) {
return;
}
if (tlsconf.cert) {
cert = fs.readFileSync(tlsconf.cert, 'ascii');
}
if (tlsconf.ca) {
ca = [].concat(tlsconf.ca || []).map(ca => fs.readFileSync(ca, 'ascii'));
if (!ca.length) {
ca = false;
}
}
certs.set(type || 'default', {
key,
cert,
ca
});
});
module.exports.get = type => (certs.has(type) ? certs.get(type) : certs.get('default')) || false;