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

tce add some

This commit is contained in:
shaoying 2018-09-26 23:07:26 +08:00
parent e356b6dbf1
commit f6cf48ac0f
3 changed files with 98 additions and 18 deletions

View File

@ -6,7 +6,6 @@ install:
@go get github.com/nsf/termbox-go @go get github.com/nsf/termbox-go
@go get github.com/skip2/go-qrcode @go get github.com/skip2/go-qrcode
@go get github.com/gomarkdown/markdown @go get github.com/gomarkdown/markdown
@cp etc/shy.vim ~/.vim/syntax/
@touch etc/local.shy @touch etc/local.shy
@touch etc/local_exit.shy @touch etc/local_exit.shy
@touch etc/init.shy @touch etc/init.shy
@ -43,15 +42,16 @@ back_dotsfile:
cp ~/.zshrc $(DOTS) cp ~/.zshrc $(DOTS)
cp ~/.tmux.conf $(DOTS) cp ~/.tmux.conf $(DOTS)
cp ~/.vimrc $(DOTS) cp ~/.vimrc $(DOTS)
cp ~/.vim/syntax/shy.vim etc/ cp ~/.vim/syntax/shy.vim $(DOTS)
git status -sb $(DOTS)
load_dotsfile: ~/.zshrc ~/.tmux.conf ~/.vimrc load_dotsfile: ~/.zshrc ~/.tmux.conf ~/.vimrc ~/.vim/syntax/shy.vim
~/.zshrc: $(DOTS)/.zshrc ~/.zshrc: $(DOTS)/.zshrc
cp $(DOTS)/.zshrc ~/ cp $(DOTS)/.zshrc ~/
~/.tmux.conf: $(DOTS)/.tmux.conf ~/.tmux.conf: $(DOTS)/.tmux.conf
cp $(DOTS)/.tmux.conf ~/ cp $(DOTS)/.tmux.conf ~/
~/.vimrc: $(DOTS)/.vimrc ~/.vimrc: $(DOTS)/.vimrc
cp $(DOTS)/.vimrc ~/ cp $(DOTS)/.vimrc ~/
~/.vim/syntax/shy.vim: etc/shy.vim ~/.vim/syntax/shy.vim: $(DOTS)/shy.vim
cp etc/shy.vim ~/.vim/syntax/ cp $(DOTS)/shy.vim ~/.vim/syntax/

View File

