mirror of
https://shylinux.com/x/ContextOS
synced 2025-04-25 16:58:06 +08:00
fix ctx.message
This commit is contained in:
parent
c599beac02
commit
8d95363595
@ -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-----
|
@ -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-----
|
@ -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"])
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -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,
|
||||
}
|
||||
|
@ -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
|
||||
}},
|
||||
|
@ -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])
|
||||
|
@ -235,6 +235,7 @@ fieldset.item {
|
||||
}
|
||||
fieldset.item.select {
|
||||
background-color:gold;
|
||||
border:solid 2px red;
|
||||
}
|
||||
fieldset.item>div.output {
|
||||
overflow:auto;
|
||||
|
@ -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
|
||||
|
@ -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(" ")
|
||||
},
|
||||
|
Loading…
x
Reference in New Issue
Block a user