diff --git a/README.md b/README.md index f506571..dcc0de4 100644 --- a/README.md +++ b/README.md @@ -14,14 +14,18 @@ ## 配置 +* 设置 ssl 证书 + ``` + certbot certonly -d server.fiv.tacever.org + ``` +* mongodb 设置数据库账号 * mongodb 配置文件已集成到 ```fiv.server/mongod.conf``` 中 - * 还需要哪些信息?例如 mongodb 的管理账号和密码? * bindIp: 127.0.0.1 (生产环境) * bindIpAll: true (开发环境) * 编写 ```/fiv.server/configSec.js```,设置HD钱包的根密钥等等 * protocol: https (生产环境) * protocol: http (开发环境) - * port: 6842 (不要用 80/443,因为这要留给) + * port: 6842 (不要用 80/443,因为这要留给certbot) ## 运行 diff --git a/config.js b/config.js index 7c41400..ede9c16 100644 --- a/config.js +++ b/config.js @@ -1,6 +1,6 @@ module.exports = { port: 80, - protocol: 'httpall', - host: 'localhost', - sslType: 'file' -}; \ No newline at end of file + protocol: 'http', // by default http for development. Please change to https in configSec.js for production. + host: 'server.fiv.tacever.org', +// sslType: 'file' +} diff --git a/src/server.js b/src/server.js index 669932f..67e6e7f 100644 --- a/src/server.js +++ b/src/server.js @@ -16,29 +16,16 @@ const inject = require('./common/Provider').inject; module.exports = () => inject(function runServer (SysConfig) { // 配置并启动 Web 服务 mylog.info('★★★★★★★★ Starting Server ★★★★★★★★'); - const greenlock = SysConfig && SysConfig.sslType==='greenlock' ? require('greenlock-express').create({ - version: 'draft-11', - server: SysConfig.netType==='devnet' // for test: acme-staging-v02 - ? 'https://acme-staging-v02.api.letsencrypt.org/directory' - : 'https://acme-v02.api.letsencrypt.org/directory', - agreeTos: true, - communityMember: false, - store: require('greenlock-store-fs'), - email: 'ssl@faronear.org', - approvedDomains: SysConfig.sslDomainList, - configDir: path.resolve(__dirname, 'ssl'), - app, - }) : null; - /** * 启动 Web 服务 ***/ let webServer; + SysConfig.port = parseInt(SysConfig.port) || (SysConfig.protocol === 'http' ? 80 : SysConfig.protocol === 'https' ? 443 : undefined) // 端口默认为 http:80, https:443, httpall: 80|443 if (SysConfig.protocol === 'http') { webServer = require('http').createServer(app).listen(SysConfig.port, function (err) { if (err) mylog.info(err); else mylog.info(`Server listening on ${SysConfig.protocol}://${SysConfig.host}:${SysConfig.port} with for ${app.settings.env} environment`); }); } else if (SysConfig.protocol === 'https') { - webServer = require('https').createServer(SysConfig.sslType === 'greenlock' ? greenlock.httpsOptions : { + webServer = require('https').createServer({ key: fs.readFileSync(SysConfig.sslKey), cert: fs.readFileSync(SysConfig.sslCert), }, app).listen(SysConfig.port, function (err) { @@ -47,25 +34,23 @@ module.exports = () => inject(function runServer (SysConfig) { // 配置并启 }); } else if ('httpall' === SysConfig.protocol) { let portHttp = SysConfig.port ? SysConfig.port : 80; - // let portHttps = (SysConfig.port && SysConfig.port !== 80) ? SysConfig.port + 443 : 443 - let portHttps = 443; - if (SysConfig.sslType === 'greenlock') { - webServer = greenlock.listen(portHttp, portHttps, function (err) { - if (err) console.log(err); - else console.log(`Server listening on [${SysConfig.protocol}] http=>https://${SysConfig.host}:${portHttp}=>${portHttps} for ${app.settings.env} environment`); - }); - } else { - webServer = require('https').createServer({ - key: fs.readFileSync(SysConfig.sslKey), - cert: fs.readFileSync(SysConfig.sslCert), - // ca: [ fs.readFileSync(SysConfig.sslCA) ] // only for self-signed certificate: https://nodejs.org/api/tls.html#tls_tls_createserver_options_secureconnectionlistener - }, app).listen(portHttps, function (err) { - if (err) console.log(err); - else console.log(`Server listening on [${SysConfig.protocol}] https://${SysConfig.host}:${portHttps} for ${app.settings.env} environment`); - }); - } + let portHttps = (SysConfig.port && SysConfig.port !== 80) ? SysConfig.port + 443 : 443 + require('http').createServer(server.all('*', function (ask, reply) { + reply.redirect(`https://${SysConfig.host}:${portHttps}`) + })).listen(portHttp, function(err) { + if (err) console.log(err) + else console.log(`Server listening on [${wo.Config.protocol}] http://${SysConfig.host}:${portHttp} for ${app.settings.env} environment`) + }) + webServer = require('https').createServer({ + key: fs.readFileSync(SysConfig.sslKey), + cert: fs.readFileSync(SysConfig.sslCert), + // ca: [ fs.readFileSync(SysConfig.sslCA) ] // only for self-signed certificate: https://nodejs.org/api/tls.html#tls_tls_createserver_options_secureconnectionlistener + }, app).listen(portHttps, function (err) { + if (err) console.log(err); + else console.log(`Server listening on [${SysConfig.protocol}] https://${SysConfig.host}:${portHttps} for ${app.settings.env} environment`); + }); } - + // const socket = Socket(webServer); return webServer; });