From ff498bbd8d3b4202247ab9df0ba0b02d47bb1d79 Mon Sep 17 00:00:00 2001 From: shylinux Date: Sat, 27 May 2023 10:33:58 +0800 Subject: [PATCH] add some --- base/aaa/email.go | 12 ++++++------ base/aaa/offer.go | 8 ++++---- base/aaa/role.go | 2 +- base/cli/procinfo.go | 4 ++-- base/nfs/cat.go | 7 ++----- base/web/dream.go | 2 +- base/web/space.go | 4 ++-- core/chat/river.go | 12 +++++++----- core/code/xterm.go | 6 +++++- init.go | 4 ++-- 10 files changed, 32 insertions(+), 29 deletions(-) diff --git a/base/aaa/email.go b/base/aaa/email.go index 97ff47f4..cbabf5f2 100644 --- a/base/aaa/email.go +++ b/base/aaa/email.go @@ -26,14 +26,14 @@ func init() { Index.MergeCommands(ice.Commands{ EMAIL: {Name: "email name auto create", Help: "邮件", Actions: ice.MergeActions(ice.Actions{ SEND: {Name: "send to*='shylinux@163.com' subject*=hi content*:textarea=hello", Help: "发送", Hand: func(m *ice.Message, arg ...string) { - kit.If(m.Option(SERVICE) == "", func() { m.Options(m.Cmd("", ADMIN).AppendSimple(SERVICE, USERNAME, PASSWORD)) }) - if m.Warn(m.Option(SERVICE) == "", ice.ErrNotValid, SERVICE) { + msg := m.Cmd("", m.OptionDefault(mdb.NAME, ADMIN)) + if m.Warn(msg.Append(SERVICE) == "", ice.ErrNotValid, SERVICE) { return } - content := []byte(kit.JoinKV(DF, NL, "From", m.Option(USERNAME), "To", m.Option(TO), "Subject", m.Option(SUBJECT), "Content-Type", "text/html; charset=UTF-8") + NL + NL + m.Option(CONTENT)) - auth := smtp.PlainAuth("", m.Option(USERNAME), m.Option(PASSWORD), kit.Split(m.Option(SERVICE), ice.DF)[0]) - m.Logs(EMAIL, SEND, string(content)).Warn(smtp.SendMail(m.Option(SERVICE), auth, m.Option(USERNAME), kit.Split(m.Option(TO)), content)) + content := []byte(kit.JoinKV(DF, NL, "From", msg.Append(USERNAME), "To", m.Option(TO), "Subject", m.Option(SUBJECT), "Content-Type", "text/html; charset=UTF-8") + NL + NL + m.Option(CONTENT)) + auth := smtp.PlainAuth("", msg.Append(USERNAME), msg.Append(PASSWORD), kit.Split(msg.Append(SERVICE), ice.DF)[0]) + m.Logs(EMAIL, SEND, string(content)).Warn(smtp.SendMail(msg.Append(SERVICE), auth, msg.Append(USERNAME), kit.Split(m.Option(TO)), content)) }}, - }, mdb.HashAction(mdb.SHORT, mdb.NAME, mdb.FIELD, "time,name,service,username,password", ice.ACTION, SEND))}, + }, mdb.HashAction(mdb.SHORT, mdb.NAME, mdb.FIELD, "time,name,service,username", ice.ACTION, SEND))}, }) } diff --git a/base/aaa/offer.go b/base/aaa/offer.go index 4fdacfd7..7c8c1237 100644 --- a/base/aaa/offer.go +++ b/base/aaa/offer.go @@ -15,9 +15,9 @@ const OFFER = "offer" func init() { Index.MergeCommands(ice.Commands{ OFFER: {Name: "offer hash auto", Help: "邀请", Actions: ice.MergeActions(ice.Actions{ - INVITE: {Name: "invite email*='shylinux@163.com' subject content", Help: "邀请", Hand: func(m *ice.Message, arg ...string) { + mdb.CREATE: {Name: "create email*='shylinux@163.com' subject content", Help: "邀请", Hand: func(m *ice.Message, arg ...string) { h := mdb.HashCreate(m.Spawn(), m.OptionSimple(EMAIL, SUBJECT, CONTENT), INVITE, m.Option(ice.MSG_USERNAME), mdb.STATUS, INVITE) - m.Cmd(EMAIL, SEND, m.Option(EMAIL), m.OptionDefault(SUBJECT, "welcome to contents, please continue"), + m.Cmd(EMAIL, SEND, m.Option(EMAIL), m.OptionDefault(SUBJECT, "welcome to contexts, please continue"), m.OptionDefault(CONTENT, ice.Render(m, ice.RENDER_ANCHOR, m.Cmdx("host", "publish", m.MergePodCmd("", "", mdb.HASH, h)))), ) }}, @@ -32,9 +32,9 @@ func init() { mdb.HashModify(m, m.OptionSimple(mdb.HASH), mdb.STATUS, ACCEPT) } }}, - }, mdb.HashAction(mdb.SHORT, mdb.UNIQ, mdb.FIELD, "time,hash,status,invite,email,title,content"), RoleAction(ACCEPT)), Hand: func(m *ice.Message, arg ...string) { + }, RoleAction(ACCEPT), mdb.ImportantHashAction(mdb.SHORT, mdb.UNIQ, mdb.FIELD, "time,hash,status,invite,email,title,content")), Hand: func(m *ice.Message, arg ...string) { if !m.Warn(len(arg) == 0 && m.Option(ice.MSG_USERROLE) == VOID, ice.ErrNotRight) { - kit.If(mdb.HashSelect(m, arg...).FieldsIsDetail(), func() { m.PushAction(ACCEPT) }, func() { m.Action(INVITE) }) + kit.If(mdb.HashSelect(m, arg...).FieldsIsDetail(), func() { m.PushAction(ACCEPT) }, func() { m.Action(mdb.CREATE) }) } }}, }) diff --git a/base/aaa/role.go b/base/aaa/role.go index 7c88ea1a..6e9cca30 100644 --- a/base/aaa/role.go +++ b/base/aaa/role.go @@ -61,7 +61,7 @@ const ROLE = "role" func init() { Index.MergeCommands(ice.Commands{ - ROLE: {Name: "role role auto insert", Help: "角色", Actions: ice.MergeActions(ice.Actions{ + ROLE: {Name: "role role auto insert filter:text", Help: "角色", Actions: ice.MergeActions(ice.Actions{ mdb.CREATE: {Hand: func(m *ice.Message, arg ...string) { kit.For(arg, func(role string) { mdb.Rich(m, ROLE, nil, kit.Dict(mdb.NAME, role, BLACK, kit.Dict(), WHITE, kit.Dict())) diff --git a/base/cli/procinfo.go b/base/cli/procinfo.go index 302f9c7b..84234aaa 100644 --- a/base/cli/procinfo.go +++ b/base/cli/procinfo.go @@ -12,10 +12,10 @@ import ( func init() { Index.MergeCommands(ice.Commands{ - PROCINFO: {Name: "procinfo PID auto", Help: "进程列表", Actions: ice.MergeActions(ice.Actions{ + PROCINFO: {Name: "procinfo PID auto filter:text", Help: "进程列表", Actions: ice.MergeActions(ice.Actions{ PROCKILL: {Help: "结束进程", Hand: func(m *ice.Message, arg ...string) { m.Cmdy(gdb.SIGNAL, gdb.STOP, m.Option("PID")).ProcessRefresh() }}, }), Hand: func(m *ice.Message, arg ...string) { - if len(arg) == 0 { + if len(arg) == 0 || arg[0] == "" { m.Split(m.Cmdx(SYSTEM, "ps", "u")).PushAction(PROCKILL).Sort("COMMAND").StatusTimeCount(m.Cmd(RUNTIME, HOSTINFO).AppendSimple("nCPU,MemTotal,MemFree")) return } diff --git a/base/nfs/cat.go b/base/nfs/cat.go index 7e5d43bf..0a2333af 100644 --- a/base/nfs/cat.go +++ b/base/nfs/cat.go @@ -22,10 +22,7 @@ func _cat_find(m *ice.Message, p string) (io.ReadCloser, error) { return OpenFile(m, path.Join(m.Option(DIR_ROOT), p)) } func _cat_hash(m *ice.Message, p string) (h string) { - Open(m, p, func(r io.Reader) { - h = kit.Hashs(r) - m.Debug("what %v %v", p, h) - }) + Open(m, p, func(r io.Reader) { h = kit.Hashs(r) }) return } func _cat_line(m *ice.Message, p string) (n int) { @@ -33,7 +30,7 @@ func _cat_line(m *ice.Message, p string) (n int) { return } func _cat_list(m *ice.Message, p string) { - if m.Option(CAT_CONTENT) == "" && !aaa.Right(m, p) { + if m.Option(CAT_CONTENT) == "" && !aaa.Right(m, path.Join(m.Option(DIR_ROOT), p)) { return } f, e := _cat_find(m, p) diff --git a/base/web/dream.go b/base/web/dream.go index 375b7656..4c46c5e6 100644 --- a/base/web/dream.go +++ b/base/web/dream.go @@ -112,7 +112,7 @@ const DREAM = "dream" func init() { Index.MergeCommands(ice.Commands{ - DREAM: {Name: "dream name auto create", Help: "梦想家", Actions: ice.MergeActions(ice.Actions{ + DREAM: {Name: "dream name@key auto create", Help: "梦想家", Actions: ice.MergeActions(ice.Actions{ mdb.SEARCH: {Hand: func(m *ice.Message, arg ...string) { if mdb.IsSearchForEach(m, arg, nil) { m.Cmds("", func(value ice.Maps) { m.PushSearch(mdb.TEXT, m.MergePod(value[mdb.NAME]), value) }) diff --git a/base/web/space.go b/base/web/space.go index 32e0e8e8..e0aae392 100644 --- a/base/web/space.go +++ b/base/web/space.go @@ -211,8 +211,8 @@ func init() { ctx.ProcessOpen(m, m.MergePod(m.Option(mdb.NAME), arg)) } }}, - "main": {Hand: func(m *ice.Message, arg ...string) { - kit.If(mdb.Config(m, "main"), func(cmd string) { RenderPodCmd(m, "", cmd) }, func() { + ice.MAIN: {Hand: func(m *ice.Message, arg ...string) { + kit.If(mdb.Config(m, ice.MAIN), func(cmd string) { RenderPodCmd(m, "", cmd) }, func() { m.RenderResult(nfs.Template(m.Options(nfs.VERSION, renderVersion(m)), "main.html")) }) m.Optionv(ice.MSG_ARGS, kit.Simple(m.Optionv(ice.MSG_ARGS))) diff --git a/core/chat/river.go b/core/chat/river.go index 842941b9..9d3e9637 100644 --- a/core/chat/river.go +++ b/core/chat/river.go @@ -12,7 +12,10 @@ import ( ) func _river_right(m *ice.Message, hash string) bool { - return m.Option(ice.MSG_USERROLE) == aaa.ROOT || m.Cmdx(aaa.ROLE, aaa.RIGHT, m.Option(ice.MSG_USERROLE), RIVER, hash) == ice.OK + if m.Option(ice.MSG_USERROLE) == aaa.ROOT { + return true + } + return kit.IsIn(mdb.Conf(m, RIVER, kit.Keys(mdb.HASH, hash, mdb.META, mdb.TYPE)), "", aaa.VOID, m.Option(ice.MSG_USERROLE)) } func _river_key(m *ice.Message, key ...ice.Any) string { return kit.Keys(mdb.HASH, m.Option(ice.MSG_RIVER), kit.Simple(key)) @@ -26,10 +29,9 @@ func _river_list(m *ice.Message) { } } m.Cmd(mdb.SELECT, m.PrefixKey(), "", mdb.HASH, ice.OptionFields(mdb.HASH, mdb.NAME), func(value ice.Maps) { - if _river_right(m, value[mdb.HASH]) { - m.PushRecord(value, mdb.HASH, mdb.NAME) - } + kit.If(_river_right(m, value[mdb.HASH]), func() { m.PushRecord(value, mdb.HASH, mdb.NAME) }) }) + m.Sort(mdb.NAME) } const ( @@ -60,7 +62,7 @@ func init() { mdb.HashInputs(m, arg) } }}, - mdb.CREATE: {Name: "create type=void,tech name=hi text=hello template=base", Hand: func(m *ice.Message, arg ...string) { + mdb.CREATE: {Name: "create type=void,tech,root name=hi text=hello template=base", Hand: func(m *ice.Message, arg ...string) { h := mdb.HashCreate(m, arg) defer m.Result(h) if m.Option(mdb.TYPE) == aaa.VOID { diff --git a/core/code/xterm.go b/core/code/xterm.go index 42d70b20..b67cade0 100644 --- a/core/code/xterm.go +++ b/core/code/xterm.go @@ -20,7 +20,11 @@ import ( func _xterm_get(m *ice.Message, h string) xterm.XTerm { h = kit.Select(m.Option(mdb.HASH), h) m.Assert(h != "") - mdb.HashModify(m, mdb.TIME, m.Time(), cli.DAEMON, kit.Keys(m.Option("__target"), m.Option(ice.MSG_DAEMON))) + if m.Option(ice.MSG_USERPOD) == "" { + mdb.HashModify(m, mdb.TIME, m.Time(), cli.DAEMON, kit.Keys(m.Option("__target"), m.Option(ice.MSG_DAEMON))) + } else { + mdb.HashModify(m, mdb.TIME, m.Time(), cli.DAEMON, kit.Keys(m.Option(ice.MSG_DAEMON))) + } return mdb.HashSelectTarget(m, h, func(value ice.Maps) ice.Any { text := strings.Split(value[mdb.TEXT], lex.NL) ls := kit.Split(strings.Split(kit.Select(ISH, value[mdb.TYPE]), " # ")[0]) diff --git a/init.go b/init.go index 842c04f0..3e466214 100644 --- a/init.go +++ b/init.go @@ -51,25 +51,25 @@ var Index = &Context{Name: ICE, Help: "冰山模块", Commands: Commands{ m.Travel(func(p *Context, c *Context) { kit.If(p != nil, func() { c._command(m.Spawn(c), c.Commands[CTX_INIT], CTX_INIT, arg...) }) }) - loadImportant(m) }}, INIT: {Hand: func(m *Message, arg ...string) { m.Cmd(kit.Keys(MDB, CTX_INIT)) m.Cmd(CTX_INIT) m.Cmd(SOURCE, ETC_INIT_SHY) + loadImportant(m) }}, QUIT: {Hand: func(m *Message, arg ...string) { os.Exit(0) }}, EXIT: {Hand: func(m *Message, arg ...string) { m.root.Option(EXIT, kit.Select("0", arg, 0)) m.Cmd(SOURCE, ETC_EXIT_SHY) m.Cmd(CTX_EXIT) + removeImportant(m) }}, CTX_EXIT: {Hand: func(m *Message, arg ...string) { defer m.Target().Close(m.Spawn(), arg...) m.Travel(func(p *Context, c *Context) { kit.If(p != nil, func() { c._command(m.Spawn(c), c.Commands[CTX_EXIT], CTX_EXIT, arg...) }) }) - removeImportant(m) }}, }, server: &Frame{}} var Pulse = &Message{time: time.Now(), meta: map[string][]string{}, data: Map{}, source: Index, target: Index}