Add support for running in ssl mode
Also added helpful argument to print current config and exit
This commit is contained in:
parent
f8b0dbc943
commit
33af1798b3
6 changed files with 77 additions and 8 deletions
10
bin.mjs
10
bin.mjs
|
@ -12,6 +12,11 @@ if (!config.get('file') && !config.get(env + ':file') &&
|
||||||
displayHelp = true;
|
displayHelp = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (config.get('config')) {
|
||||||
|
console.log(config.get())
|
||||||
|
process.exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
if (displayHelp) {
|
if (displayHelp) {
|
||||||
console.log(`Run static server for static files, simple servers or pure MVVM projects.
|
console.log(`Run static server for static files, simple servers or pure MVVM projects.
|
||||||
Specifying either file or folder serving is required.
|
Specifying either file or folder serving is required.
|
||||||
|
@ -37,6 +42,11 @@ Options:
|
||||||
--ip IP server runs on [default: 0.0.0.0]
|
--ip IP server runs on [default: 0.0.0.0]
|
||||||
--rooturlpath Root URL path server is deployed on; will be removed from
|
--rooturlpath Root URL path server is deployed on; will be removed from
|
||||||
URL when resolving to files [default: /]
|
URL when resolving to files [default: /]
|
||||||
|
--ssl Specify whether to serve in ssl mode. Uses the path of
|
||||||
|
--sslkey and --sslcert.
|
||||||
|
--sslkey The path to the ssl key for ssl mode [default: key.pem]
|
||||||
|
--sslcert The path to the ssl certificate for ssl mode [default:
|
||||||
|
cert.pem]
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
spserver -p 2000 -f base.html -s ./dist
|
spserver -p 2000 -f base.html -s ./dist
|
||||||
|
|
19
cert.pem
Normal file
19
cert.pem
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDFzCCAf8CFAVgLggEDpAeBShzYOqTu8/OA+LHMA0GCSqGSIb3DQEBCwUAMEgx
|
||||||
|
CzAJBgNVBAYTAlVTMRMwEQYDVQQIDApTb21lLVN0YXRlMREwDwYDVQQKDAhzcHNl
|
||||||
|
cnZlcjERMA8GA1UEAwwIc3BzZXJ2ZXIwHhcNMjExMDE0MDk0MDA2WhcNNDkwMjI4
|
||||||
|
MDk0MDA2WjBIMQswCQYDVQQGEwJVUzETMBEGA1UECAwKU29tZS1TdGF0ZTERMA8G
|
||||||
|
A1UECgwIc3BzZXJ2ZXIxETAPBgNVBAMMCHNwc2VydmVyMIIBIjANBgkqhkiG9w0B
|
||||||
|
AQEFAAOCAQ8AMIIBCgKCAQEAq7r5IgsLAEBg4cxJSHkKk+FXTyXHWwt3XBKheGOo
|
||||||
|
+lcIczjHZs3LCLl+khh1yn6m0PkP0SOYU86xhUQ15k7W6lJEoIiG+Mea8xAyLbrr
|
||||||
|
iyd86z01JLm97OW6oEzCFqQENYAyC0ipzB8UWGMSISA9ilskCe/GucSe/T6VLxtP
|
||||||
|
A2y+Yv/WRyS3UtV4vcuYrdI9tZT31fBVKmBEG6YDCFuGs99f14S/iJGX1jelMvJ9
|
||||||
|
/hqdR2VuLbEgJPPCeCoKnmeAB+15vwuYoAOYWxz2KzPb/+bAQ6v+rm1oc6VPTWiL
|
||||||
|
hiOA8LcCg6GIWxWAZ/mnusOl/8elKNOz/nDj+dkolTCFlQIDAQABMA0GCSqGSIb3
|
||||||
|
DQEBCwUAA4IBAQAxujrHMjXloHtv5kRpX/k/8a/2JkvScaw7s9qNh0KBIUaAQuPD
|
||||||
|
y0tqnoPOwRqFI6vS1VLU32gqxHDJecpk+amgO7/++TC5zN6b1HDAVl6cA1Gn7ERR
|
||||||
|
AvkIoiRuvQTPG80w2jA5Pnv/Uj1ERqjqwtZ7J+6EnWTinDByvbgzUdnGTdICFSZI
|
||||||
|
gA1/1mka/vErcNoRAYOR9OrotQ0LFs6pyQ7oSB1Rt8WcZlibYRY7gLTslLmI+huR
|
||||||
|
BddQD7lVE7F8XzY08joLNBP2++haUorB1zJAKlmCib5d0pmPHL1mnvqNxhZ8O0cy
|
||||||
|
WaJ5UxNkzqzXdzu5r/fwCj2T9qLq0Ng1Jho4
|
||||||
|
-----END CERTIFICATE-----
|
27
key.pem
Normal file
27
key.pem
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIIEpAIBAAKCAQEAq7r5IgsLAEBg4cxJSHkKk+FXTyXHWwt3XBKheGOo+lcIczjH
|
||||||
|
Zs3LCLl+khh1yn6m0PkP0SOYU86xhUQ15k7W6lJEoIiG+Mea8xAyLbrriyd86z01
|
||||||
|
JLm97OW6oEzCFqQENYAyC0ipzB8UWGMSISA9ilskCe/GucSe/T6VLxtPA2y+Yv/W
|
||||||
|
RyS3UtV4vcuYrdI9tZT31fBVKmBEG6YDCFuGs99f14S/iJGX1jelMvJ9/hqdR2Vu
|
||||||
|
LbEgJPPCeCoKnmeAB+15vwuYoAOYWxz2KzPb/+bAQ6v+rm1oc6VPTWiLhiOA8LcC
|
||||||
|
g6GIWxWAZ/mnusOl/8elKNOz/nDj+dkolTCFlQIDAQABAoIBAFDZ44dymYhRxwsn
|
||||||
|
yezUB/XdpuR9jeFAgb6YiusKSLksFq9gsQimpQuDgaK432QpwtIqIJc/Ye07J/rt
|
||||||
|
RU8cGTUS7HqELL+eAkajfmxnT5QhUD/Uflu/EzsgYYAtA0fzioPByk3jtQWEMGj4
|
||||||
|
o8Vyz2Z/SHVhLTey6YOjXktiWQ3r9ABD6IiJYP1txz+XwmAuS/t3+HpBjT5MxZC6
|
||||||
|
dImSBEmqGI5p40ZXW0j5ybvbQqDQ/1f1HGvIcH5gKE2EHYaJ1HvQYIgw+DGNMEmX
|
||||||
|
KYVp0SUlY6rMB1fE/BYmAwwV9pcYzsDwArLA9Ilb26CpFhqZrgxOfvakgbQiM5KI
|
||||||
|
YGlXj9UCgYEA3B/4ZTHcIHOjPTvauUBUah2JTxO6+SWq6UjtvU0vpJsdErI2pCBN
|
||||||
|
Ymg/TEDPp6mf1doxnYG43HF0s1Y8Cc9RzWPu9KC2Z/q4jqoxAb2TerAMmyiwaXYD
|
||||||
|
Zt1rY37AvQVWyz0ka2xguSSr/hZwhIW3vnPVkpiBeIs6NVbtDiH7hiMCgYEAx7fk
|
||||||
|
KkQBBCKNWfQ68o+PqdiUOeb4vQSzMt6Zy7eVI3Qt1dUctcbpc8teDYv8K3ask1S0
|
||||||
|
za+OIOn1u2DZhrCsfChyV2ojG15AiyyGV5IyQEhKC+GhBXhuFuZ/Z+LbuQ4iMZWM
|
||||||
|
Vl5vVfv9l3zhhIx48eSZ+V1w3qTrw4v3Gv3dVOcCgYEAizcM+bMW7M81pjx8kDzH
|
||||||
|
JnWXqZNo5LmV5gRhlx+ByjDvqitbs2Faj6ouniM/MWJt2+orBtpL998pV2JqhinA
|
||||||
|
Ko3RSpV5xzkiD9hDNj6XTziYQGjzaT9h12ShzkMT0nfV9KOurOHWKkGvJPs8HhQT
|
||||||
|
qTfJEvWwrHQhVCqtsgp78NECgYA6WtvbEaWuXJ4qk3cJ2rKicPrWdEtnh1EI4wvS
|
||||||
|
/2AfTNn7qdpKrsUVpW1kzesvk+xW3CA8HTiNG29GgcTtWv/7AyJtskBxxbdcMvVJ
|
||||||
|
7xipubWRBSs0Wvznyg+d/iYvSxbooAayUcN8PzXYpo+KWDUakK4As7HADDYrG+Fm
|
||||||
|
zJh4LwKBgQCEZVroxl14cVBEAtY7rWP1OaLvvDXJNhWMtdX1BawHXAFOigQJB2N4
|
||||||
|
0HA6dOJ0SBmPF8WlJUYM2aRy050T+Qiu9fIl1vlNKW0zOBj+lPQo7T4JTu/WPpbr
|
||||||
|
ZKVf12+b/RbV1ch3mb4KxkX80ASIfVaMRGQHAAgDpCM8fMVmm4NjdQ==
|
||||||
|
-----END RSA PRIVATE KEY-----
|
|
@ -40,6 +40,8 @@ nconf.defaults({
|
||||||
level: 'info',
|
level: 'info',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
sslkey: 'key.pem',
|
||||||
|
sslcert: 'cert.pem',
|
||||||
development: {
|
development: {
|
||||||
port: 3001,
|
port: 3001,
|
||||||
bunyan: {
|
bunyan: {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import fs from 'fs'
|
import fs from 'fs'
|
||||||
import http from 'http'
|
import http from 'http'
|
||||||
|
import https from 'https'
|
||||||
import path from 'path'
|
import path from 'path'
|
||||||
import url from 'url'
|
import url from 'url'
|
||||||
import _ from 'lodash'
|
import _ from 'lodash'
|
||||||
|
@ -71,7 +72,7 @@ class SPServer {
|
||||||
|
|
||||||
var base = SPServer.generateBase(finalSettings.file ? path.resolve(finalSettings.file) : null, finalSettings);
|
var base = SPServer.generateBase(finalSettings.file ? path.resolve(finalSettings.file) : null, finalSettings);
|
||||||
|
|
||||||
var server = http.createServer(function (req, res) {
|
let requestHandler = function (req, res) {
|
||||||
var startTime = new Date().getTime();
|
var startTime = new Date().getTime();
|
||||||
|
|
||||||
var isFinished = false
|
var isFinished = false
|
||||||
|
@ -106,15 +107,25 @@ class SPServer {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}).resume();
|
}).resume();
|
||||||
});
|
}
|
||||||
|
|
||||||
|
var server
|
||||||
|
if (config.get('ssl')) {
|
||||||
|
server = https.createServer({
|
||||||
|
key: fs.readFileSync(config.get('sslkey')),
|
||||||
|
cert: fs.readFileSync(config.get('sslcert'))
|
||||||
|
}, requestHandler)
|
||||||
|
} else {
|
||||||
|
server = http.createServer(requestHandler)
|
||||||
|
}
|
||||||
|
|
||||||
server.listen(finalSettings.port, finalSettings.ip);
|
server.listen(finalSettings.port, finalSettings.ip);
|
||||||
|
|
||||||
logger.info(
|
logger.info('Started single-page server: ' + finalSettings.name
|
||||||
'Started single-page server: ' + finalSettings.name +
|
+ ', base file: ' + (finalSettings.file || '<none>')
|
||||||
', base file: ' + (finalSettings.file || '<none>') +
|
+ ', static folder: ' + finalSettings.serve
|
||||||
', static folder: ' + finalSettings.serve +
|
+ ', port: ' + finalSettings.port
|
||||||
', port: ' + finalSettings.port
|
+ (config.get('ssl') ? ' [SSL]' : '')
|
||||||
);
|
);
|
||||||
|
|
||||||
this.server = server
|
this.server = server
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"bunyan-lite": "^1.1.1",
|
"bunyan-lite": "^1.1.1",
|
||||||
"lodash": "^4.17.2",
|
"lodash": "^4.17.2",
|
||||||
"nconf-lite": "^2.0.0",
|
"nconf-lite": "^2.1.0",
|
||||||
"node-static": "^0.7.6"
|
"node-static": "^0.7.6"
|
||||||
},
|
},
|
||||||
"bin": "./bin.mjs",
|
"bin": "./bin.mjs",
|
||||||
|
|
Loading…
Reference in a new issue