diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000..49bf50c
Binary files /dev/null and b/.DS_Store differ
diff --git a/common/core/ssh_shell_conn.go b/common/core/ssh_shell_conn.go
index 21553fb..cd96923 100644
--- a/common/core/ssh_shell_conn.go
+++ b/common/core/ssh_shell_conn.go
@@ -54,7 +54,7 @@ type SshConn struct {
//flushComboOutput flush ssh.session combine output into websocket response
func flushComboOutput(w *wsBufferWriter, wsConn *websocket.Conn) error {
if w.buffer.Len() != 0 {
- err := wsConn.WriteMessage(websocket.TextMessage, w.buffer.Bytes())
+ err := wsConn.WriteMessage(websocket.BinaryMessage, w.buffer.Bytes())
if err != nil {
return err
}
diff --git a/controller/login.go b/controller/login.go
index f6b69e8..a4edb5d 100644
--- a/controller/login.go
+++ b/controller/login.go
@@ -24,12 +24,12 @@ func Login(c *gin.Context) {
db := database.Get()
defer db.Close()
db.DB.Where(model.User{Phone: user.Phone}).FirstOrCreate(&userinfo)
- new_token, err := common.ReleaseToken(userinfo.ID)
+ newToken, err := common.ReleaseToken(userinfo.ID)
if err == nil && userinfo.ID > 0 {
resp.Code = errcode.C_nil_err
resp.Msg = "登陆成功"
resp.Data = userinfo
- resp.Token = new_token
+ resp.Token = newToken
} else {
resp.Code = errcode.S_auth_err
resp.Msg = "Token创建失败"
diff --git a/controller/stfp.go b/controller/stfp.go
index bba47ac..b430720 100644
--- a/controller/stfp.go
+++ b/controller/stfp.go
@@ -13,19 +13,19 @@ import (
"ssh_manage/model/Apiform"
)
-type sftp_req struct {
+type sftpReq struct {
Type string `json:"type"`
Token string `json:"token"`
}
-type sftp_resp struct {
+type sftpResp struct {
Code int `json:"code"`
Type string `json:"type"`
Msg string `json:"msg"`
Data string `json:"data"`
}
-func Sftp_ssh(c *gin.Context) {
+func SftpSsh(c *gin.Context) {
wsConn, err := upGrader.Upgrade(c.Writer, c.Request, nil)
if core.HandleError(c, err) {
return
@@ -35,8 +35,8 @@ func Sftp_ssh(c *gin.Context) {
var auth Apiform.WsAuth
if c.ShouldBindUri(&auth) != nil {
- wsConn.WriteMessage(websocket.TextMessage, []byte("参数错误\r\n"))
- wsConn.Close()
+ _ = wsConn.WriteMessage(websocket.TextMessage, []byte("参数错误\r\n"))
+ _ = wsConn.Close()
return
}
@@ -44,60 +44,60 @@ func Sftp_ssh(c *gin.Context) {
_, wsData, err := wsConn.ReadMessage()
if err != nil {
log.Println(err.Error())
- wsConn.Close()
+ _ = wsConn.Close()
//logrus.WithError(err).Error("reading webSocket message failed")
return
}
//unmashal bytes into struct
- msgObj := sftp_req{}
+ msgObj := sftpReq{}
if err := json.Unmarshal(wsData, &msgObj); err != nil {
log.Println("Auth : unmarshal websocket message failed:", string(wsData))
continue
}
- resp_msg := sftp_resp{}
+ respMsg := sftpResp{}
token := msgObj.Token
claims, err := common.ParseToken(token)
valid := claims.Valid()
if valid != nil || err != nil {
- resp_msg.Code = errcode.S_auth_fmt_err
- resp_msg.Msg = "身份令牌校验不通过"
- resp_msg.Data = err.Error()
- msg, _ := json.Marshal(resp_msg)
+ respMsg.Code = errcode.S_auth_fmt_err
+ respMsg.Msg = "身份令牌校验不通过"
+ respMsg.Data = err.Error()
+ msg, _ := json.Marshal(respMsg)
if err := wsConn.WriteMessage(websocket.TextMessage, msg); err != nil {
log.Println("sftp token fmt err:", err)
}
- wsConn.Close()
+ _ = wsConn.Close()
return
}
if claims.Userid != sftp_clients.Client.C[auth.Sid].Uid { //身份与缓存不符合
- resp_msg.Code = errcode.S_auth_fmt_err
- resp_msg.Msg = "用户权限不通过"
- resp_msg.Data = err.Error()
- msg, _ := json.Marshal(resp_msg)
+ respMsg.Code = errcode.S_auth_fmt_err
+ respMsg.Msg = "用户权限不通过"
+ respMsg.Data = err.Error()
+ msg, _ := json.Marshal(respMsg)
if err := wsConn.WriteMessage(websocket.TextMessage, msg); err != nil {
log.Println("sftp server_user err:", err)
}
- wsConn.Close()
+ _ = wsConn.Close()
return
}
path, err := sftp_clients.Client.C[auth.Sid].Sftp.Getwd()
if err != nil {
- resp_msg.Code = errcode.S_send_err
- resp_msg.Type = "connect"
- resp_msg.Msg = "SFTP连接失败"
- msg, _ := json.Marshal(resp_msg)
+ respMsg.Code = errcode.S_send_err
+ respMsg.Type = "connect"
+ respMsg.Msg = "SFTP连接失败"
+ msg, _ := json.Marshal(respMsg)
if err := wsConn.WriteMessage(websocket.TextMessage, msg); err != nil {
log.Println("sftp connect err:", err)
}
return
}
- resp_msg.Code = 200
- resp_msg.Type = "connect"
- resp_msg.Msg = "连接成功"
- resp_msg.Data = path
- msg, _ := json.Marshal(resp_msg)
+ respMsg.Code = 200
+ respMsg.Type = "connect"
+ respMsg.Msg = "连接成功"
+ respMsg.Data = path
+ msg, _ := json.Marshal(respMsg)
if err := wsConn.WriteMessage(websocket.TextMessage, msg); err != nil {
log.Println("sftp return err:", err)
return
diff --git a/controller/term.go b/controller/term.go
index 501d970..7e45669 100644
--- a/controller/term.go
+++ b/controller/term.go
@@ -24,7 +24,7 @@ var upGrader = websocket.Upgrader{
},
}
-type Auth_msg struct {
+type AuthMsg struct {
Type string `json:"type"`
Token string `json:"token"`
}
@@ -50,12 +50,12 @@ func WsSsh(c *gin.Context) {
return
}
- var ser_info Apiform.SerInfo //接收反序列化数据
+ var serInfo Apiform.SerInfo //接收反序列化数据
var auth Apiform.WsAuth
if c.ShouldBindUri(&auth) != nil {
- wsConn.WriteMessage(websocket.TextMessage, []byte("参数错误\r\n"))
- wsConn.Close()
+ _ = wsConn.WriteMessage(websocket.BinaryMessage, []byte("参数错误\r\n"))
+ _ = wsConn.Close()
return
}
@@ -63,12 +63,12 @@ func WsSsh(c *gin.Context) {
_, wsData, err := wsConn.ReadMessage()
if err != nil {
log.Println(err.Error())
- wsConn.Close()
+ _ = wsConn.Close()
//logrus.WithError(err).Error("reading webSocket message failed")
return
}
//unmashal bytes into struct
- msgObj := Auth_msg{}
+ msgObj := AuthMsg{}
if err := json.Unmarshal(wsData, &msgObj); err != nil {
log.Println("Auth : unmarshal websocket message failed:", string(wsData))
continue
@@ -77,35 +77,35 @@ func WsSsh(c *gin.Context) {
claims, err := common.ParseToken(token)
valid := claims.Valid()
if valid != nil || err != nil {
- wsConn.WriteMessage(websocket.TextMessage, []byte("身份验证失败\r\n"))
- wsConn.Close()
+ _ = wsConn.WriteMessage(websocket.BinaryMessage, []byte("身份验证失败\r\n"))
+ _ = wsConn.Close()
return
}
cache := database.Cache.Get()
defer cache.Close()
//log.Println(auth)
- s_info, err := redis.Bytes(cache.Do("GET", auth.Sid))
+ sInfo, err := redis.Bytes(cache.Do("GET", auth.Sid))
//log.Println(string(s_info))
- if err != nil || len(s_info) == 0 {
- wsConn.WriteMessage(websocket.TextMessage, []byte("连接超时,请重试!\r\n"))
- wsConn.Close()
+ if err != nil || len(sInfo) == 0 {
+ _ = wsConn.WriteMessage(websocket.BinaryMessage, []byte("连接超时,请重试!\r\n"))
+ _ = wsConn.Close()
return
}
- if json.Unmarshal(s_info, &ser_info) != nil {
- wsConn.WriteMessage(websocket.TextMessage, []byte("服务器信息获取失败,请重试!\r\n"))
- wsConn.Close()
+ if json.Unmarshal(sInfo, &serInfo) != nil {
+ _ = wsConn.WriteMessage(websocket.BinaryMessage, []byte("服务器信息获取失败,请重试!\r\n"))
+ _ = wsConn.Close()
return
}
//log.Println(ser_info)
- if claims.Userid != ser_info.BindUser { //验证权限
- wsConn.WriteMessage(websocket.TextMessage, []byte("权限验证失败,请重试!\r\n"))
- wsConn.Close()
+ if claims.Userid != serInfo.BindUser { //验证权限
+ _ = wsConn.WriteMessage(websocket.BinaryMessage, []byte("权限验证失败,请重试!\r\n"))
+ _ = wsConn.Close()
return
}
break
//break
}
- client, err := core.NewSshClient(core.Server{ser_info.Ip, ser_info.Port, ser_info.Username, ser_info.Password})
+ client, err := core.NewSshClient(core.Server{serInfo.Ip, serInfo.Port, serInfo.Username, serInfo.Password})
if core.WshandleError(wsConn, err) {
return
}
@@ -116,7 +116,7 @@ func WsSsh(c *gin.Context) {
return
}
sftp_clients.Client.Lock()
- sftp_clients.Client.C[auth.Sid] = &sftp_clients.MyClient{ser_info.BindUser, ssConn.SftpClient}
+ sftp_clients.Client.C[auth.Sid] = &sftp_clients.MyClient{serInfo.BindUser, ssConn.SftpClient}
sftp_clients.Client.Unlock()
defer func() {
sftp_clients.Client.Lock()
diff --git a/database/conn.go b/database/conn.go
index 95488b6..2e83169 100644
--- a/database/conn.go
+++ b/database/conn.go
@@ -9,20 +9,20 @@ import (
"ssh_manage/model"
)
-var dbconf = config.Config.Database
+var dbConf = config.Config.Database
var pool *sqlpool
-type Mydb struct {
+type MyDb struct {
DB *gorm.DB
}
func init() {
- pool = newpool(newDb, dbconf.Poolsize)
+ pool = newpool(newDb, dbConf.Poolsize)
}
func newDb() *gorm.DB {
- db, err := gorm.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8&parseTime=True&loc=Local",dbconf.Username,dbconf.Password,dbconf.Host,dbconf.Port,dbconf.Dbname))
+ db, err := gorm.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8&parseTime=True&loc=Local", dbConf.Username, dbConf.Password, dbConf.Host, dbConf.Port, dbConf.Dbname))
if err != nil {
log.Panicf("db open err :%s", err.Error())
}
@@ -33,10 +33,10 @@ func newDb() *gorm.DB {
return db
}
-func (s *Mydb) Close() {
+func (s *MyDb) Close() {
pool.put(s.DB)
}
-func Get() *Mydb {
- return &Mydb{pool.get()}
+func Get() *MyDb {
+ return &MyDb{pool.get()}
}
diff --git a/go.sum b/go.sum
index 115a84f..554302b 100644
--- a/go.sum
+++ b/go.sum
@@ -2,9 +2,11 @@ github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/Gre-Z/common v0.0.0-20191024025434-2dbc6bd196f9 h1:q+nKJ4E5tIiGVcXcRqwPxjxRmGHtC+wWohKHtCHzJmE=
github.com/Gre-Z/common v0.0.0-20191024025434-2dbc6bd196f9/go.mod h1:b5J9o16Ec1LAwq6QVv+pNECF3sxcin2dMKprGZX43mA=
+github.com/PuerkitoBio/goquery v1.5.1 h1:PSPBGne8NIUWw+/7vFBV+kG2J/5MOjbzc7154OaKCSE=
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
github.com/aliyun/alibaba-cloud-sdk-go v1.61.623 h1:iKyKSF67tLwsVSs6okuvVdr9C9kV7y4OGNTCx16IKfg=
github.com/aliyun/alibaba-cloud-sdk-go v1.61.623/go.mod h1:pUKYbK5JQ+1Dfxk80P0qxGqe5dkxDoabbZS7zOcouyA=
+github.com/andybalholm/cascadia v1.1.0 h1:BuuO6sSfQNFRu1LppgbD25Hr2vLYW25JvxHs5zzsLTo=
github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
@@ -31,11 +33,13 @@ github.com/go-playground/validator/v10 v10.2.0 h1:KgJ0snyC2R9VXYN2rneOtQcw5aHQB1
github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI=
github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs=
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
+github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d h1:lBXNCxVENCipq4D1Is42JVOP4eQjlB8TQ6H69Yx5J9Q=
github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A=
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY=
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
github.com/golang/protobuf v1.3.3 h1:gyjaxf+svBWX08ZjK86iN9geUJF0H6gp2IRKX6Nf6/I=
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
@@ -66,7 +70,6 @@ github.com/mattn/go-sqlite3 v1.14.0 h1:mLyGNKR8+Vv9CAU7PphKa2hkEqxxhn8i32J6FPj1/
github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
-github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -84,9 +87,9 @@ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykE
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a h1:pa8hGb/2YqsZKovtsgrwcDH1RZhVbTKCjLp47XpqCDs=
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
+github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
-github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
@@ -96,7 +99,6 @@ github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd h1:GGJVjV8waZKRHrgwvtH66z9ZGVurTD1MT0n1Bb+q4aM=
golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a h1:vclmkQCjlDX5OydZ9wv8rBCcS0QyQY66Mpf/7BZbInM=
golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
@@ -104,6 +106,7 @@ golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73r
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e h1:3G+cUijn7XD+S4eJFddp53Pv7+slrESplyjG25HgL+k=
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -114,6 +117,7 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190328211700-ab21143f2384 h1:TFlARGu6Czu1z7q93HTxcP1P+/ZFC/IKythI5RzrnRg=
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
diff --git a/ssh_manage.go b/ssh_manage.go
index 85bc02b..e28635c 100644
--- a/ssh_manage.go
+++ b/ssh_manage.go
@@ -55,7 +55,7 @@ func main() {
api.POST("/login", controller.Login)
api.POST("/send", controller.Send)
api.GET("/term/:sid", controller.WsSsh)
- api.GET("/sftp/:sid", controller.Sftp_ssh)
+ api.GET("/sftp/:sid", controller.SftpSsh)
api.Use(middleware.Auth()).GET("/userinfo", controller.Info)
api.Use(middleware.Auth()).POST("/nickname", controller.UpdataNick)
api.Use(middleware.Auth()).POST("/addser", controller.Addser)
diff --git a/static/xterm/main.js b/static/xterm/main.js
index 892807e..3765711 100644
--- a/static/xterm/main.js
+++ b/static/xterm/main.js
@@ -59,7 +59,7 @@ socket.onopen = function () {
type: "cmd",
cmd: data,
}
- socket.send(JSON.stringify(sdata));
+ socket.send(str2utf8(JSON.stringify(sdata)));
});
term.on('resize', size => {
@@ -78,8 +78,17 @@ socket.onopen = function () {
create_sftp()
is_login = true
}
- term.write(msg.data);
- update_path(msg.data)
+ let reader = new FileReader();
+ reader.onload = function (event) {
+ let content = reader.result;//内容就在这里
+ //delete reader
+ //console.log(content)
+ term.write(content);
+ update_path(content);
+ };
+ reader.readAsText(msg.data);
+ //term.write(msg.data);
+
};
socket.onerror = function (e) {
is_login = false
@@ -95,6 +104,11 @@ socket.onopen = function () {
};
};
+function str2utf8(str) {
+ let encoder = new TextEncoder('utf8');
+ return encoder.encode(str);
+}
+
function update_path(str) { //判断是否有效路径后更新当前所在路径,用于SFTP功能
//console.log(str)
let splice = String.fromCharCode(7)
@@ -103,14 +117,14 @@ function update_path(str) { //判断是否有效路径后更新当前所在
if (start >= 0 && end >= 0) {
let path = trimStr(str.substring(start + 1, end))
let verify = path.indexOf(" ")
- if(verify == -1){
+ if (verify == -1) {
//console.log(path)
- if(path.substr(0,1) == "~" || path.substr(0,1) == "/"){
- if(path.substr(0,1) == "~"){ //替换~为用户目录
+ if (path.substr(0, 1) == "~" || path.substr(0, 1) == "/") {
+ if (path.substr(0, 1) == "~") { //替换~为用户目录
path = server_pwd + path.substr(1)
}
//console.log(path)
- if(session_path != path){
+ if (session_path != path) {
session_path = path
}
}
@@ -118,6 +132,6 @@ function update_path(str) { //判断是否有效路径后更新当前所在
}
}
-function trimStr(str){
- return str.replace(/(^\s*)|(\s*$)/g,"");
+function trimStr(str) {
+ return str.replace(/(^\s*)|(\s*$)/g, "");
}
\ No newline at end of file
diff --git a/view/term.html b/view/term.html
index 7392927..abed102 100644
--- a/view/term.html
+++ b/view/term.html
@@ -39,7 +39,7 @@
-
+