tty.js:实现Web Terminal

2015-03-27
2 min read

上次使用Socket.io进行前后端的实时连接,这次介绍一个Node.JS编写的工具来实现浏览器来远程连接Linux。通过这个软件我们就可以抛弃putty这样的客户端来进行Linux开发。当然,事先需要在服务器端安装配置这套工具才能使用。

当然这个工具最后提交代码实在一年前,版本号是0.2.13。它向上支持更独立的web终端工具term.js包, 向下依赖低层次的终端母包pty.js。不只是bash shell,还有vim、irssi等工具。Node.JS最新版本就不再支持了,npm安装依赖过程中会报V8引擎编译错误。我们采用比较老的版本(比如v0.10.35)就能解决这个问题。

安装好依赖之后,新建一个tty.js的文件作为程序入口,tty.js依赖于Express,也就用了Express一样的接口名。

var tty = require('tty.js');                                                    
var app = tty.createServer({                                                    
        //config                                                                
        shell: 'bash',                                                          
        users: { //web端登录名
                root: 'rootroot',                                               
        },                                                                      
        port: 8000                                                              
});                                                                             
//test route                                                                    
app.get('/foo', function(req, res, next){                                       
        res.send('bar');                                                        
});                                                                             
app.listen();

以及一个tty的配置,这个配置文件格式是JSON。具体内容待进一步研究。

{
  "users": {
    "hello": "world"
  },
  "https": {
    "key": "./server.key",
    "cert": "./server.crt"
  },
  "port": 8080,
  "hostname": "127.0.0.1",
  "shell": "sh",
  "shellArgs": ["arg1", "arg2"],
  "static": "./static",
  "limitGlobal": 10000,
  "limitPerUser": 1000,
  "localOnly": false,
  "cwd": ".",
  "syncSession": false,
  "sessionTimeout": 600000,
  "log": true,
  "io": { "log": false },
  "debug": false,
  "term": {
    "termName": "xterm",
    "geometry": [80, 24],
    "scrollback": 1000,
    "visualBell": false,
    "popOnBell": false,
    "cursorBlink": false,
    "screenKeys": false,
    "colors": [
      "#2e3436",
      "#cc0000",
      "#4e9a06",
      "#c4a000",
      "#3465a4",
      "#75507b",
      "#06989a",
      "#d3d7cf",
      "#555753",
      "#ef2929",
      "#8ae234",
      "#fce94f",
      "#729fcf",
      "#ad7fa8",
      "#34e2e2",
      "#eeeeec"
    ]
  }
}

使用:在浏览器中输入目标IP加端口号,点击Open Terminal就打开bash shell了。

测试几个常用的命令


感觉以后还能在这上面二次开发几个玩意儿呢?

comments powered by Disqus