From 37835b15614d76b14f2a863bb566a8a611b42a68 Mon Sep 17 00:00:00 2001 From: shaoying Date: Thu, 27 Jun 2019 20:23:28 +0800 Subject: [PATCH] opt ssh.componet --- src/contexts/cli/cli.go | 1 + src/contexts/cli/version.go | 2 +- src/contexts/mdb/mdb.go | 5 +-- src/contexts/nfs/nfs.go | 43 ++++++++++--------- src/contexts/ssh/ssh.go | 82 ++++++++++++++++++------------------- usr/librarys/example.js | 9 +++- 6 files changed, 74 insertions(+), 68 deletions(-) diff --git a/src/contexts/cli/cli.go b/src/contexts/cli/cli.go index b752a8e3..019c3a50 100644 --- a/src/contexts/cli/cli.go +++ b/src/contexts/cli/cli.go @@ -683,6 +683,7 @@ var version = struct { } `, m.Time(), m.Conf("runtime", "node.route"), version.self+1)) + m.Append("directory", "") return }}, "upgrade": &ctx.Command{Name: "upgrade project|bench|system|portal|script", Help: "服务升级", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) { diff --git a/src/contexts/cli/version.go b/src/contexts/cli/version.go index f68b60c5..c34aae39 100644 --- a/src/contexts/cli/version.go +++ b/src/contexts/cli/version.go @@ -4,5 +4,5 @@ var version = struct { host string self int }{ - "2019-06-27 01:23:37", "com.mac", 2, + "2019-06-27 17:30:49", "ZYB-20190522USI", 12, } diff --git a/src/contexts/mdb/mdb.go b/src/contexts/mdb/mdb.go index 060e5887..2e19fa19 100644 --- a/src/contexts/mdb/mdb.go +++ b/src/contexts/mdb/mdb.go @@ -2,7 +2,6 @@ package mdb import ( "contexts/ctx" - "net" "time" "toolkit" @@ -102,9 +101,7 @@ var Index = &ctx.Context{Name: "mdb", Help: "数据中心", if mdb, ok := m.Target().Server.(*MDB); m.Assert(ok) { switch arg[0] { case "conn": - c, e := net.Dial(kit.Select("tcp", arg, 2), arg[1]) - m.Assert(e) - mdb.conn = redis.NewConn(c, time.Second*10, time.Second*10) + mdb.conn, e = redis.Dial(kit.Select("tcp", arg, 2), arg[1], redis.DialKeepAlive(time.Second*10)) default: if mdb.conn == nil { m.Echo("not open") diff --git a/src/contexts/nfs/nfs.go b/src/contexts/nfs/nfs.go index 012c0bb7..b7c697e8 100644 --- a/src/contexts/nfs/nfs.go +++ b/src/contexts/nfs/nfs.go @@ -487,6 +487,11 @@ func (nfs *NFS) Term(msg *ctx.Message, action string, args ...interface{}) *NFS switch action { case "init": + defer func() { + if e := recover(); e != nil { + m.Log("warn", "term init %s", e) + } + }() termbox.Init() termbox.SetInputMode(termbox.InputEsc) termbox.SetInputMode(termbox.InputMouse) @@ -1127,8 +1132,7 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心", "dir_fields": &ctx.Config{Name: "dir_fields(time/type/name/size/line/hash)", Value: "time size line filename", Help: "dir命令输出文件名的类型, name: 文件名, tree: 带缩进的文件名, path: 相对路径, full: 绝对路径"}, "grep": &ctx.Config{Name: "grep", Value: map[string]interface{}{ - "list": map[string]interface{}{ - }, + "list": []interface{}{}, }, Help: "dir命令输出文件名的类型, name: 文件名, tree: 带缩进的文件名, path: 相对路径, full: 绝对路径"}, "git": &ctx.Config{Name: "git", Value: map[string]interface{}{ "args": []interface{}{"-C", "@git_dir"}, @@ -1294,26 +1298,24 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心", }}, "grep": &ctx.Command{Name: "grep", Help: "", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) { if len(arg) > 0 { - switch arg[0]{ + switch arg[0] { case "add": - m.Confv("grep", []string{"list", arg[1]}, map[string]interface{}{ - "pos": 0, - "offset": 0, - "file": arg[2], + m.Confv("grep", "list.-2", map[string]interface{}{ + "pos": 0, "offset": 0, "file": arg[1], }) return case "head": - m.Confm("grep", "list", func(key string, value map[string]interface{}) { - if len(arg) == 1 || key == arg[1] { - value["pos"] = 0 + m.Confm("grep", "list", func(index int, value map[string]interface{}) { + if len(arg) == 1 { value["offset"] = 0 + value["pos"] = 0 } }) return case "tail": - m.Confm("grep", "list", func(key string, value map[string]interface{}) { - if len(arg) == 1 || key == arg[1] { + m.Confm("grep", "list", func(index int, value map[string]interface{}) { + if len(arg) == 1 { value["pos"] = -1 value["offset"] = 0 } @@ -1322,7 +1324,7 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心", } } - m.Confm("grep", "list", func(key string, value map[string]interface{}) { + m.Confm("grep", "list", func(index int, value map[string]interface{}) { f, e := os.Open(kit.Format(value["file"])) m.Assert(e) defer f.Close() @@ -1330,9 +1332,9 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心", // s, e := f.Stat() // m.Assert(e) - begin, e := f.Seek(int64(kit.Int(value["pos"])), 0) + begin, e := f.Seek(int64(kit.Int(value["pos"])), 0) if kit.Int(value["pos"]) == -1 { - begin, e = f.Seek(0, 2) + begin, e = f.Seek(0, 2) } m.Assert(e) @@ -1340,8 +1342,9 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心", bio := bufio.NewScanner(f) for i := 0; i < m.Optioni("page.limit") && bio.Scan(); i++ { text := bio.Text() - if len(arg) == 0 || strings.Contains(text, arg[0]){ - m.Add("append", "key", key) + if len(arg) == 0 || strings.Contains(text, arg[0]) { + m.Add("append", "index", index) + m.Add("append", "file", path.Base(kit.Format(value["file"]))) // m.Add("append", "pos",begin+int64(n)) // m.Add("append", "len",len(text)) // m.Add("append", "end",s.Size()) @@ -1350,11 +1353,11 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心", } else { i-- } - n+=len(text)+1 - value["offset"] = kit.Int(value["offset"]) + 1 + n += len(text) + 1 + value["offset"] = kit.Int(value["offset"]) + 1 } - value["pos"] = begin + int64(n) + value["pos"] = begin + int64(n) }) m.Table() return diff --git a/src/contexts/ssh/ssh.go b/src/contexts/ssh/ssh.go index b24d4c27..6c65f292 100644 --- a/src/contexts/ssh/ssh.go +++ b/src/contexts/ssh/ssh.go @@ -46,7 +46,7 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心", "timer": &ctx.Config{Name: "timer", Value: map[string]interface{}{"interval": "10s", "timer": ""}, Help: "断线重连"}, "componet": &ctx.Config{Name: "componet", Value: map[string]interface{}{ "company": []interface{}{ - map[string]interface{}{"componet_name": "status", "componet_help": "status", + map[string]interface{}{"componet_name": "status", "componet_help": "状态", "componet_tmpl": "componet", "componet_view": "Company", "componet_init": "", "componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route", "componet_args": []interface{}{"$$", "context", "cli", "system", "gg"}, "inputs": []interface{}{ @@ -55,7 +55,7 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心", map[string]interface{}{"type": "button", "value": "执行"}, }, }, - map[string]interface{}{"componet_name": "deploy", "componet_help": "deploy", + map[string]interface{}{"componet_name": "deploy", "componet_help": "部署", "componet_tmpl": "componet", "componet_view": "Company", "componet_init": "", "componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route", "componet_args": []interface{}{"$$", "context", "cli", "system", "gg"}, "inputs": []interface{}{ @@ -66,16 +66,7 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心", map[string]interface{}{"type": "button", "value": "执行"}, }, }, - map[string]interface{}{"componet_name": "proc", "componet_help": "proc", - "componet_tmpl": "componet", "componet_view": "Company", "componet_init": "", - "componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route", - "componet_args": []interface{}{"$$", "context", "cli", "proc"}, "inputs": []interface{}{ - map[string]interface{}{"type": "text", "name": "pod", "value": "", "imports": "plugin_pod"}, - map[string]interface{}{"type": "text", "name": "cmd", "view": "long"}, - map[string]interface{}{"type": "button", "value": "执行"}, - }, - }, - map[string]interface{}{"componet_name": "test", "componet_help": "test", + map[string]interface{}{"componet_name": "script", "componet_help": "脚本", "componet_tmpl": "componet", "componet_view": "Compile", "componet_init": "", "componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route", "componet_args": []interface{}{"$$", "context", "cli", "upgrade"}, "inputs": []interface{}{ @@ -86,7 +77,7 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心", }, "display": map[string]interface{}{"show_result": true}, }, - map[string]interface{}{"componet_name": "php", "componet_help": "php", + map[string]interface{}{"componet_name": "php", "componet_help": "测试", "componet_tmpl": "componet", "componet_view": "Company", "componet_init": "", "componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route", "componet_args": []interface{}{"$$", "context", "cli", "system", "php", "cmd_parse", "format"}, "inputs": []interface{}{ @@ -95,16 +86,16 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心", map[string]interface{}{"type": "button", "value": "执行"}, }, }, - map[string]interface{}{"componet_name": "grep", "componet_help": "grep", + map[string]interface{}{"componet_name": "grep", "componet_help": "日志", "componet_tmpl": "componet", "componet_view": "Company", "componet_init": "", "componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route", "componet_args": []interface{}{"$$", "context", "nfs", "grep"}, "inputs": []interface{}{ map[string]interface{}{"type": "text", "name": "pod", "value": "", "imports": "plugin_pod"}, - map[string]interface{}{"type": "text", "name": "cmd", "view": "long"}, + map[string]interface{}{"type": "select", "name": "cmd", "values": []interface{}{"", "tail", "head"}}, map[string]interface{}{"type": "button", "value": "执行"}, }, }, - map[string]interface{}{"componet_name": "redis", "componet_help": "redis", + map[string]interface{}{"componet_name": "redis", "componet_help": "缓存", "componet_tmpl": "componet", "componet_view": "Company", "componet_init": "", "componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route", "componet_args": []interface{}{"$$", "context", "mdb", "redis"}, "inputs": []interface{}{ @@ -171,12 +162,12 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心", }, }, "favor": []interface{}{ - map[string]interface{}{"componet_name": "salary", "componet_help": "计算工资", - "componet_tmpl": "componet", "componet_view": "Salary", "componet_init": "", - "componet_type": "public", "componet_ctx": "web.chat", "componet_cmd": "salary", + map[string]interface{}{"componet_name": "clip", "componet_help": "粘贴板", + "componet_tmpl": "componet", "componet_view": "Context", "componet_init": "", + "componet_type": "public", "componet_ctx": "aaa", "componet_cmd": "clip", "componet_args": []interface{}{}, "inputs": []interface{}{ - map[string]interface{}{"label": "total", "type": "text", "name": "text"}, - map[string]interface{}{"label": "base", "type": "text", "name": "total"}, + map[string]interface{}{"type": "text", "name": "content", "view": "long"}, + map[string]interface{}{"type": "button", "value": "运行"}, }, }, map[string]interface{}{"componet_name": "qrcode", "componet_help": "生成二维码", @@ -186,12 +177,12 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心", map[string]interface{}{"label": "content", "type": "text", "name": "content"}, }, }, - map[string]interface{}{"componet_name": "clip", "componet_help": "粘贴板", - "componet_tmpl": "componet", "componet_view": "Context", "componet_init": "", - "componet_type": "public", "componet_ctx": "aaa", "componet_cmd": "clip", + map[string]interface{}{"componet_name": "salary", "componet_help": "计算工资", + "componet_tmpl": "componet", "componet_view": "Salary", "componet_init": "", + "componet_type": "public", "componet_ctx": "web.chat", "componet_cmd": "salary", "componet_args": []interface{}{}, "inputs": []interface{}{ - map[string]interface{}{"type": "text", "name": "content", "view": "long"}, - map[string]interface{}{"type": "button", "value": "运行"}, + map[string]interface{}{"label": "total", "type": "text", "name": "text"}, + map[string]interface{}{"label": "base", "type": "text", "name": "total"}, }, }, map[string]interface{}{"componet_name": "location", "componet_help": "地理位置", @@ -257,23 +248,10 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心", "exports": []interface{}{"dir", "filename", "dir"}, "dir_root": []interface{}{"/"}, }, - map[string]interface{}{"componet_name": "status", "componet_help": "git", - "componet_tmpl": "componet", "componet_view": "Context", "componet_init": "", - "componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route", - "componet_args": []interface{}{"$$", "context", "nfs", "git"}, "inputs": []interface{}{ - map[string]interface{}{"type": "text", "name": "pod", "imports": "plugin_pod"}, - map[string]interface{}{"type": "text", "name": "dir", "view": "long", "imports": "plugin_dir"}, - map[string]interface{}{"type": "select", "name": "cmd", "values": []interface{}{ - "branch", "status", "diff", "log", "update", "push", "init", - }}, - map[string]interface{}{"type": "button", "value": "执行"}, - }, - }, map[string]interface{}{"componet_name": "commit", "componet_help": "git", "componet_tmpl": "componet", "componet_view": "Context", "componet_init": "", - "componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route", - "componet_args": []interface{}{"$$", "git"}, "inputs": []interface{}{ - map[string]interface{}{"type": "text", "name": "pod", "imports": "plugin_pod"}, + "componet_type": "private", "componet_ctx": "nfs", "componet_cmd": "git", + "componet_args": []interface{}{}, "inputs": []interface{}{ map[string]interface{}{"type": "text", "name": "dir", "imports": "plugin_dir", "view": "long"}, map[string]interface{}{"type": "select", "name": "cmd", "values": []interface{}{ "commit", "add", "checkout", @@ -282,6 +260,17 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心", map[string]interface{}{"type": "button", "value": "执行"}, }, }, + map[string]interface{}{"componet_name": "status", "componet_help": "git", + "componet_tmpl": "componet", "componet_view": "Context", "componet_init": "", + "componet_type": "private", "componet_ctx": "nfs", "componet_cmd": "git", + "componet_args": []interface{}{}, "inputs": []interface{}{ + map[string]interface{}{"type": "text", "name": "dir", "view": "long", "imports": "plugin_dir"}, + map[string]interface{}{"type": "select", "name": "cmd", "values": []interface{}{ + "branch", "status", "diff", "log", "update", "push", "init", + }}, + map[string]interface{}{"type": "button", "value": "执行"}, + }, + }, map[string]interface{}{"componet_name": "spide", "componet_help": "spide", "componet_tmpl": "componet", "componet_view": "Context", "componet_init": "", "componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route", @@ -296,7 +285,7 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心", "componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route", "componet_args": []interface{}{"$$", "context", "web", "post", "$$", "content_type", "application/json", "parse", "json"}, "inputs": []interface{}{ map[string]interface{}{"type": "text", "name": "pod", "imports": "plugin_pod"}, - map[string]interface{}{"type": "text", "name": "spide", "imports": "plugin_site"}, + map[string]interface{}{"type": "text", "name": "spide", "value": "zuo", "imports": "plugin_site"}, map[string]interface{}{"type": "text", "name": "url", "value": "/", "view": "long"}, map[string]interface{}{"type": "button", "value": "执行"}, }, @@ -313,6 +302,15 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心", }, }, "other": []interface{}{ + map[string]interface{}{"componet_name": "proc", "componet_help": "proc", + "componet_tmpl": "componet", "componet_view": "Company", "componet_init": "", + "componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route", + "componet_args": []interface{}{"$$", "context", "cli", "proc"}, "inputs": []interface{}{ + map[string]interface{}{"type": "text", "name": "pod", "value": "", "imports": "plugin_pod"}, + map[string]interface{}{"type": "text", "name": "cmd", "view": "long"}, + map[string]interface{}{"type": "button", "value": "执行"}, + }, + }, map[string]interface{}{"componet_name": "ifconfig", "componet_help": "ifconfig", "componet_tmpl": "componet", "componet_view": "Context", "componet_init": "", "componet_type": "private", "componet_ctx": "tcp", "componet_cmd": "ifconfig", diff --git a/usr/librarys/example.js b/usr/librarys/example.js index 6cc87cb7..5ed7f03e 100644 --- a/usr/librarys/example.js +++ b/usr/librarys/example.js @@ -601,6 +601,13 @@ function Plugin(page, pane, field) { } default: + if (item.type == "text") { + item.onclick = function(event) { + if (event.ctrlKey) { + action.value = kit.History.get("txt", -1).data + } + } + } args && count < args.length && (item.value = args[count++]||item.value||"") item.className = "args" } @@ -652,7 +659,7 @@ function Plugin(page, pane, field) { }) }, Runs: function(event, cb) { - event.Plugin = plugin, field.Run(event, kit.Selector(option, ".args", function(item, index) { + this.Clear(), event.Plugin = plugin, field.Run(event, kit.Selector(option, ".args", function(item, index) { return item.value }), function(msg) { typeof cb == "function" && cb(msg)