a resource for creating and configuring express http servers
- Easily configurable through simple options hash
- Based on latest Express 4.x.x
- Static File Support
- Session Support
- Custom Web Domain support
- HTTPS / SSL / Enforce SSL / Only SSL options
- Websockets
- OAuth Single Sign On through Passport
- View Support through View module
- Body Parser / File Uploads
- Auto-port detection
- i18n support through 18n-2
- Has ability to white-label multiple Views and domains onto single site
see: ./examples/server.js
var http = require('resource-http');
// all options are optional and will default to a reasonable value if left unset
http.listen({
port: 8888,
wss: true, // enables websocket server
host: 'localhost',
root: __dirname + "/public",
view: __dirname + "/view",
cacheView: true, // caches all local view templates and presenters into memory
uploads: false,
https: false, // enables https / ssl, requires key, cert, ca
autoport: true, // will auto-increment port if port unavailable
bodyParser: true, // parse incoming body data automatically, disable for streaming
sslRequired: false, // redirects all http traffic to https
onlySSL: false, // will only start https server, no http services
noSession: false, // removes all session handling from server
nodeinfo: false, // makes /_info route available for node information
nodeadmin: false, // makes /_iadmin route available for node administration
key: fs.readFileSync(__dirname + "/ssl/server.key").toString(),
cert: fs.readFileSync(__dirname + "/ssl/cert.crt").toString(),
ca: fs.readFileSync(__dirname + "/ssl/ca.crt").toString(),
secret: "supersecret", // session password
redis: { // optional redis store for sessions, requires `connect-redis` package
host: "0.0.0.0",
port: 6379,
password: "foobar"
},
auth: {
basicAuth: {
username: 'admin',
password: 'admin'
}
}
}, function(err, app){
console.log(app.server.address())
// from here, app is a regular Express.js server
app.get('/foo', function (req, res){
res.end('got /foo');
});
});
The nodeinfo
and nodeadmin
boolean options should not be set to true
on unsecured servers, as they may expose sensitive systems information.