mirror of
https://shylinux.com/x/icebergs
synced 2025-04-26 09:34:05 +08:00
opt chat
This commit is contained in:
parent
4e9b49a970
commit
8f273b15c0
@ -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))
|
||||
|
@ -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"))},
|
||||
})
|
||||
|
@ -22,6 +22,4 @@ topic.go
|
||||
website.go
|
||||
template.go
|
||||
trans.go
|
||||
meet.go
|
||||
room.go
|
||||
oauth
|
||||
|
@ -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)
|
||||
|
@ -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))
|
||||
}
|
||||
}
|
||||
}},
|
||||
|
@ -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))
|
||||
})
|
||||
}},
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
}
|
@ -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()
|
||||
}
|
||||
|
@ -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]))
|
||||
}
|
||||
}},
|
||||
})
|
||||
|
@ -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)
|
||||
}
|
||||
}},
|
||||
}})
|
||||
}
|
@ -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)
|
||||
|
@ -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 = `<!DOCTYPE html>
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=0.8,maximum-scale=0.8,user-scalable=no"/>
|
||||
|
Loading…
x
Reference in New Issue
Block a user