From 5c70078760f214b42e7bcfa6207c5c6cd62f5e5d Mon Sep 17 00:00:00 2001 From: shaoying Date: Fri, 26 Jul 2019 17:20:55 +0800 Subject: [PATCH] add 9095 --- bin/boot.sh | 4 ++-- bin/node.sh | 2 +- src/contexts/cli/cli.go | 7 +++--- src/contexts/cli/version.go | 2 +- src/contexts/nfs/nfs.go | 5 +--- src/contexts/nfs/term.go | 7 ++++++ src/contexts/ssh/ssh.go | 47 +++++++++++++++++++++++++------------ src/contexts/web/web.go | 3 +-- 8 files changed, 48 insertions(+), 29 deletions(-) diff --git a/bin/boot.sh b/bin/boot.sh index f07a9009..1ff28757 100755 --- a/bin/boot.sh +++ b/bin/boot.sh @@ -38,8 +38,8 @@ install() { target=system && [ -n "$2" ] && target=$2 wget -O ${ctx_app} "$ctx_dev/publish/${ctx_app}?GOOS=$GOOS&GOARCH=$GOARCH" && chmod a+x ${ctx_app} \ - && ./${ctx_app} upgrade ${target} && ${md5} ${ctx_app} \ - && mv ${ctx_app} bin/${ctx_app} + && ${md5} ${ctx_app} && ./${ctx_app} upgrade ${target} \ + && mv ${ctx_app} bin/${ctx_app} mkdir -p usr/script && touch usr/script/local.shy && cd etc && ln -s ../usr/script/local.shy . } diff --git a/bin/node.sh b/bin/node.sh index a40bee0d..a03c06d9 100755 --- a/bin/node.sh +++ b/bin/node.sh @@ -1,5 +1,5 @@ #! /bin/bash -export ctx_box=${ctx_box:="http://localhost:9094"} +export ctx_box=${ctx_box:="http://localhost:9095"} [ -f bin/boot.sh ] && source bin/boot.sh || source boot.sh diff --git a/src/contexts/cli/cli.go b/src/contexts/cli/cli.go index 0282f707..b447ccd9 100644 --- a/src/contexts/cli/cli.go +++ b/src/contexts/cli/cli.go @@ -64,7 +64,7 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心", "web_port", "ssh_port", }, "boot": map[string]interface{}{ - "web_port": ":9094", + "web_port": ":9095", "ssh_port": ":9090", "username": "shy", }, @@ -761,11 +761,10 @@ func main() { m.Append("time", m.Time()) m.Append("code", code) m.Echo(", wait 1s\n").Table() - m.Gos(m, func(m *ctx.Message) { - defer os.Exit(kit.Int(code)) m.Cmd("ctx._exit") - time.Sleep(time.Second * 1) + time.Sleep(time.Second) + os.Exit(kit.Int(code)) }) return }}, diff --git a/src/contexts/cli/version.go b/src/contexts/cli/version.go index 9f0da663..67212f85 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-07-26 02:43:29", "com.mac_15", 217, + "2019-07-26 16:10:30", "ZYB-20190522USI", 265, } diff --git a/src/contexts/nfs/nfs.go b/src/contexts/nfs/nfs.go index ea1b0cad..d87bd5f5 100644 --- a/src/contexts/nfs/nfs.go +++ b/src/contexts/nfs/nfs.go @@ -1102,9 +1102,6 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心", }}, "source": &ctx.Command{Name: "source [script|stdio|snippet]", Help: "解析脚本, script: 脚本文件, stdio: 命令终端, snippet: 代码片段", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) { - if m.Options("local.shy") { - return - } if len(arg) == 0 { m.Cmdy("dir", "src", "time", "line", "path", "dir_deep", "dir_reg", ".*\\.(sh|shy|py)$") return @@ -1150,7 +1147,7 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心", return }}, - "socket": &ctx.Command{Name: "socket listen|dial args...", Help: "启动文件服务, args: 参考tcp模块, listen命令的参数", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) { + "socket": &ctx.Command{Name: "remote listen|dial args...", Help: "启动文件服务, args: 参考tcp模块, listen命令的参数", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) { if _, ok := m.Target().Server.(*NFS); m.Assert(ok) { //{{{ m.Sess("tcp").Call(func(msg *ctx.Message) *ctx.Message { if msg.Has("node.port") { diff --git a/src/contexts/nfs/term.go b/src/contexts/nfs/term.go index a2789c5f..9b6ecad2 100644 --- a/src/contexts/nfs/term.go +++ b/src/contexts/nfs/term.go @@ -331,6 +331,13 @@ func (nfs *NFS) Term(msg *ctx.Message, action string, args ...interface{}) *NFS // m.Log("debug", "%s %v", action, args) switch action { + case "exit": + if m.Caps("termbox") { + termbox.Close() + } + m.Caps("termbox", false) + return nfs + case "init": defer func() { if e := recover(); e != nil { diff --git a/src/contexts/ssh/ssh.go b/src/contexts/ssh/ssh.go index 50bcd4ea..fb350af6 100644 --- a/src/contexts/ssh/ssh.go +++ b/src/contexts/ssh/ssh.go @@ -354,7 +354,6 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心", }, }, Help: "组件列表"}, - "file": &ctx.Config{Name: "file", Value: map[string]interface{}{}, Help: "共享文件"}, "flow": &ctx.Config{Name: "flow", Value: map[string]interface{}{}, Help: "聊天群组"}, "work": &ctx.Config{Name: "work", Value: map[string]interface{}{}, Help: "工作信息"}, "node": &ctx.Config{Name: "node", Value: map[string]interface{}{}, Help: "节点信息"}, @@ -423,7 +422,7 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心", } return }}, - "user": &ctx.Command{Name: "user [init|create [node]]", Help: "用户", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) { + "user": &ctx.Command{Name: "user [init|create|trust [node]]", Help: "用户管理, init: 用户节点, create: 用户创建, trust: 用户授权", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) { if len(arg) == 0 { m.Echo(m.Conf("runtime", "user.route")) return @@ -455,11 +454,21 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心", } m.Cmd("aaa.user", "root", m.Conf("runtime", "user.name")) m.Echo(m.Conf("runtime", "user.cert")) + + case "trust": + if len(arg) > 1 { + m.Conf("trust", arg[1], kit.Right(arg[2])) + } + if len(arg) > 1 { + m.Cmdy("ctx.config", "trust", arg[1]) + } else { + m.Cmdy("ctx.config", "trust") + } } m.Append("user.route", m.Conf("runtime", "user.route")) return }}, - "work": &ctx.Command{Name: "work [serve|create|search]", Help: "工作", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) { + "work": &ctx.Command{Name: "work [serve|create|search]", Help: "工作管理, serve: 创建组织, create: 创建员工, search: 搜索员工", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) { if len(arg) == 0 { m.Confm("work", func(key string, value map[string]interface{}) { m.Add("append", "key", key) @@ -492,15 +501,24 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心", m.Echo("error: %s from %s", name, work) } + case "share": + user := m.Conf("runtime", "node.route") + name := kit.Select(m.Conf("runtime", "user.name"), arg, 1) + work := kit.Select(m.Conf("runtime", "work.route"), arg, 2) + + if n := m.Cmdx("ssh._route", work, "_check", "work", name, user); n != "" { + m.Echo(n) + } + case "search": m.Cmdy("ssh._route", m.Conf("runtime", "work.route"), "_check", "work", "search", arg[1:]) } return }}, - "tool": &ctx.Command{Name: "tool", Help: "工具", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) { + "tool": &ctx.Command{Name: "tool [group index][run group index chatid arg...]", Help: "工具", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) { if len(arg) == 0 { m.Confm("componet", func(key string, index int, value map[string]interface{}) { - if kit.Format(value["componet_type"]) != "public" && m.Option("username") != m.Conf("runtime", "work.name") && m.Option("username") != m.Conf("runtime", "user.name") { + if kit.Format(value["componet_type"]) != "public" && m.Option("userrole") != "root" { return } @@ -516,12 +534,12 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心", switch arg[0] { case "run": tool := m.Confm("componet", []string{arg[1], arg[2]}) - if kit.Format(tool["componet_type"]) == "private" && m.Option("username") != m.Conf("runtime", "work.name") { + if kit.Format(tool["componet_type"]) == "private" && m.Option("userrole") != "root" { m.Echo("private componet of %s", m.Conf("runtime", "work.name")) break } if kit.Format(tool["componet_type"]) == "protected" && !m.Confs("flow", []string{arg[3], "user", m.Option("username")}) { - m.Echo("private componet of %s", m.Conf("runtime", "work.name")) + m.Echo("protected componet of %s", m.Conf("runtime", "work.name")) break } @@ -570,9 +588,6 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心", } return }}, - "file": &ctx.Command{Name: "file", Help: "用户", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) { - return - }}, "remote": &ctx.Command{Name: "remote auto|dial|listen args...", Help: "连接", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) { if len(arg) == 0 { @@ -890,7 +905,7 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心", case "trust": // 可信代理 hash := kit.Hashs("rand", m.Option("text.time", m.Time("stamp")), arg[2]) m.Option("user.sign", m.Cmdx("ssh._route", m.Option("user.route"), "_check", "user", arg[2], hash)) - m.Echo("%v", m.Options("user.sign") && m.Cmds("ssh._check", hash)) + m.Echo("%v", m.Options("user.sign") && m.Cmds("ssh._right", "user", "check", hash)) } case "work": // 公有认证 @@ -901,7 +916,7 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心", switch arg[1] { case "check": // 数字验签 - if m.Option("user.route") != m.Cmdx("ssh._route", kit.Select(m.Conf("runtime", "work.route"), arg, 3), "_check", "work", arg[2]) { + if arg[3] != m.Cmdx("ssh._route", kit.Select(m.Conf("runtime", "work.route"), m.Option("work.route")), "_check", "work", arg[2]) { m.Log("warn", "work error") m.Echo("false") } else { @@ -986,7 +1001,9 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心", m.Append("user.name", m.Conf("runtime", "user.name")) m.Append("user.route", kit.Select(m.Conf("runtime", "node.route"), m.Conf("runtime", "user.route"))) } else { // 代理签证 - if arg[1] == m.Conf("runtime", "node.route") || m.Cmds("aaa.auth", "proxy", arg[1], "session") { + m.Log("fuck", "what %v", arg[1]) + m.Log("fuck", "what %v", m.Conf("trust")) + if m.Confs("trust", arg[1]) { m.Echo(m.Cmdx("aaa.rsa", "sign", m.Conf("runtime", "user.key"), arg[2])) } } @@ -1062,7 +1079,7 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心", m.Option("text.username"), ) - if m.Option("sessid", m.Cmd("aaa.auth", "access", access, "session").Append("key")); m.Option("username", m.Cmd("aaa.sess", "user").Append("meta")) != "" { // 历史会话 + if m.Option("sessid", m.Cmd("aaa.auth", "access", access, "session").Append("key")); false && m.Option("username", m.Cmd("aaa.sess", "user").Append("meta")) != "" { // 历史会话 m.Log("warn", "access: %s", access) m.Log("info", "sessid: %s", m.Option("sessid")) m.Option("trust", m.Cmdx("aaa.auth", "access", access, "data", "trust")) @@ -1092,7 +1109,7 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心", m.Option("trust", "none") } else { // 验证失败 - m.Log("warn", "user error of %s", m.Option("user.route")) + m.Log("warn", "user error of %s", m.Option("node.route")) m.Echo("user error") return } diff --git a/src/contexts/web/web.go b/src/contexts/web/web.go index 43ddc3f0..aa208da2 100644 --- a/src/contexts/web/web.go +++ b/src/contexts/web/web.go @@ -336,7 +336,7 @@ func (web *WEB) Begin(m *ctx.Message, arg ...string) ctx.Server { func (web *WEB) Start(m *ctx.Message, arg ...string) bool { web.Caches["directory"] = &ctx.Cache{Name: "directory", Value: kit.Select(m.Conf("serve", "directory"), arg, 0), Help: "服务目录"} web.Caches["protocol"] = &ctx.Cache{Name: "protocol", Value: kit.Select(m.Conf("serve", "protocol"), arg, 2), Help: "服务协议"} - web.Caches["address"] = &ctx.Cache{Name: "address", Value: kit.Select(m.Conf("serve", "address"), arg, 1), Help: "服务地址"} + web.Caches["address"] = &ctx.Cache{Name: "address", Value: kit.Select(m.Conf("runtime", "boot.web_port"), arg, 1), Help: "服务地址"} m.Log("info", "%d %s %s://%s", m.Capi("nserve", 1), m.Cap("directory"), m.Cap("protocol"), m.Cap("stream", m.Cap("address"))) render := m.Target().Commands["/render"] @@ -423,7 +423,6 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心", "form_size": "102400", "directory": "usr", "protocol": "http", - "address": ":9094", "cert": "etc/cert.pem", "key": "etc/key.pem", "site": "",