UNPKG

rkeys

Version:

A platform for creating tablet/HTML5 virtual-keyboard apps to send keystrokes to remote X11

146 lines (145 loc) 4.4 kB
// Generated by LiveScript 1.3.0 (function(){ var Args, Bify, ErrHan, Express, Fs, Http, Https, Lsify, Morgan, Nib, Path, Shell, Stylus, join$ = [].join; require('./log'); if ((Args = require('./args')).genSslCert) { return require('./gen-ssl-cert')(); } Bify = require('browserify'); ErrHan = require('errorhandler'); Express = require('express'); Fs = require('fs'); Http = require('http'); Https = require('https'); Lsify = require('lsify'); Morgan = require('morgan'); Nib = require('nib'); Path = require('path'); Shell = require('shelljs/global'); Stylus = require('stylus'); require('./io/x11/boot')(function(err){ var ApiHttp, ApiWs, dirs, DIRUI, x$, express, i$, ref$, len$, d, y$; if (err) { return log(err); } ApiHttp = require('./io/api/http'); ApiWs = require('./io/api/ws'); log("dirs: " + join$.call(Args.dirs, ' ')); dirs = Args.dirs.concat(DIRUI = __dirname + "/ui"); if (process.env.NODE_ENV === 'development') { dirs = dirs.concat(__dirname); } x$ = express = Express(); x$.set('port', Args.port); x$.use(Morgan('dev')); x$.set('view engine', 'jade'); x$.set('views', dirs); x$.get(/^\/([_A-Za-z\-\/]+)$/, function(req, res){ return res.render(req.params[0]); }); for (i$ = 0, len$ = (ref$ = Args.dirs).length; i$ < len$; ++i$) { d = ref$[i$]; express.use(Express['static'](d)); } express.use(Express['static'](DIRUI)); for (i$ = 0, len$ = (ref$ = Args.dirs).length; i$ < len$; ++i$) { d = ref$[i$]; useLivescript(d); useStylus(d); } useStylus(DIRUI); y$ = express; y$.use(ErrHan()); y$.locals.basedir = DIRUI; startHttp(function(err, s0){ if (err) { return log(err); } return startHttps(function(err, s1){ if (err) { return log(err); } ApiHttp.init(express); return ApiWs.init([s0, s1]); }); }); function startHttp(cb){ var s, p; s = Http.createServer(express); return s.listen(p = Args.port, function(err){ if (!err) { log0("Express http server listening on port " + p); } return cb(err, s); }); } function startHttps(cb){ var keys, d, certs, keyPath, certPath, key, cert, s, p; keys = ls((function(){ var i$, ref$, len$, results$ = []; for (i$ = 0, len$ = (ref$ = Args.dirs).length; i$ < len$; ++i$) { d = ref$[i$]; results$.push(Path.join(d, '/*key.pem')); } return results$; }())); certs = ls((function(){ var i$, ref$, len$, results$ = []; for (i$ = 0, len$ = (ref$ = Args.dirs).length; i$ < len$; ++i$) { d = ref$[i$]; results$.push(Path.join(d, '/*cert.pem')); } return results$; }())); if (!(keys.length && certs.length)) { return cb(); } log("found ssl key " + (keyPath = keys[0])); log("found ssl cert " + (certPath = certs[0])); key = Fs.readFileSync(keyPath); cert = Fs.readFileSync(certPath); s = Https.createServer({ key: key, cert: cert }, express); return s.listen(p = Args.portSsl, function(err){ if (!err) { log0("Express https server listening on port " + p); } return cb(err, s); }); } function useLivescript(dir){ return express.use("*.js", function(req, res, next){ var lspath, b; lspath = Path.resolve(Path.join(dir, req.params[0] + ".ls")); if (!test('-e', lspath)) { return next(); } b = Bify(lspath, { basedir: dir, paths: [DIRUI] }); log("compile " + lspath); return b.transform(Lsify).bundle(function(err, buf){ if (err) { return next(err); } return res.send(buf.toString()); }); }); } function useStylus(dir){ var dirCss; express.use(Stylus.middleware({ src: dir, dest: dirCss = "/tmp/rkeys/" + dir + "/css", compile: function(str, path){ return Stylus(str).set('filename', path).set('paths', [dir, DIRUI]).use(Nib()); } })); return express.use(Express['static'](dirCss)); } return useStylus; }); }).call(this);