1
0
mirror of https://shylinux.com/x/ContextOS synced 2025-04-25 16:58:06 +08:00

opt ssh.componet

This commit is contained in:
shaoying 2019-06-27 20:23:28 +08:00
parent 5ea7465ae0
commit 37835b1561
6 changed files with 74 additions and 68 deletions

View File

@ -683,6 +683,7 @@ var version = struct {
} }
`, m.Time(), m.Conf("runtime", "node.route"), version.self+1)) `, m.Time(), m.Conf("runtime", "node.route"), version.self+1))
m.Append("directory", "")
return 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) { "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) {

View File

@ -4,5 +4,5 @@ var version = struct {
host string host string
self int self int
}{ }{
"2019-06-27 01:23:37", "com.mac", 2, "2019-06-27 17:30:49", "ZYB-20190522USI", 12,
} }

View File

@ -2,7 +2,6 @@ package mdb
import ( import (
"contexts/ctx" "contexts/ctx"
"net"
"time" "time"
"toolkit" "toolkit"
@ -102,9 +101,7 @@ var Index = &ctx.Context{Name: "mdb", Help: "数据中心",
if mdb, ok := m.Target().Server.(*MDB); m.Assert(ok) { if mdb, ok := m.Target().Server.(*MDB); m.Assert(ok) {
switch arg[0] { switch arg[0] {
case "conn": case "conn":
c, e := net.Dial(kit.Select("tcp", arg, 2), arg[1]) mdb.conn, e = redis.Dial(kit.Select("tcp", arg, 2), arg[1], redis.DialKeepAlive(time.Second*10))
m.Assert(e)
mdb.conn = redis.NewConn(c, time.Second*10, time.Second*10)
default: default:
if mdb.conn == nil { if mdb.conn == nil {
m.Echo("not open") m.Echo("not open")

View File

@ -487,6 +487,11 @@ func (nfs *NFS) Term(msg *ctx.Message, action string, args ...interface{}) *NFS
switch action { switch action {
case "init": case "init":
defer func() {
if e := recover(); e != nil {
m.Log("warn", "term init %s", e)
}
}()
termbox.Init() termbox.Init()
termbox.SetInputMode(termbox.InputEsc) termbox.SetInputMode(termbox.InputEsc)
termbox.SetInputMode(termbox.InputMouse) 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: 绝对路径"}, "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{}{ "grep": &ctx.Config{Name: "grep", Value: map[string]interface{}{
"list": map[string]interface{}{ "list": []interface{}{},
},
}, Help: "dir命令输出文件名的类型, name: 文件名, tree: 带缩进的文件名, path: 相对路径, full: 绝对路径"}, }, Help: "dir命令输出文件名的类型, name: 文件名, tree: 带缩进的文件名, path: 相对路径, full: 绝对路径"},
"git": &ctx.Config{Name: "git", Value: map[string]interface{}{ "git": &ctx.Config{Name: "git", Value: map[string]interface{}{
"args": []interface{}{"-C", "@git_dir"}, "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) { "grep": &ctx.Command{Name: "grep", Help: "", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
if len(arg) > 0 { if len(arg) > 0 {
switch arg[0]{ switch arg[0] {
case "add": case "add":
m.Confv("grep", []string{"list", arg[1]}, map[string]interface{}{ m.Confv("grep", "list.-2", map[string]interface{}{
"pos": 0, "pos": 0, "offset": 0, "file": arg[1],
"offset": 0,
"file": arg[2],
}) })
return return
case "head": case "head":
m.Confm("grep", "list", func(key string, value map[string]interface{}) { m.Confm("grep", "list", func(index int, value map[string]interface{}) {
if len(arg) == 1 || key == arg[1] { if len(arg) == 1 {
value["pos"] = 0
value["offset"] = 0 value["offset"] = 0
value["pos"] = 0
} }
}) })
return return
case "tail": case "tail":
m.Confm("grep", "list", func(key string, value map[string]interface{}) { m.Confm("grep", "list", func(index int, value map[string]interface{}) {
if len(arg) == 1 || key == arg[1] { if len(arg) == 1 {
value["pos"] = -1 value["pos"] = -1
value["offset"] = 0 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"])) f, e := os.Open(kit.Format(value["file"]))
m.Assert(e) m.Assert(e)
defer f.Close() defer f.Close()
@ -1330,9 +1332,9 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心",
// s, e := f.Stat() // s, e := f.Stat()
// m.Assert(e) // 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 { if kit.Int(value["pos"]) == -1 {
begin, e = f.Seek(0, 2) begin, e = f.Seek(0, 2)
} }
m.Assert(e) m.Assert(e)
@ -1340,8 +1342,9 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心",
bio := bufio.NewScanner(f) bio := bufio.NewScanner(f)
for i := 0; i < m.Optioni("page.limit") && bio.Scan(); i++ { for i := 0; i < m.Optioni("page.limit") && bio.Scan(); i++ {
text := bio.Text() text := bio.Text()
if len(arg) == 0 || strings.Contains(text, arg[0]){ if len(arg) == 0 || strings.Contains(text, arg[0]) {
m.Add("append", "key", key) 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", "pos",begin+int64(n))
// m.Add("append", "len",len(text)) // m.Add("append", "len",len(text))
// m.Add("append", "end",s.Size()) // m.Add("append", "end",s.Size())
@ -1350,11 +1353,11 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心",
} else { } else {
i-- i--
} }
n+=len(text)+1 n += len(text) + 1
value["offset"] = kit.Int(value["offset"]) + 1 value["offset"] = kit.Int(value["offset"]) + 1
} }
value["pos"] = begin + int64(n) value["pos"] = begin + int64(n)
}) })
m.Table() m.Table()
return return

View File

@ -46,7 +46,7 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
"timer": &ctx.Config{Name: "timer", Value: map[string]interface{}{"interval": "10s", "timer": ""}, Help: "断线重连"}, "timer": &ctx.Config{Name: "timer", Value: map[string]interface{}{"interval": "10s", "timer": ""}, Help: "断线重连"},
"componet": &ctx.Config{Name: "componet", Value: map[string]interface{}{ "componet": &ctx.Config{Name: "componet", Value: map[string]interface{}{
"company": []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_tmpl": "componet", "componet_view": "Company", "componet_init": "",
"componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route", "componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route",
"componet_args": []interface{}{"$$", "context", "cli", "system", "gg"}, "inputs": []interface{}{ "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{}{"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_tmpl": "componet", "componet_view": "Company", "componet_init": "",
"componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route", "componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route",
"componet_args": []interface{}{"$$", "context", "cli", "system", "gg"}, "inputs": []interface{}{ "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{}{"type": "button", "value": "执行"},
}, },
}, },
map[string]interface{}{"componet_name": "proc", "componet_help": "proc", map[string]interface{}{"componet_name": "script", "componet_help": "脚本",
"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",
"componet_tmpl": "componet", "componet_view": "Compile", "componet_init": "", "componet_tmpl": "componet", "componet_view": "Compile", "componet_init": "",
"componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route", "componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route",
"componet_args": []interface{}{"$$", "context", "cli", "upgrade"}, "inputs": []interface{}{ "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}, "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_tmpl": "componet", "componet_view": "Company", "componet_init": "",
"componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route", "componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route",
"componet_args": []interface{}{"$$", "context", "cli", "system", "php", "cmd_parse", "format"}, "inputs": []interface{}{ "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{}{"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_tmpl": "componet", "componet_view": "Company", "componet_init": "",
"componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route", "componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route",
"componet_args": []interface{}{"$$", "context", "nfs", "grep"}, "inputs": []interface{}{ "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": "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{}{"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_tmpl": "componet", "componet_view": "Company", "componet_init": "",
"componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route", "componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route",
"componet_args": []interface{}{"$$", "context", "mdb", "redis"}, "inputs": []interface{}{ "componet_args": []interface{}{"$$", "context", "mdb", "redis"}, "inputs": []interface{}{
@ -171,12 +162,12 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
}, },
}, },
"favor": []interface{}{ "favor": []interface{}{
map[string]interface{}{"componet_name": "salary", "componet_help": "计算工资", map[string]interface{}{"componet_name": "clip", "componet_help": "粘贴板",
"componet_tmpl": "componet", "componet_view": "Salary", "componet_init": "", "componet_tmpl": "componet", "componet_view": "Context", "componet_init": "",
"componet_type": "public", "componet_ctx": "web.chat", "componet_cmd": "salary", "componet_type": "public", "componet_ctx": "aaa", "componet_cmd": "clip",
"componet_args": []interface{}{}, "inputs": []interface{}{ "componet_args": []interface{}{}, "inputs": []interface{}{
map[string]interface{}{"label": "total", "type": "text", "name": "text"}, map[string]interface{}{"type": "text", "name": "content", "view": "long"},
map[string]interface{}{"label": "base", "type": "text", "name": "total"}, map[string]interface{}{"type": "button", "value": "运行"},
}, },
}, },
map[string]interface{}{"componet_name": "qrcode", "componet_help": "生成二维码", 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{}{"label": "content", "type": "text", "name": "content"},
}, },
}, },
map[string]interface{}{"componet_name": "clip", "componet_help": "粘贴板", map[string]interface{}{"componet_name": "salary", "componet_help": "计算工资",
"componet_tmpl": "componet", "componet_view": "Context", "componet_init": "", "componet_tmpl": "componet", "componet_view": "Salary", "componet_init": "",
"componet_type": "public", "componet_ctx": "aaa", "componet_cmd": "clip", "componet_type": "public", "componet_ctx": "web.chat", "componet_cmd": "salary",
"componet_args": []interface{}{}, "inputs": []interface{}{ "componet_args": []interface{}{}, "inputs": []interface{}{
map[string]interface{}{"type": "text", "name": "content", "view": "long"}, map[string]interface{}{"label": "total", "type": "text", "name": "text"},
map[string]interface{}{"type": "button", "value": "运行"}, map[string]interface{}{"label": "base", "type": "text", "name": "total"},
}, },
}, },
map[string]interface{}{"componet_name": "location", "componet_help": "地理位置", map[string]interface{}{"componet_name": "location", "componet_help": "地理位置",
@ -257,23 +248,10 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
"exports": []interface{}{"dir", "filename", "dir"}, "exports": []interface{}{"dir", "filename", "dir"},
"dir_root": []interface{}{"/"}, "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", map[string]interface{}{"componet_name": "commit", "componet_help": "git",
"componet_tmpl": "componet", "componet_view": "Context", "componet_init": "", "componet_tmpl": "componet", "componet_view": "Context", "componet_init": "",
"componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route", "componet_type": "private", "componet_ctx": "nfs", "componet_cmd": "git",
"componet_args": []interface{}{"$$", "git"}, "inputs": []interface{}{ "componet_args": []interface{}{}, "inputs": []interface{}{
map[string]interface{}{"type": "text", "name": "pod", "imports": "plugin_pod"},
map[string]interface{}{"type": "text", "name": "dir", "imports": "plugin_dir", "view": "long"}, map[string]interface{}{"type": "text", "name": "dir", "imports": "plugin_dir", "view": "long"},
map[string]interface{}{"type": "select", "name": "cmd", "values": []interface{}{ map[string]interface{}{"type": "select", "name": "cmd", "values": []interface{}{
"commit", "add", "checkout", "commit", "add", "checkout",
@ -282,6 +260,17 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
map[string]interface{}{"type": "button", "value": "执行"}, 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", map[string]interface{}{"componet_name": "spide", "componet_help": "spide",
"componet_tmpl": "componet", "componet_view": "Context", "componet_init": "", "componet_tmpl": "componet", "componet_view": "Context", "componet_init": "",
"componet_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route", "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_type": "private", "componet_ctx": "ssh", "componet_cmd": "_route",
"componet_args": []interface{}{"$$", "context", "web", "post", "$$", "content_type", "application/json", "parse", "json"}, "inputs": []interface{}{ "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": "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": "text", "name": "url", "value": "/", "view": "long"},
map[string]interface{}{"type": "button", "value": "执行"}, map[string]interface{}{"type": "button", "value": "执行"},
}, },
@ -313,6 +302,15 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
}, },
}, },
"other": []interface{}{ "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", map[string]interface{}{"componet_name": "ifconfig", "componet_help": "ifconfig",
"componet_tmpl": "componet", "componet_view": "Context", "componet_init": "", "componet_tmpl": "componet", "componet_view": "Context", "componet_init": "",
"componet_type": "private", "componet_ctx": "tcp", "componet_cmd": "ifconfig", "componet_type": "private", "componet_ctx": "tcp", "componet_cmd": "ifconfig",

View File

@ -601,6 +601,13 @@ function Plugin(page, pane, field) {
} }
default: 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||"") args && count < args.length && (item.value = args[count++]||item.value||"")
item.className = "args" item.className = "args"
} }
@ -652,7 +659,7 @@ function Plugin(page, pane, field) {
}) })
}, },
Runs: function(event, cb) { 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 return item.value
}), function(msg) { }), function(msg) {
typeof cb == "function" && cb(msg) typeof cb == "function" && cb(msg)