pokemap
Version:
PokemonGo-Map APIs for node.js
68 lines (54 loc) • 2.14 kB
JavaScript
;
var http = require('http');
var https = require('https');
var certs = require('localhost.daplie.com-certificates');
var express = require('express');
var app = express();
var plainServer = http.createServer(app);
var tlsServer = https.createServer(certs, app);
var fs = require('fs');
var RSA = require('rsa-compat').RSA;
var config = require('./config.js');
function serve(keypair) {
var pokeapp = require('./').create({ keypair: keypair });
app.use('/', pokeapp);
app.use('/static', express.static('./public/static'));
app.use('/', express.static('./public/static'));
plainServer.listen(3000, function () {
console.log('Listening on http://127.0.0.1:' + plainServer.address().port);
});
tlsServer.listen(3443, function () {
console.log('Listening on https://localhost.daplie.com:' + tlsServer.address().port);
});
}
//
// Generate an RSA key for signing sessions, if it doesn't exist
//
console.log('Checking for existing RSA private key to secure login sessions...');
fs.readFile(config.rsaKeyPath, 'ascii', function (err, privkey) {
if (!err) {
console.log('RSA private key found, using it.');
serve({ privateKeyPem: privkey, publicKeyPem: RSA.exportPublicPem({ privateKeyPem: privkey }) });
return;
}
console.log('Generating an RSA 1024-bit key to secure login sessions...');
if (!RSA._URSA && /arm|mips/i.test(require('os').arch)) {
console.log("");
console.log("You're on a slow computer so this process could take dozens of minutes.");
console.log("If you're a technical person, try doing this instead:");
console.log("");
console.log("openssl genrsa -out '" + require('path').join(__dirname, 'privkey.pem') + "' 1024");
console.log("");
}
RSA.generateKeypair(1024, 65537, { pem: true, public: true }, function (err, keypair) {
console.log('Generated 1024-bit RSA key.');
fs.writeFile(config.rsaKeyPath, keypair.privateKeyPem, 'ascii', function (err) {
if (err) {
console.error(err);
return;
}
console.log('Generated and saved 1024-bit RSA key.');
serve(keypair);
});
});
});