titbit-toolkit
Version:
titbit框架的工具集,包括跨域、静态资源处理,权限过滤,请求计时,cookie,session,jwt等大量中间件
49 lines (37 loc) • 933 B
JavaScript
;
const fs = require('node:fs')
const tls = require('node:tls')
class SNI {
constructor(certs = {}) {
this.certs = {}
if (typeof certs !== 'object') {
throw new Error('必须传递key-value形式的配置,key是域名,value是证书路径')
}
let t = '';
for (let h in certs) {
t = certs[h]
if (t.key === undefined || t.cert === undefined) {
console.error(`${h} 没有设置key和cert`)
continue
}
try {
this.certs[h] = {
key : fs.readFileSync(t.key),
cert : fs.readFileSync(t.cert)
}
} catch (err) {
console.error(h, err.message)
continue
}
}
}
callback() {
return (servername, cb) => {
return cb(null, tls.createSecureContext(this.certs[servername]))
}
}
init(app) {
app.config.server.SNICallback = this.callback()
}
}
module.exports = SNI