1
0
forked from x/ContextOS
This commit is contained in:
shaoying 2019-07-26 17:20:55 +08:00
parent f94fcc0aff
commit 5c70078760
8 changed files with 48 additions and 29 deletions

View File

@ -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 .
}

View File

@ -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

View File

@ -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
}},

View File

@ -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,
}

View File

@ -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") {

View File

@ -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 {

View File

@ -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
}

View File

@ -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": "",