Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Apr 4, 2023. It is now read-only.

myml/webssh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

4 Commits

Repository files navigation

服务器端文档

快速开始

使用相同 ID,分别添加 net.conn,websocket.conn

webssh := NewWebSSH()
...
conn, _ := net.Dial("tcp", "127.0.0.1:22")
wssh.AddSSHConn("$uuid", conn)
...
ws, _ := websocket.Upgrade(w, r, nil, 512, 512)
wssh.AddWebsocket("$uuid", ws)

客户端文档

消息类型

type messageType string
const (
	messageTypeStdin = "stdin"
	messageTypeStdout = "stdout"
	messageTypeStderr = "stderr"
	messageTypeResize = "resize"
	messageTypeLogin = "login"
	messageTypePassword = "password"
	messageTypePublickey = "publickey"
)
type message struct {
	Type messageType `json:"type"`
	Data []byte `json:"data"`
	Cols int `json:"cols"`
	Rows int `json:"rows"`
}

消息协议

  1. 登录 {type:"login",data:"$username"}
  2. 验证 {type:"password",data:"$password"}
  3. 窗口大小调整 {type:"resize",cols:40,rows:80}
  4. 标准流数据
    {type:"stdin",data:"$data"} {type:"stdout",data:"$data"} {type:"stderr",data:"$data"}
    客户端发送 stdin,接收 stdout,stderr

Data 数据

消息的 data 数据使用 base64 编码传输,JavaScript 的atob & btoa可用于 base64 编码,但对 utf8 有兼容性问题,要使用decodeURIComponent & encodeURIComponent做包裹,以下是实现

function atou(encodeString) {
 return decodeURIComponent(escape(atob(encodeString)));
}
function utoa(rawString) {
 return btoa(encodeURIComponent(rawString));
}

About

websocket to ssh

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /