comparison webtty.js @ 13:bf7c26d0b66d

webtty: switch upward protocol to JSON Switch the client-to-server messages from the HTML forms format to JSON (for the webtty app). Message numbers are sent but not yet used.
author John "Elwin" Edwards <elwin@sdf.org>
date Sun, 13 May 2012 20:50:13 -0700
parents 481dcee353c9
children 7466927c17a5
comparison
equal deleted inserted replaced
12:9e1d83f50c9e 13:bf7c26d0b66d
142 return decstr; 142 return decstr;
143 } 143 }
144 144
145 /* Returns the contents of a form */ 145 /* Returns the contents of a form */
146 function getFormValues(formtext) { 146 function getFormValues(formtext) {
147 var pairstrs = formtext.split("&"); 147 var jsonobj;
148 var data = {}; 148 try {
149 for (var i = 0; i < pairstrs.length; i++) 149 jsonobj = JSON.parse(formtext);
150 { 150 } catch (e) {
151 var eqsign = pairstrs[i].indexOf("="); 151 if (e instanceof SyntaxError)
152 if (eqsign > 0) { 152 return null;
153 rawname = pairstrs[i].slice(0, eqsign); 153 }
154 rawval = pairstrs[i].slice(eqsign + 1); 154 return jsonobj;
155 name = urlDec(rawname);
156 val = urlDec(rawval);
157 if (!(name in data))
158 data[name] = [];
159 data[name].push(val);
160 }
161 }
162 return data;
163 } 155 }
164 156
165 function login(req, res, formdata) { 157 function login(req, res, formdata) {
166 var resheaders = {'Content-Type': 'text/plain'}; 158 var resheaders = {'Content-Type': 'text/plain'};
167 var sessid = randkey(); 159 var sessid = randkey();
296 if (target == '/feed') { 288 if (target == '/feed') {
297 if (!cterm) { 289 if (!cterm) {
298 sendError(res, 1); 290 sendError(res, 1);
299 return; 291 return;
300 } 292 }
301 if (formdata["quit"] == "quit") { 293 if (formdata["t"] == "q") {
302 /* The client wants to quit. */ 294 /* The client wants to quit. */
303 // FIXME need to send a message back to the client 295 // FIXME need to send a message back to the client
304 cterm.close(); 296 cterm.close();
305 } 297 }
306 else if (formdata["keys"]) { 298 else if (formdata["t"] == "d" && typeof(formdata["d"]) == "string") {
307 /* process the keys */ 299 /* process the keys */
308 hexstr = formdata["keys"][0].replace(/[^0-9a-f]/gi, ""); 300 hexstr = formdata["d"].replace(/[^0-9a-f]/gi, "");
309 if (hexstr.length % 2 != 0) { 301 if (hexstr.length % 2 != 0) {
310 sendError(res, 2); 302 sendError(res, 2);
311 return; 303 return;
312 } 304 }
313 keybuf = new Buffer(hexstr, "hex"); 305 keybuf = new Buffer(hexstr, "hex");