diff --git a/base/ctx/process.go b/base/ctx/process.go index 1cc65226..c4e83373 100644 --- a/base/ctx/process.go +++ b/base/ctx/process.go @@ -41,7 +41,7 @@ func ProcessCommandOpt(m *ice.Message, arg []string, args ...string) { m.Push("opt", kit.Format(m.OptionSimple(args...))) } func ProcessField(m *ice.Message, cmd string, args []string, arg ...string) { - if cmd = kit.Select(m.PrefixKey(), cmd); len(arg) == 0 || arg[0] == ice.RUN { + if cmd = kit.Select(m.PrefixKey(), cmd); len(arg) == 0 || arg[0] != ice.RUN { m.Option("_index", m.PrefixKey()) if m.Cmdy(COMMAND, cmd).ProcessField(ACTION, m.ActionKey(), ice.RUN); len(args) > 0 { m.Push(ARGS, kit.Format(args)) diff --git a/base/gdb/event.go b/base/gdb/event.go index ad6f05bd..1354fa82 100644 --- a/base/gdb/event.go +++ b/base/gdb/event.go @@ -23,10 +23,11 @@ func init() { list[m.Option(EVENT)]++ }}, HAPPEN: {Name: "happen event*", Help: "触发", Hand: func(m *ice.Message, arg ...string) { + defer m.Cost() m.OptionCB(mdb.SELECT, "") mdb.ZoneSelect(m.Spawn(ice.OptionFields("")), m.Option(EVENT)).Tables(func(value ice.Maps) { m.Cmdy(kit.Split(value[ice.CMD]), m.Option(EVENT), arg[2:], ice.OptionFields("")) - }).Cost() + }) }}, }, mdb.ZoneAction(mdb.SHORT, EVENT, mdb.FIELD, "time,id,cmd"))}, }) diff --git a/core/chat/chat.shy b/core/chat/chat.shy index 1ee0f812..bbe13772 100644 --- a/core/chat/chat.shy +++ b/core/chat/chat.shy @@ -22,6 +22,4 @@ topic.go website.go template.go trans.go -meet.go -room.go oauth diff --git a/core/chat/favor.go b/core/chat/favor.go index 599c6be0..46ac50b3 100644 --- a/core/chat/favor.go +++ b/core/chat/favor.go @@ -73,16 +73,16 @@ func init() { m.ProcessInner() }}, ctx.INDEX: {Help: "命令", Hand: func(m *ice.Message, arg ...string) { - ctx.ProcessField(m, m.Cmd("", m.Option(mdb.HASH)).Append(mdb.NAME), kit.Simple(kit.UnMarshal(m.Option(mdb.TEXT))), arg...) + msg := mdb.HashSelects(m.Spawn(), m.Option(mdb.HASH)) + ctx.ProcessField(m, msg.Append(mdb.NAME), kit.Simple(kit.UnMarshal(msg.Option(mdb.TEXT))), arg...) }}, ice.RUN: {Hand: func(m *ice.Message, arg ...string) { - m.Option(mdb.TYPE, m.Cmd("", m.Option(mdb.HASH)).Append(mdb.TYPE)) + m.Option(mdb.TYPE, mdb.HashSelects(m.Spawn(), m.Option(mdb.HASH)).Append(mdb.TYPE)) ctx.Run(m, arg...) }}, }, mdb.HashAction(), ctx.CmdAction(), KeyboardAction()), Hand: func(m *ice.Message, arg ...string) { - m.Debug(m.FormatChain()) if len(arg) > 0 && arg[0] == ctx.ACTION { - m.Option(mdb.TYPE, m.Cmd("", m.Option(mdb.HASH)).Append(mdb.TYPE)) + m.Option(mdb.TYPE, mdb.HashSelects(m.Spawn(), m.Option(mdb.HASH)).Append(mdb.TYPE)) gdb.Event(m, FAVOR_ACTION, arg) return } @@ -95,8 +95,7 @@ func init() { } else if _favor_is_video(m, m.Append(mdb.NAME), m.Append(mdb.TYPE)) { m.PushVideos(web.DISPLAY, text) } - text = web.MergeLink(m, text) - text = tcp.PublishLocalhost(m, text) + text = tcp.PublishLocalhost(m, web.MergeLink(m, text)) } m.PushScript(nfs.SCRIPT, text) m.PushQRCode(cli.QRCODE, text) diff --git a/core/chat/footer.go b/core/chat/footer.go index e4977eb2..cd227360 100644 --- a/core/chat/footer.go +++ b/core/chat/footer.go @@ -16,7 +16,7 @@ func init() { ice.RUN: {Hand: func(m *ice.Message, arg ...string) { if aaa.Right(m, arg) { if m.Cmdy(arg); m.IsErrNotFound() { - m.SetResult().Cmdy(cli.SYSTEM, arg) + m.RenderResult(m.Cmdx(cli.SYSTEM, arg)) } } }}, diff --git a/core/chat/grant.go b/core/chat/grant.go index 48f9cbf1..159ca68c 100644 --- a/core/chat/grant.go +++ b/core/chat/grant.go @@ -21,8 +21,7 @@ func init() { return } m.Go(func(msg *ice.Message) { - link := web.MergePodCmd(m, "", "", web.SPACE, m.Option(mdb.NAME)) - link = tcp.PublishLocalhost(m, link) + link := tcp.PublishLocalhost(m, web.MergePodCmd(m, "", "", web.SPACE, m.Option(mdb.NAME))) msg.Sleep300ms(web.SPACE, m.Option(mdb.NAME), cli.PWD, m.Option(mdb.NAME), link, msg.Cmdx(cli.QRCODE, link)) }) }}, diff --git a/core/chat/header.go b/core/chat/header.go index 609bad4a..db8508ca 100644 --- a/core/chat/header.go +++ b/core/chat/header.go @@ -26,10 +26,7 @@ func _header_share(m *ice.Message, arg ...string) { if m.Warn(m.Option(ice.MSG_USERNAME) == "", ice.ErrNotLogin, "没有登录") { return } - for i := 0; i < len(arg)-1; i += 2 { - m.Option(arg[i], arg[i+1]) - } - if m.Option(mdb.LINK) == "" { + if kit.Fetch(arg, func(k, v string) { m.Option(k, v) }); m.Option(mdb.LINK) == "" { m.Cmdy(web.SHARE, mdb.CREATE, mdb.TYPE, web.LOGIN, arg) } else { m.Option(mdb.LINK, tcp.PublishLocalhost(m, m.Option(mdb.LINK))) @@ -90,7 +87,7 @@ func init() { m.Option(k, msg.Append(k)) } for _, k := range []string{aaa.BACKGROUND, aaa.AVATAR} { - if strings.HasPrefix(msg.Append(k), ice.HTTP) { + if strings.HasPrefix(msg.Append(k), ice.PS) || strings.HasPrefix(msg.Append(k), ice.HTTP) { m.Option(k, msg.Append(k)) } else if msg.Append(k) != "" && aaa.Right(m.Spawn(), msg.Append(k)) { m.Option(k, web.SHARE_LOCAL+k) diff --git a/core/chat/meet.go b/core/chat/meet.go deleted file mode 100644 index a5b01792..00000000 --- a/core/chat/meet.go +++ /dev/null @@ -1,51 +0,0 @@ -package chat - -import ( - ice "shylinux.com/x/icebergs" - "shylinux.com/x/icebergs/base/mdb" - kit "shylinux.com/x/toolkits" -) - -const ( - MEET = "meet" -) -const MISS = "miss" - -func init() { - Index.Register(&ice.Context{Name: MEET, Help: "遇见", Configs: ice.Configs{ - MISS: {Name: MISS, Help: "miss", Value: kit.Data( - mdb.SHORT, mdb.NAME, mdb.FIELD, "time,name,照片,性别,年龄,身高,体重,籍贯,户口,学历,学校,职业,公司,年薪,资产,家境", - )}, - }, Commands: ice.Commands{ - "monkey": {Name: "monkey total=888 count=9 run", Help: "猴子开箱子", Meta: kit.Dict("_trans", kit.Dict("name", "姓名")), Actions: ice.MergeActions(ice.Actions{ - mdb.CREATE: {Name: "create name 照片 性别 年龄 身高 体重 籍贯 户口 学历 学校 职业 公司 年薪 资产 家境", Help: "添加"}, - }, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) { - total := kit.Int(arg[0]) - count := kit.Int(arg[1]) - for i := 1; i <= total; i++ { - list := []int{} - for j := 1; j <= i/2; j++ { - if i%j == 0 { - list = append(list, j) - } - } - list = append(list, i) - if len(list) == count { - m.Push("index", i) - m.Push("count", len(list)) - m.Push("value", kit.Format(list)) - } - } - m.StatusTimeCount() - }}, - MISS: {Name: "miss name auto create", Help: "资料", Meta: kit.Dict("_trans", kit.Dict("name", "姓名")), Actions: ice.MergeActions(ice.Actions{ - mdb.CREATE: {Name: "create name 照片 性别 年龄 身高 体重 籍贯 户口 学历 学校 职业 公司 年薪 资产 家境", Help: "添加"}, - }, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) { - msg := m.Spawn() - mdb.HashSelect(msg, arg...).Tables(func(value ice.Maps) { - value["照片"] = ice.Render(m, ice.RENDER_IMAGES, value["照片"], kit.Select("100", "400", msg.FieldsIsDetail())) - m.Push(m.OptionFields(), value, kit.Split(msg.OptionFields())) - }) - }}, - }}, nil, MISS) -} diff --git a/core/chat/pod.go b/core/chat/pod.go index b162236e..31747933 100644 --- a/core/chat/pod.go +++ b/core/chat/pod.go @@ -21,14 +21,12 @@ func init() { POD: {Name: "pod", Help: "节点", Actions: ice.MergeActions(ice.Actions{ web.SERVE_PARSE: {Hand: func(m *ice.Message, arg ...string) { if kit.Select("", arg, 0) == CHAT { - for i := 1; i < len(arg)-1; i += 2 { - m.Logs("Refer", arg[i], arg[i+1]).Options(arg[i], arg[i+1]) - } + kit.Fetch(arg[1:], func(k, v string) { m.Logs("Refer", k, v).Options(k, v) }) } }}, }, ctx.CmdAction(), web.ServeAction(), web.ApiAction(), aaa.WhiteAction()), Hand: func(m *ice.Message, arg ...string) { if web.OptionAgentIs(m, "curl", "wget") { - aaa.UserRoot(m).Cmdy(web.SHARE_LOCAL, ice.BIN_ICE_BIN, kit.Dict(ice.POD, kit.Select("", arg, 0))) + m.Cmdy(web.SHARE_LOCAL, ice.BIN_ICE_BIN, kit.Dict(ice.POD, kit.Select("", arg, 0), ice.MSG_USERROLE, aaa.TECH)) return } if len(arg) == 0 || kit.Select("", arg, 0) == "" { @@ -46,7 +44,3 @@ func init() { }}, }) } - -func RenderWebsite(m *ice.Message, pod string, dir string, arg ...string) *ice.Message { - return m.Echo(m.Cmdx(web.Space(m, pod), "web.chat.website", lex.PARSE, dir, arg)).RenderResult() -} diff --git a/core/chat/river.go b/core/chat/river.go index 222fbf99..d5921c99 100644 --- a/core/chat/river.go +++ b/core/chat/river.go @@ -50,33 +50,20 @@ func init() { mdb.CREATE: {Name: "create type=void,tech 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 { m.Cmd(aaa.ROLE, aaa.WHITE, aaa.VOID, kit.Keys(RIVER, h)) } gdb.Event(m, RIVER_CREATE, RIVER, m.Option(ice.MSG_RIVER, h), arg) }}, }, mdb.HashAction(mdb.FIELD, "time,hash,type,name,text,template"), aaa.WhiteAction()), Hand: func(m *ice.Message, arg ...string) { - if m.Warn(m.Option(ice.MSG_USERNAME) == "", ice.ErrNotLogin) { + if m.Warn(m.Option(ice.MSG_USERNAME) == "", ice.ErrNotLogin) || if !aaa.Right(m, RIVER, arg) { return - } - if !aaa.Right(m, RIVER, arg) { - return - } - if len(arg) == 0 { + } else if len(arg) == 0 { _river_list(m) - return - } - if len(arg) > 1 && arg[1] == STORM { - m.Option(ice.MSG_RIVER, arg[0]) - m.Cmdy(arg[1], arg[2:]) - return - } - if len(arg) > 2 && arg[2] == STORM { - m.Option(ice.MSG_RIVER, arg[0]) - m.Option(ice.MSG_STORM, arg[1]) - m.Cmdy(arg[2], arg[3:]) - return + } else if len(arg) > 1 && arg[1] == STORM { + m.Cmdy(arg[1], arg[2:], kit.Dict(ice.MSG_RIVER, arg[0])) + } else if len(arg) > 2 && arg[2] == STORM { + m.Cmdy(arg[2], arg[3:], kit.Dict(ice.MSG_RIVER, arg[0], ice.MSG_STORM, arg[1])) } }}, }) diff --git a/core/chat/room.go b/core/chat/room.go deleted file mode 100644 index e5043e6e..00000000 --- a/core/chat/room.go +++ /dev/null @@ -1,84 +0,0 @@ -package chat - -import ( - ice "shylinux.com/x/icebergs" - "shylinux.com/x/icebergs/base/mdb" - "shylinux.com/x/icebergs/base/web" - kit "shylinux.com/x/toolkits" -) - -const ROOM = "room" - -func init() { - const ( - JOIN = "join" - QUIT = "quit" - ) - Index.Merge(&ice.Context{Configs: ice.Configs{ - ROOM: {Name: "room", Help: "room", Value: kit.Data( - mdb.SHORT, "zone", mdb.FIELD, "time,id,type,name,text", - )}, - JOIN: {Name: "join", Help: "join", Value: kit.Data( - mdb.SHORT, "space", mdb.FIELD, "time,hash,username,socket", - )}, - }, Commands: ice.Commands{ - ROOM: {Name: "room zone id auto", Help: "room", Actions: ice.MergeActions(ice.Actions{ - mdb.CREATE: {Name: "create zone", Help: "创建", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(mdb.INSERT, m.PrefixKey(), "", mdb.HASH, m.OptionSimple(mdb.ZONE)) - }}, - mdb.INSERT: {Name: "insert zone type=hi name=hello text=world", Help: "发送", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(mdb.INSERT, m.PrefixKey(), "", mdb.ZONE, m.Option(mdb.ZONE), arg[2:]) - m.Cmdy(mdb.SELECT, m.PrefixKey(), kit.KeyHash(m.Option(mdb.ZONE)), mdb.HASH, ice.Option{"fields", "time,space"}, func(value ice.Maps) { - m.Cmdy(web.SPACE, value[web.SPACE], "toast", m.Option("text"), m.Option("name")) - }) - }}, - - JOIN: {Name: "join zone", Help: "加入", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(mdb.INSERT, m.Prefix(ROOM), kit.KeyHash(m.Option(mdb.ZONE)), mdb.HASH, web.SPACE, m.Option("_daemon")) - m.Cmdy(mdb.INSERT, m.Prefix(JOIN), "", mdb.HASH, web.SPACE, m.Option("_daemon"), mdb.SHORT, mdb.ZONE) - m.Cmdy(mdb.INSERT, m.Prefix(JOIN), kit.KeyHash(m.Option("_daemon")), mdb.HASH, m.OptionSimple(mdb.ZONE)) - }}, - QUIT: {Name: "quit", Help: "退出", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(mdb.DELETE, m.Prefix(ROOM), kit.KeyHash(m.Option(mdb.ZONE)), mdb.HASH, m.OptionSimple(web.SPACE)) - m.Cmdy(mdb.DELETE, m.Prefix(JOIN), kit.KeyHash(m.Option(web.SPACE)), mdb.HASH, m.OptionSimple(mdb.ZONE)) - }}, - }, mdb.ZoneAction()), Hand: func(m *ice.Message, arg ...string) { - if mdb.ZoneSelect(m, arg...); len(arg) == 0 { - m.Action(mdb.CREATE) - m.PushAction(mdb.INSERT, JOIN) - } else if len(arg) == 1 { - m.Action(mdb.INSERT, JOIN) - } - }}, - JOIN: {Name: "join space zone auto", Help: "join", Actions: ice.MergeActions(ice.Actions{ - ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { - // m.Watch(web.SPACE_START, m.PrefixKey()) - }}, - web.SPACE_START: {Name: "space_start", Help: "下线", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(mdb.INSERT, m.Prefix(ROOM), "", mdb.HASH, m.OptionSimple(mdb.ZONE)) - m.Cmdy(mdb.INSERT, m.Prefix(JOIN), "", mdb.HASH, m.OptionSimple(mdb.ZONE)) - }}, - mdb.CREATE: {Name: "create zone", Help: "创建", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(mdb.INSERT, m.Prefix(ROOM), "", mdb.HASH, m.OptionSimple(mdb.ZONE)) - m.Cmdy(mdb.INSERT, m.Prefix(JOIN), "", mdb.HASH, m.OptionSimple(mdb.ZONE)) - }}, - // mdb.INSERT: {Name: "insert zone username daemon", Hand: func(m *ice.Message, arg ...string) { - // m.Conf(m.Prefix(JOIN), kit.Keys(kit.KeyHash(m.Option(mdb.ZONE)), kit.Keym(mdb.SHORT)), web.SOCKET) - // m.Cmdy(mdb.INSERT, m.Prefix(JOIN), kit.KeyHash(m.Option(mdb.ZONE)), mdb.HASH, - // aaa.USERNAME, m.Option(ice.MSG_USERNAME), web.SOCKET, m.Option(ice.MSG_DAEMON), - // ) - // }}, - // mdb.DELETE: {Name: "delete zone socket", Hand: func(m *ice.Message, arg ...string) { - // m.Cmdy(mdb.DELETE, m.Prefix(JOIN), kit.KeyHash(m.Option(mdb.ZONE)), mdb.HASH, m.OptionSimple(web.SOCKET)) - // }}, - }, mdb.HashAction()), Hand: func(m *ice.Message, arg ...string) { - m.Fields(len(arg), "time,space", "time,zone") - if len(arg) == 0 { - m.Cmdy(mdb.SELECT, m.Prefix(JOIN), "", mdb.HASH) - } else { - m.Cmdy(mdb.SELECT, m.Prefix(JOIN), kit.KeyHash(arg[0]), mdb.HASH, arg[1:]) - m.PushAction(mdb.REMOVE) - } - }}, - }}) -} diff --git a/core/chat/sso.go b/core/chat/sso.go index f4eb9f85..1cd79892 100644 --- a/core/chat/sso.go +++ b/core/chat/sso.go @@ -21,14 +21,14 @@ func init() { return } m.RenderRedirect(kit.MergeURL(m.Option(cli.BACK), ice.MSG_SESSID, m.Cmdx(web.SPACE, m.Option(web.SPACE), aaa.SESS, mdb.CREATE, - aaa.USERNAME, m.Option(ice.MSG_USERNAME), aaa.USERROLE, m.Option(ice.MSG_USERROLE), aaa.USERNICK, m.Option(ice.MSG_USERNICK), kit.Dict(ice.MSG_USERROLE, aaa.ROOT)))) + aaa.USERNAME, m.Option(ice.MSG_USERNAME), aaa.USERROLE, m.Option(ice.MSG_USERROLE), aaa.USERNICK, m.Option(ice.MSG_USERNICK), kit.Dict(ice.MSG_USERROLE, aaa.TECH)))) }}, }) } func GetSSO(m *ice.Message) string { link := m.Cmdx(web.SPACE, web.DOMAIN) - if !strings.Contains(link, "/chat/pod/") { + if !strings.Contains(link, web.PP(CHAT, SSO)) { return "" } ls := strings.Split(kit.ParseURL(link).Path, ice.PS) diff --git a/core/chat/website.go b/core/chat/website.go index 4f4afa4a..b44cfd53 100644 --- a/core/chat/website.go +++ b/core/chat/website.go @@ -215,6 +215,10 @@ func init() { }) } +func RenderWebsite(m *ice.Message, pod string, dir string, arg ...string) *ice.Message { + return m.Echo(m.Cmdx(web.Space(m, pod), "web.chat.website", lex.PARSE, dir, arg)).RenderResult() +} + var _website_template = `