@ -587,7 +587,7 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
"get": &ctx.Command{ "get": &ctx.Command{
Name: "get [method GET|POST] [file name filename] url arg...", Name: "get [method GET|POST] [file name filename] url arg...",
Help: "访问服务, method: 请求方法, file: 发送文件, url: 请求地址, arg: 请求参数", Help: "访问服务, method: 请求方法, file: 发送文件, url: 请求地址, arg: 请求参数",
Form: map[string]int{"method": 1, "file": 2, "type": 1, "body": 1}, Form: map[string]int{"method": 1, "file": 2, "type": 1, "body": 1, "fields": 1},
Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) { Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
if web, ok := m.Target().Server.(*WEB); m.Assert(ok) { // {{{ if web, ok := m.Target().Server.(*WEB); m.Assert(ok) { // {{{
if web.client == nil { if web.client == nil {
@ -718,23 +718,62 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
m.Assert(e) m.Assert(e)
if res.Header.Get("Content-Type") == "application/json" { if res.Header.Get("Content-Type") == "application/json" {
result := map[string]interface{}{} var result interface{}
json.Unmarshal(buf, &result) json.Unmarshal(buf, &result)
for k, v := range result { switch ret := result.(type) {
case map[string]interface{}:
for k, v := range ret {
switch value := v.(type) { switch value := v.(type) {
case string: case string:
m.Append(k, value) m.Append(k, value)
case float64: case float64:
m.Append(k, fmt.Sprintf("%d", int(value))) m.Append(k, fmt.Sprintf("%d", int(value)))
default:
m.Put("append", k, value)
} }
} }
m.Table()
return
case []interface{}:
fields := map[string]bool{}
for _, k := range strings.Split(m.Option("fields"), " ") {
if k != "" {
fields[k] = true
}
m.Meta["append"] = append(m.Meta["append"], k)
}
for _, r := range ret {
if rr, ok := r.(map[string]interface{}); ok {
for k, v := range rr {
switch value := v.(type) {
case string:
if _, ok := fields[k]; len(fields) == 0 || ok {
m.Add("append", k, strings.Replace(value, "\n", " ", -1))
}
case float64:
if _, ok := fields[k]; len(fields) == 0 || ok {
m.Add("append", k, strings.Replace(fmt.Sprintf("%d", int(value)), "\n", " ", -1))
}
case map[string]interface{}:
for kk, vv := range value {
key := k + "." + kk
if _, ok := fields[key]; len(fields) == 0 || ok {
m.Add("append", key, strings.Replace(fmt.Sprintf("%v", vv), "\n", " ", -1))
}
}
}
}
}
}
m.Table()
return
}
} }
result := string(buf) result := string(buf)
m.Echo("%s", result) m.Echo("%s", result)
m.Append("response", result) // m.Append("response", result)
} // }}} } // }}}
}}, }},
"post": &ctx.Command{Name: "post", Help: "访问服务", "post": &ctx.Command{Name: "post", Help: "访问服务",
@ -1203,15 +1242,24 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
"/json": &ctx.Command{Name: "/json", Help: "json响应", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) { "/json": &ctx.Command{Name: "/json", Help: "json响应", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
w := m.Optionv("response").(http.ResponseWriter) // {{{ w := m.Optionv("response").(http.ResponseWriter) // {{{
meta := map[string][]string{} meta := map[string]interface{}{}
if len(m.Meta["result"]) > 0 { if len(m.Meta["result"]) > 0 {
meta["result"] = m.Meta["result"] meta["result"] = m.Meta["result"]
} }
if len(m.Meta["append"]) > 0 { if len(m.Meta["append"]) > 0 {
meta["append"] = m.Meta["append"] meta["append"] = m.Meta["append"]
for _, v := range m.Meta["append"] { for _, v := range m.Meta["append"] {
m.Log("json", "won %v %v", v, m.Meta[v])
if _, ok := m.Data[v]; ok {
meta[v] = m.Data[v]
m.Log("json", "1won %v %v", v, meta[v])
m.Log("json", "1won %v %v", v, meta[v], m.Meta[v])
} else if _, ok := m.Meta[v]; ok {
m.Log("json", "2won %v %v", v, meta[v])
meta[v] = m.Meta[v] meta[v] = m.Meta[v]
} }
m.Log("json", "won %v %v", v, meta[v])
}
} }
if b, e := json.Marshal(meta); m.Assert(e) { if b, e := json.Marshal(meta); m.Assert(e) {
@ -1554,6 +1602,38 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
msg.Cmd("get", "method", "POST", "evaluating_add/", "questions", qs) msg.Cmd("get", "method", "POST", "evaluating_add/", "questions", qs)
m.Add("append", "hi", "hello") m.Add("append", "hi", "hello")
}}, }},
"/lookup": &ctx.Command{Name: "user", Help: "应用示例", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
if len(arg) > 0 {
m.Option("service", arg[0])
}
msg := m.Sess("cli").Cmd("system", "sd", "lookup", m.Option("service"))
rs := strings.Split(msg.Result(0), "\n")
i := 0
for ; i < len(rs); i++ {
if len(rs[i]) == 0 {
break
}
fields := strings.SplitN(rs[i], ": ", 2)
m.Append(fields[0], fields[1])
}
lists := []interface{}{}
for i += 2; i < len(rs); i++ {
fields := strings.SplitN(rs[i], " ", 3)
if len(fields) < 3 {
break
}
lists = append(lists, map[string]interface{}{
"ip": fields[0],
"port": fields[1],
"tags": fields[2],
})
}
m.Appendv("lists", lists)
m.Log("log", "%v", lists)
}},
}, },
} }