diff --git a/index.js b/index.js index e5fd98d1504381d65c3e4f6a37430894fcc175ed..5a346865e6a0aea6faf4875f334b3578b23944b6 100644 --- a/index.js +++ b/index.js @@ -23,8 +23,10 @@ var bodyParser = require('body-parser'); var BigNumber = require('bignumber.js'); var fs = require('fs'); var http = require('http'); +var https = require('https'); var Web3 = require('web3'); var web3 = new Web3(); +var argv = require('minimist')(process.argv.slice(2)); Object.getPrototypeOf(web3.eth).awaitConsensus = function(txhash, mined_cb) { var ethP = this; @@ -191,6 +193,19 @@ function formatAddress(s) { return undefined; } +function readCertificateChain(path) { + var cert = []; + var ca = []; + fs.readFileSync(path, 'utf8').split("\n").forEach(function(line) { + cert.push(line); + if (line.match(/-END CERTIFICATE-/)) { + ca.push(cert.join("\n")); + cert = []; + } + }); + return ca; +} + function startServer() { console.log("Starting web server"); var app = express(); @@ -359,7 +374,23 @@ function startServer() { http_res.status(500).end(JSON.stringify({"error": "server error"})); } }); - http.createServer(app).listen(80); + try { + http.createServer(app).listen(80); + } catch (err) { + console.log("Error starting HTTP server: " + err); + } + if (argv.https) { + try { + var options = { + key : fs.readFileSync('/etc/ssl/private/star_ring_cx.key'), + cert : fs.readFileSync('/etc/ssl/certs/cert_star_ring_cx.pem'), + ca : readCertificateChain('/etc/ssl/certs/chain_star_ring_cx.pem') + }; + https.createServer(options, app).listen(443); + } catch (err) { + console.log("Error starting HTTPS server: " + err); + } + } } unlockAccount(); diff --git a/package.json b/package.json index ba0c889cf4b6338686abec0a2ff92cf763117fd5..564f5baf9a90b0da221954f49ac395bfaece8015 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "web3" : ">=0.15" , "express" : ">=4.1.0", "body-parser" : ">=1.8.1", - "bignumber.js": ">=2.0.0" + "bignumber.js": ">=2.0.0", + "minimist" : ">=1.0.0" } } \ No newline at end of file