UNPKG

pebblepoint-server

Version:

Server to allow PebblePoint to control PowerPoint on OS X

77 lines (60 loc) 1.81 kB
express = require("express") path = require("path") logger = require("morgan") bodyParser = require("body-parser") routes = require("./routes/index") os = require("os") app = express() # For launching the view sys = require('sys') exec = require('child_process').exec global.app = app app.set "port", process.env.PORT or 7325 publicIPList = () -> ips = [] for interfaceName, inetList of os.networkInterfaces() for inet in inetList # Not using a hash b/c we care about order as our priority. if !inet["internal"] && inet["family"].match(/IPv4/i) && !interfaceName.match(/bridge/i) ips.push [interfaceName, inet["address"]] return ips app.set "ipFunc", publicIPList # view engine setup app.set "views", path.join(__dirname, "views") app.set "view engine", "ejs" app.use logger("dev") app.use bodyParser.json() app.use bodyParser.urlencoded() app.use express.static(path.join(__dirname, "public")) app.use "/", routes #/ catch 404 and forwarding to error handler app.use (req, res, next) -> err = new Error("Not Found") err.status = 404 next err return #/ error handlers # development error handler # will print stacktrace if app.get("env") is "development" app.use (err, req, res, next) -> res.status err.status or 500 res.render "error", message: err.message error: err return # production error handler # no stacktraces leaked to users app.use (err, req, res, next) -> res.status err.status or 500 res.render "error", message: err.message error: {} return server = app.listen(app.get("port"), -> preferredIP = publicIPList().splice(0,1)[0][1] serverUrl = "http://" + preferredIP + ":" + server.address().port console.log "PebblePoint server listening on " + serverUrl exec "open #{serverUrl}" return )