annotate webtty @ 195:3bdee6371c3f

Change various filenames. The shell script previously used to launch the daemon is now called "initscript". The script files have had the ".js" extension removed from their names.
author John "Elwin" Edwards
date Thu, 14 Jan 2016 20:52:29 -0500
parents webtty.js@5372f1f97cf5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
bd412f63ce0d Put this project under version control, finally.
John "Elwin" Edwards <elwin@sdf.org>
parents:
diff changeset
1 #!/usr/bin/env node
137
f14e92f6d955 webtty: don't hardcode paths.
John "Elwin" Edwards
parents: 86
diff changeset
2
f14e92f6d955 webtty: don't hardcode paths.
John "Elwin" Edwards
parents: 86
diff changeset
3 var localModules = '/usr/lib/node_modules/';
0
bd412f63ce0d Put this project under version control, finally.
John "Elwin" Edwards <elwin@sdf.org>
parents:
diff changeset
4 var http = require('http');
bd412f63ce0d Put this project under version control, finally.
John "Elwin" Edwards <elwin@sdf.org>
parents:
diff changeset
5 var url = require('url');
bd412f63ce0d Put this project under version control, finally.
John "Elwin" Edwards <elwin@sdf.org>
parents:
diff changeset
6 var path = require('path');
bd412f63ce0d Put this project under version control, finally.
John "Elwin" Edwards <elwin@sdf.org>
parents:
diff changeset
7 var fs = require('fs');
137
f14e92f6d955 webtty: don't hardcode paths.
John "Elwin" Edwards
parents: 86
diff changeset
8 var pty = require(path.join(localModules, "pty.js"));
140
789c094675f4 WebTTY: use WebSockets when possible.
John "Elwin" Edwards
parents: 137
diff changeset
9 var child_process = require("child_process");
789c094675f4 WebTTY: use WebSockets when possible.
John "Elwin" Edwards
parents: 137
diff changeset
10 var webSocketServer = require(path.join(localModules, "websocket")).server;
0
bd412f63ce0d Put this project under version control, finally.
John "Elwin" Edwards <elwin@sdf.org>
parents:
diff changeset
11
137
f14e92f6d955 webtty: don't hardcode paths.
John "Elwin" Edwards
parents: 86
diff changeset
12 var serveStaticRoot = fs.realpathSync(".");
0
bd412f63ce0d Put this project under version control, finally.
John "Elwin" Edwards <elwin@sdf.org>
parents:
diff changeset
13 var sessions = {};
153
c4a32007d2dc WebTTY: remove polling.
John "Elwin" Edwards
parents: 140
diff changeset
14 var nsessid = 0;
0
bd412f63ce0d Put this project under version control, finally.
John "Elwin" Edwards <elwin@sdf.org>
parents:
diff changeset
15
2
98bf7c94c954 webtty.js: set up the environment and working directory.
John "Elwin" Edwards <elwin@sdf.org>
parents: 0
diff changeset
16 var env_dontuse = {"TMUX": true, "TMUX_PANE": true};
98bf7c94c954 webtty.js: set up the environment and working directory.
John "Elwin" Edwards <elwin@sdf.org>
parents: 0
diff changeset
17
0
bd412f63ce0d Put this project under version control, finally.
John "Elwin" Edwards <elwin@sdf.org>
parents:
diff changeset
18 /* Constructor for TermSessions. Note that it opens the terminal and
bd412f63ce0d Put this project under version control, finally.
John "Elwin" Edwards <elwin@sdf.org>
parents:
diff changeset
19 * adds itself to the sessions dict.
bd412f63ce0d Put this project under version control, finally.
John "Elwin" Edwards <elwin@sdf.org>
parents:
diff changeset
20 */
140
789c094675f4 WebTTY: use WebSockets when possible.
John "Elwin" Edwards
parents: 137
diff changeset
21 function TermSessionWS(conn, h, w) {
789c094675f4 WebTTY: use WebSockets when possible.
John "Elwin" Edwards
parents: 137
diff changeset
22 var ss = this;
789c094675f4 WebTTY: use WebSockets when possible.
John "Elwin" Edwards
parents: 137
diff changeset
23 /* Set up the sizes. */
789c094675f4 WebTTY: use WebSockets when possible.
John "Elwin" Edwards
parents: 137
diff changeset
24 w = Math.floor(Number(w));
789c094675f4 WebTTY: use WebSockets when possible.
John "Elwin" Edwards
parents: 137
diff changeset
25 if (!(w > 0 && w < 256))
789c094675f4 WebTTY: use WebSockets when possible.
John "Elwin" Edwards
parents: 137
diff changeset
26 w = 80;
789c094675f4 WebTTY: use WebSockets when possible.
John "Elwin" Edwards
parents: 137
diff changeset
27 this.w = w;
789c094675f4 WebTTY: use WebSockets when possible.
John "Elwin" Edwards
parents: 137
diff changeset
28 h = Math.floor(Number(h));
789c094675f4 WebTTY: use WebSockets when possible.
John "Elwin" Edwards
parents: 137
diff changeset
29 if (!(h > 0 && h < 256))
789c094675f4 WebTTY: use WebSockets when possible.
John "Elwin" Edwards
parents: 137
diff changeset
30 h = 25;
789c094675f4 WebTTY: use WebSockets when possible.
John "Elwin" Edwards
parents: 137
diff changeset
31 this.h = h;
789c094675f4 WebTTY: use WebSockets when possible.
John "Elwin" Edwards
parents: 137
diff changeset
32 this.conn = conn;
789c094675f4 WebTTY: use WebSockets when possible.
John "Elwin" Edwards
parents: 137
diff changeset
33 /* Customize the environment. */
789c094675f4 WebTTY: use WebSockets when possible.
John "Elwin" Edwards
parents: 137
diff changeset
34 var childenv = {};
789c094675f4 WebTTY: use WebSockets when possible.
John "Elwin" Edwards
parents: 137
diff changeset
35 for (var key in process.env) {
789c094675f4 WebTTY: use WebSockets when possible.
John "Elwin" Edwards
parents: 137
diff changeset
36 if (!(key in env_dontuse))
789c094675f4 WebTTY: use WebSockets when possible.
John "Elwin" Edwards
parents: 137
diff changeset
37 childenv[key] = process.env[key];
789c094675f4 WebTTY: use WebSockets when possible.
John "Elwin" Edwards
parents: 137
diff changeset
38 }
789c094675f4 WebTTY: use WebSockets when possible.
John "Elwin" Edwards
parents: 137
diff changeset
39 var spawnopts = {"env": childenv, "cwd": process.env["HOME"],
789c094675f4 WebTTY: use WebSockets when possible.
John "Elwin" Edwards
parents: 137
diff changeset
40 "rows": this.h, "cols": this.w};
789c094675f4 WebTTY: use WebSockets when possible.
John "Elwin" Edwards
parents: 137
diff changeset
41 this.term = pty.spawn("bash", [], spawnopts);