把多个 ssl* 选项改为一个 ssl 对象

This commit is contained in:
陆柯 2020-05-05 09:53:00 +08:00
parent 9e2acb9043
commit 5834a4167b
2 changed files with 32 additions and 8 deletions

View File

@ -15,6 +15,7 @@
"greenlock-express": "^4.0.3",
"method-override": "^2.3.10",
"morgan": "^1.9.0",
"multer": "^1.4.2",
"serve-favicon": "^2.4.5",
"so.base": "git+https://git.faronear.org/so/so.base",
"vhost": "^3.0.2"

View File

@ -1,7 +1,7 @@
const fs = require('fs')
const path = require('path')
var Config = require('so.base/Config.js')
const Config = require('so.base/Config.js')
if (!Config || Object.keys(Config).length===0) {
Config = { // 默认配置,如果用户什么也没有提供
protocol: 'http',
@ -15,13 +15,16 @@ if (!Config || Object.keys(Config).length===0) {
*/
}
}
if (typeof(Config.ssl)==='string') {
Config.ssl = eval(`(${Config.ssl})`)
}
(function serve(){
console.log('★★★★★★★★ Starting Server ★★★★★★★★')
const express = require('express')
const server = express()
const webToken = require('so.base/Webtoken')
const greenlock = Config.sslType==='greenlock'
? require('greenlock-express').create(Object.assign(Config.ssl.greenlockOptions, {app: server}))
: null
@ -32,6 +35,24 @@ if (!Config || Object.keys(Config).length===0) {
server.use(require('body-parser').urlencoded({ extended: false }))
server.use(require('cookie-parser')())
server.use(require('compression')())
const Multer=require('multer')
server.use(Multer({
//dest:'./File/', // 这样,不能自定义文件名。
storage:Multer.diskStorage({
destination: function (req, file, cb) { // 如果直接提供字符串Multer会负责创建该目录。如果提供函数你要负责确保该目录存在。
let folder = './upload/' // 目录是相对于本应用的入口js的即相对于 server.js 的位置。
cb(null, folder)
},
filename: function (req, file, cb) { // 注意req.body 也许还没有信息因为这取决于客户端发送body和file的顺序。
let ext = file.originalname.replace(/^.*\.(\w+)$/,'$1')
let _passtokenSource = webToken.verifyToken(req.headers._passtoken, Config.tokenKey) || {}
let filename = `${req.path.replace(/^\/api\d*/, '')}_${_passtokenSource.uuid}_${Date.now()}.${ext}`
cb(null, filename)
}
}),
//fileFilter:function(req, file, cb) {},
limits:{fileSize:10485760}
}).single('file'))
/*** 路由 ***/
// vhost 匹配了域名就执行不匹配就next()
@ -66,9 +87,9 @@ if (!Config || Object.keys(Config).length===0) {
})
} else if ('https' === Config.protocol) {
webServer = require('https').createServer(Config.sslType === 'greenlock' ? greenlock.httpsOptions : {
key: fs.readFileSync(Config.sslKey),
cert: fs.readFileSync(Config.sslCert),
// ca: [ fs.readFileSync(Config.sslCA) ] // only for self-signed certificate: https://nodejs.org/api/tls.html#tls_tls_createserver_options_secureconnectionlistener
key: fs.readFileSync(Config.ssl.file.key),
cert: fs.readFileSync(Config.ssl.file.cert),
// ca: [ fs.readFileSync(Config.ssl.file.ca) ] // only for self-signed certificate: https://nodejs.org/api/tls.html#tls_tls_createserver_options_secureconnectionlistener
}, server).listen(portHttps, function (err) {
if (err) console.log(err)
else console.log(`[${new Date().toJSON()}] Server listening on ${Config.protocol}://${Config.host}:${portHttps} with IPv4=${ipv4} for ${server.settings.env} environment`)
@ -88,9 +109,9 @@ if (!Config || Object.keys(Config).length===0) {
else console.log(`[${new Date().toJSON()}] Server redirecting from [${Config.protocol}] http://${Config.host}:${portHttp} with IPv4=${ipv4} for ${server.settings.env} environment`)
})
webServer = require('https').createServer({
key: fs.readFileSync(Config.sslKey),
cert: fs.readFileSync(Config.sslCert),
// ca: [ fs.readFileSync(Config.sslCA) ] // only for self-signed certificate: https://nodejs.org/api/tls.html#tls_tls_createserver_options_secureconnectionlistener
key: fs.readFileSync(Config.ssl.file.key),
cert: fs.readFileSync(Config.ssl.file.cert),
// ca: [ fs.readFileSync(Config.ssl.file.ca) ] // only for self-signed certificate: https://nodejs.org/api/tls.html#tls_tls_createserver_options_secureconnectionlistener
}, server).listen(portHttps, function (err) {
if (err) console.log(err)
else console.log(`[${new Date().toJSON()}] Server listening on [${Config.protocol}] https://${Config.host}:${portHttps} with IPv4=${ipv4} for ${server.settings.env} environment`)
@ -105,6 +126,8 @@ if (!Config || Object.keys(Config).length===0) {
})
}
return webServer
})()
// ====================