From 8d95363595e05ef9073b9a35ffdc854302507293 Mon Sep 17 00:00:00 2001 From: shaoying Date: Sat, 21 Sep 2019 10:57:51 +0800 Subject: [PATCH] fix ctx.message --- etc/pem/cert.pem | 18 ----- etc/pem/key.pem | 15 ---- src/contexts/cli/cli.go | 156 +++++++++++++++++++----------------- src/contexts/cli/version.go | 2 +- src/contexts/ctx/ctx.go | 10 +-- src/plugin/tmux/index.go | 21 ++--- usr/librarys/example.css | 1 + usr/librarys/example.js | 6 +- usr/librarys/toolkit.js | 2 +- 9 files changed, 105 insertions(+), 126 deletions(-) delete mode 100644 etc/pem/cert.pem delete mode 100644 etc/pem/key.pem diff --git a/etc/pem/cert.pem b/etc/pem/cert.pem deleted file mode 100644 index 98139d4c..00000000 --- a/etc/pem/cert.pem +++ /dev/null @@ -1,18 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIC9TCCAl4CCQCHSqshz+HyLTANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMC -R0IxHzAdBgNVBAgTFlRlc3QgU3RhdGUgb3IgUHJvdmluY2UxFjAUBgNVBAcTDVRl -c3QgTG9jYWxpdHkxGjAYBgNVBAoTEU9yZ2FuaXphdGlvbiBOYW1lMSEwHwYDVQQL -ExhPcmdhbml6YXRpb25hbCBVbml0IE5hbWUxFDASBgNVBAMTC0NvbW1vbiBOYW1l -MSEwHwYJKoZIhvcNAQkBFhJ0ZXN0QGVtYWlsLmFkZHJlc3MwHhcNMTcxMDMxMTYw -NDM5WhcNMTcxMTMwMTYwNDM5WjCBvjELMAkGA1UEBhMCR0IxHzAdBgNVBAgTFlRl -c3QgU3RhdGUgb3IgUHJvdmluY2UxFjAUBgNVBAcTDVRlc3QgTG9jYWxpdHkxGjAY -BgNVBAoTEU9yZ2FuaXphdGlvbiBOYW1lMSEwHwYDVQQLExhPcmdhbml6YXRpb25h -bCBVbml0IE5hbWUxFDASBgNVBAMTC0NvbW1vbiBOYW1lMSEwHwYJKoZIhvcNAQkB -FhJ0ZXN0QGVtYWlsLmFkZHJlc3MwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB -AOw3gvdtfKWkSEl2l30V7irBhkrD6IVd6AzxaAYL97giDglPvu7ng2PXYlF5pjjf -mxDYtjAGuq1itnN0LKRe6CjUOuGtC2KMlZ8121fQCNw8M6TLPSpDjVuzysaUb2ds -+OClb0uC8SmSy3bOCGsicI77yXvEuKFkm43ikyVounmRAgMBAAEwDQYJKoZIhvcN -AQELBQADgYEAkOk7DVR/XgJdMSXXGd/OtWmTfVp2sIyyy37zSoc4uRFWwPqbzLPf -NgUKGNHEYvJY7/bWQ3p2D+u1U2PUfv/t6SQcAu3Nkw7sd7PoeeDZcRau84NevgoR -HfQKirJQgZd0hKFwiBnDspYbi8IL2mHEJOlzw1priY9v8MVIscyFVbE= ------END CERTIFICATE----- diff --git a/etc/pem/key.pem b/etc/pem/key.pem deleted file mode 100644 index ae38b53e..00000000 --- a/etc/pem/key.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIICXwIBAAKBgQDsN4L3bXylpEhJdpd9Fe4qwYZKw+iFXegM8WgGC/e4Ig4JT77u -54Nj12JReaY435sQ2LYwBrqtYrZzdCykXugo1DrhrQtijJWfNdtX0AjcPDOkyz0q -Q41bs8rGlG9nbPjgpW9LgvEpkst2zghrInCO+8l7xLihZJuN4pMlaLp5kQIDAQAB -AoGBAOasYwG68pFTN6A95jupsdYg/EKAw82RYa1aBUp6X2N6JhjjvkHQ5ZcXWxTT -ZgZ+HhC6gFewCpaNIjzmwz2UzMJJ4empijEbJFuwZCq4M/Adca2BhduV2YIwqvi8 -MHGmHMB81zYKA0E4j+vahJnn8aAqSoPnaM9MBw5vhggU5YodAkEA/IwRTVNOHmIm -1XCfvPoSpDBpSJh6V1mPyBuPs/2Fr52j+L+6qOhNML0O063az44/dR8RZytcaGYQ -7EByYbeCZwJBAO9ySW4TbDLRejSmFWHmflrnjV7s4DqE6OBbCRJF3aIleELYaTPC -Q0kOKRZTCr1PwopIdAOOOgaSWgsX75zU2UcCQQDMCwb3qLTXC4pArMwCzTE+gvat -drRx2qS2kr4aOF1ItF8E3TOcwIONO1K9aBv/0fgnUsCm0HvKxZwqpS9FEBVFAkEA -ntgeRlu0J3I3s72J6cxSflOlwRc7GRcatdsuhWS7xtk8knumLqPspwYx05F7SmMj -F0FBVSqA6+MiwME8P7oj+QJBAJFv2HKAaGElXkaJJzmQPHGJdGLUMb9oHXPtzcpz -HLtT2kHK1LlQqsOEacivPCKtnnLkX6Xsl8pMpe8EV43t718= ------END RSA PRIVATE KEY----- diff --git a/src/contexts/cli/cli.go b/src/contexts/cli/cli.go index c02250b7..d96bc845 100644 --- a/src/contexts/cli/cli.go +++ b/src/contexts/cli/cli.go @@ -27,6 +27,78 @@ type CLI struct { Context *ctx.Context } +func format(m *ctx.Message, out *bytes.Buffer) { + switch m.Option("cmd_parse") { + case "format": + var data interface{} + if json.Unmarshal(out.Bytes(), &data) == nil { + if b, e := json.MarshalIndent(data, "", " "); e == nil { + m.Echo(string(b)) + break + } + } + m.Echo(out.String()) + case "json": + var data interface{} + if json.Unmarshal(out.Bytes(), &data) == nil { + msg := m.Spawn().Put("option", "data", data).Cmd("trans", "data", "") + m.Copy(msg, "append").Copy(msg, "result") + } else { + m.Echo(out.String()) + } + + case "csv": + data, e := csv.NewReader(out).ReadAll() + m.Assert(e) + for i := 1; i < len(data); i++ { + for j := 0; j < len(data[i]); j++ { + m.Add("append", data[0][j], data[i][j]) + } + } + m.Table() + case "cli": + read := csv.NewReader(out) + read.Comma = ' ' + read.TrimLeadingSpace = true + read.FieldsPerRecord = 4 + data, e := read.ReadAll() + m.Assert(e) + for i := 1; i < len(data); i++ { + for j := 0; j < len(data[i]); j++ { + m.Add("append", data[0][j], data[i][j]) + } + } + m.Table() + case "cut": + c := byte(kit.Select(" ", m.Optionv("cmd_parse"), 2)[0]) + + bio := bufio.NewScanner(out) + + heads := []string{} + if h := kit.Select("", m.Optionv("cmd_parse"), 3); h != "" { + heads = strings.Split(h, " ") + } else if bio.Scan() { + heads = kit.Split(bio.Text(), c, kit.Int(kit.Select("-1", m.Optionv("cmd_parse"), 1))) + } + + for bio.Scan() { + for i, v := range kit.Split(bio.Text(), c, len(heads)) { + m.Add("append", heads[i], v) + } + } + m.Table() + + default: + var data interface{} + if json.Unmarshal(out.Bytes(), &data) == nil { + if b, e := json.MarshalIndent(data, "", " "); e == nil { + m.Echo(string(b)) + break + } + } + m.Echo(out.String()) + } +} func (cli *CLI) schedule(m *ctx.Message) string { first, timer := "", int64(1<<50) for k, v := range m.Confv("timer", "list").(map[string]interface{}) { @@ -231,10 +303,10 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心", "cmd_active(true/false): 是否交互", "cmd_daemon(true/false): 是否守护", "cmd_dir: 工作目录", - "cmd_env: 环境变量", + "cmd_env key value: 环境变量", "cmd_log: 输出日志", - "cmd_temp: 缓存结果", - "cmd_parse: 解析结果", + "cmd_temp arg...: 缓存结果", + "cmd_parse format|json|csv|cli|cut [count sep]: 解析结果", "cmd_error: 输出错误", }, Form: map[string]int{ "cmd_timeout": 1, @@ -244,7 +316,7 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心", "cmd_env": 2, "cmd_log": 1, "cmd_temp": -1, - "cmd_parse": 3, + "cmd_parse": 4, "cmd_error": 0, "cmd_select": -1, "app_log": 1, @@ -370,81 +442,17 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心", // 输出错误 if m.Has("cmd_error") { m.Echo(err.String()) + return + } + + // 解析结果 + if format(m, out); m.Has("cmd_select") { + m.Cmd("select", m.Meta["cmd_select"]) } // 缓存结果 if m.Options("cmd_temp") { m.Put("option", "data", out.String()).Cmdy("mdb.temp", "script", strings.Join(arg, " "), "data", "data", m.Meta["cmd_temp"]) - return - } - - // 解析结果 - switch m.Option("cmd_parse") { - case "format": - var data interface{} - if json.Unmarshal(out.Bytes(), &data) == nil { - if b, e := json.MarshalIndent(data, "", " "); e == nil { - m.Echo(string(b)) - break - } - } - m.Echo(out.String()) - case "json": - var data interface{} - if json.Unmarshal(out.Bytes(), &data) == nil { - msg := m.Spawn().Put("option", "data", data).Cmd("trans", "data", "") - m.Copy(msg, "append").Copy(msg, "result") - } else { - m.Echo(out.String()) - } - - case "csv": - data, e := csv.NewReader(out).ReadAll() - m.Assert(e) - for i := 1; i < len(data); i++ { - for j := 0; j < len(data[i]); j++ { - m.Add("append", data[0][j], data[i][j]) - } - } - m.Table() - - case "cli": - read := csv.NewReader(out) - read.Comma = ' ' - read.TrimLeadingSpace = true - read.FieldsPerRecord = 4 - data, e := read.ReadAll() - m.Assert(e) - for i := 1; i < len(data); i++ { - for j := 0; j < len(data[i]); j++ { - m.Add("append", data[0][j], data[i][j]) - } - } - m.Table() - - case "cut": - bio := bufio.NewScanner(out) - bio.Scan() - c := byte(kit.Select(" ", m.Optionv("cmd_parse"), 2)[0]) - for heads := kit.Split(bio.Text(), c, kit.Int(kit.Select("-1", m.Optionv("cmd_parse"), 1))); bio.Scan(); { - for i, v := range kit.Split(bio.Text(), c, len(heads)) { - m.Add("append", heads[i], v) - } - } - m.Table() - - default: - var data interface{} - if json.Unmarshal(out.Bytes(), &data) == nil { - if b, e := json.MarshalIndent(data, "", " "); e == nil { - m.Echo(string(b)) - break - } - } - m.Echo(out.String()) - } - if m.Has("cmd_select") { - m.Cmd("select", m.Meta["cmd_select"]) } }) diff --git a/src/contexts/cli/version.go b/src/contexts/cli/version.go index 1b599bb9..6a14ba68 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-09-20 16:49:11", "centos", 563, + "2019-09-21 10:07:14", "com.mac", 573, } diff --git a/src/contexts/ctx/ctx.go b/src/contexts/ctx/ctx.go index d04b5f30..80b96906 100644 --- a/src/contexts/ctx/ctx.go +++ b/src/contexts/ctx/ctx.go @@ -750,12 +750,13 @@ var Index = &Context{Name: "ctx", Help: "模块中心", Server: &CTX{}, if ms[i] == nil { continue } - if m.Push("code", ms[i].code); ms[i].message != nil { - m.Push("message", ms[i].message.code) + if ms[i].message != nil { + m.Push("msg", ms[i].message.code) } else { - m.Push("message", 0) + m.Push("msg", 0) } + m.Push("code", ms[i].code) m.Push("time", ms[i].Time()) m.Push("source", ms[i].source.Name) m.Push("target", ms[i].target.Name) @@ -780,8 +781,7 @@ var Index = &Context{Name: "ctx", Help: "模块中心", Server: &CTX{}, case "free": msg.Free() default: - msg = msg.Spawn().Cmd(arg) - m.Copy(msg, "append").Copy(msg, "result") + m.Cmd(arg) } return }}, diff --git a/src/plugin/tmux/index.go b/src/plugin/tmux/index.go index 49b6a60d..e55bcaea 100644 --- a/src/plugin/tmux/index.go +++ b/src/plugin/tmux/index.go @@ -1,14 +1,14 @@ package main import ( - "contexts/cli" - "contexts/ctx" - "toolkit" + "contexts/cli" + "contexts/ctx" + "toolkit" + "fmt" + "os" "strings" "time" - "fmt" - "os" ) var Index = &ctx.Context{Name: "tmux", Help: "终端管理", @@ -185,7 +185,7 @@ var Index = &ctx.Context{Name: "tmux", Help: "终端管理", time.Sleep(kit.Duration(m.Conf("mux", "cmd_timeout"))) list := strings.Split(m.Cmdx("cli.system", "tmux", "capture-pane", "-t", target, "-p"), "\n") m.Log("info", "current %v", list) - for j := len(list)-1; j >= 0; j-- { + for j := len(list) - 1; j >= 0; j-- { if list[j] != "" { if list[j] == prompt { i = 1000 @@ -219,11 +219,14 @@ var Index = &ctx.Context{Name: "tmux", Help: "终端管理", return }}, "buf": &ctx.Command{Name: "buf", Help: "缓存管理", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) { + if len(arg) > 0 { + msg := m.Cmd(".buf") + arg[0] = msg.Meta[msg.Meta["append"][0]][0] + } + switch len(arg) { case 0: - m.Cmdy("cli.system", "tmux", "list-buffer", "cmd_parse", "cut", 3, ":") - m.Meta["append"][0] = "cur" - m.Meta["cur"] = m.Meta["0"] + m.Cmdy("cli.system", "tmux", "list-buffer", "cmd_parse", "cut", 3, ":", "cur bytes text") case 2: m.Cmdy("cli.system", "tmux", "set-buffer", "-b", arg[0], arg[1]) diff --git a/usr/librarys/example.css b/usr/librarys/example.css index 23c22569..34050d0a 100644 --- a/usr/librarys/example.css +++ b/usr/librarys/example.css @@ -235,6 +235,7 @@ fieldset.item { } fieldset.item.select { background-color:gold; + border:solid 2px red; } fieldset.item>div.output { overflow:auto; diff --git a/usr/librarys/example.js b/usr/librarys/example.js index 9c86096d..cbf3095e 100644 --- a/usr/librarys/example.js +++ b/usr/librarys/example.js @@ -724,18 +724,18 @@ function Plugin(page, pane, field, runs) { var input = {type: "input", name: name, data: item} switch (item.type) { case "select": - item.className = "args" + kit.classList.add(item, "args") input.type = "select", input.list = item.values.map(function(value) { return {type: "option", value: value, inner: value} }) input.value = item.value break case "textarea": + kit.classList.add(item, "args") input.type = "textarea", item.style = "height:100px;"+"width:"+(pane.target.clientWidth-30)+"px" - item.className = "args" // no break case "text": - item.className = "args" + kit.classList.add(item, "args") item.autocomplete = "off" var count = kit.Selector(option, ".args").length diff --git a/usr/librarys/toolkit.js b/usr/librarys/toolkit.js index e1505164..2abb121b 100644 --- a/usr/librarys/toolkit.js +++ b/usr/librarys/toolkit.js @@ -50,7 +50,7 @@ kit = toolkit = { add: function(obj) { var list = obj.className? obj.className.split(" "): [] for (var i = 1; i < arguments.length; i++) { - arguments[i] && list.push(arguments[i]) + arguments[i] && list.indexOf(arguments[i]) == - 1 && list.push(arguments[i]) } return obj.className = list.join(" ") },