mirror of
https://shylinux.com/x/icebergs
synced 2025-05-01 11:09:23 +08:00
opt chat
This commit is contained in:
parent
521351f241
commit
9acdabb179
@ -88,6 +88,8 @@ func UserLogin(m *ice.Message, username, password string) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
AVATAR = "avatar"
|
||||||
|
|
||||||
USER_CREATE = "user.create"
|
USER_CREATE = "user.create"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ func _hash_export(m *ice.Message, prefix, chain, file string) {
|
|||||||
|
|
||||||
en := json.NewEncoder(f)
|
en := json.NewEncoder(f)
|
||||||
en.SetIndent("", " ")
|
en.SetIndent("", " ")
|
||||||
en.Encode(m.Confv(prefix, kit.Keys(chain, HASH)))
|
e = en.Encode(m.Confv(prefix, kit.Keys(chain, HASH)))
|
||||||
|
|
||||||
m.Log_EXPORT(kit.MDB_KEY, path.Join(prefix, chain), kit.MDB_FILE, p)
|
m.Log_EXPORT(kit.MDB_KEY, path.Join(prefix, chain), kit.MDB_FILE, p)
|
||||||
m.Echo(p)
|
m.Echo(p)
|
||||||
|
@ -39,6 +39,7 @@ func _cache_save(m *ice.Message, kind, name, text string, arg ...string) { // fi
|
|||||||
m.Push(kit.MDB_TEXT, text)
|
m.Push(kit.MDB_TEXT, text)
|
||||||
m.Push(kit.MDB_SIZE, size)
|
m.Push(kit.MDB_SIZE, size)
|
||||||
m.Push(kit.MDB_FILE, file)
|
m.Push(kit.MDB_FILE, file)
|
||||||
|
m.Push(kit.MDB_HASH, h)
|
||||||
m.Push(DATA, h)
|
m.Push(DATA, h)
|
||||||
}
|
}
|
||||||
func _cache_watch(m *ice.Message, key, file string) {
|
func _cache_watch(m *ice.Message, key, file string) {
|
||||||
|
1
conf.go
1
conf.go
@ -21,6 +21,7 @@ const ( // MSG
|
|||||||
MSG_SOURCE = "_source"
|
MSG_SOURCE = "_source"
|
||||||
MSG_TARGET = "_target"
|
MSG_TARGET = "_target"
|
||||||
MSG_HANDLE = "_handle"
|
MSG_HANDLE = "_handle"
|
||||||
|
MSG_UPLOAD = "_upload"
|
||||||
MSG_OUTPUT = "_output"
|
MSG_OUTPUT = "_output"
|
||||||
MSG_ARGS = "_args"
|
MSG_ARGS = "_args"
|
||||||
|
|
||||||
|
@ -8,9 +8,8 @@ import (
|
|||||||
kit "github.com/shylinux/toolkits"
|
kit "github.com/shylinux/toolkits"
|
||||||
)
|
)
|
||||||
|
|
||||||
func _action_upload(m *ice.Message, arg ...string) {
|
func _action_domain(m *ice.Message, arg ...string) string {
|
||||||
msg := m.Cmd(web.CACHE, web.UPLOAD)
|
return m.Option(ice.MSG_DOMAIN, kit.Keys("R"+kit.Select(m.Option(ice.MSG_RIVER), arg, 1), "S"+kit.Select(m.Option(ice.MSG_STORM), arg, 0)))
|
||||||
m.Option("_upload", msg.Append("data"), msg.Append("name"))
|
|
||||||
}
|
}
|
||||||
func _action_right(m *ice.Message, river string, storm string) (ok bool) {
|
func _action_right(m *ice.Message, river string, storm string) (ok bool) {
|
||||||
if ok = true; m.Option(ice.MSG_USERROLE) == aaa.VOID {
|
if ok = true; m.Option(ice.MSG_USERROLE) == aaa.VOID {
|
||||||
@ -33,7 +32,7 @@ func _action_show(m *ice.Message, river, storm, index string, arg ...string) {
|
|||||||
prefix := kit.Keys(kit.MDB_HASH, river, TOOL, kit.MDB_HASH, storm)
|
prefix := kit.Keys(kit.MDB_HASH, river, TOOL, kit.MDB_HASH, storm)
|
||||||
if m.Grows(RIVER, prefix, kit.MDB_ID, index, func(index int, value map[string]interface{}) {
|
if m.Grows(RIVER, prefix, kit.MDB_ID, index, func(index int, value map[string]interface{}) {
|
||||||
if cmds = kit.Simple(kit.Keys(value[CTX], value[CMD])); kit.Format(value[POD]) != "" {
|
if cmds = kit.Simple(kit.Keys(value[CTX], value[CMD])); kit.Format(value[POD]) != "" {
|
||||||
m.Option(kit.SSH_POD, value[POD])
|
m.Option(POD, value[POD])
|
||||||
}
|
}
|
||||||
}) == nil && m.Warn(!m.Right(cmds), ice.ErrNotAuth) {
|
}) == nil && m.Warn(!m.Right(cmds), ice.ErrNotAuth) {
|
||||||
return
|
return
|
||||||
@ -47,12 +46,16 @@ func _action_proxy(m *ice.Message) (proxy []string) {
|
|||||||
}
|
}
|
||||||
return proxy
|
return proxy
|
||||||
}
|
}
|
||||||
|
func _action_upload(m *ice.Message, arg ...string) {
|
||||||
|
msg := m.Cmd(web.CACHE, web.UPLOAD)
|
||||||
|
m.Option(ice.MSG_UPLOAD, msg.Append(kit.MDB_HASH), msg.Append(kit.MDB_NAME))
|
||||||
|
}
|
||||||
|
|
||||||
const ACTION = "action"
|
const ACTION = "action"
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Index.Merge(&ice.Context{Commands: map[string]*ice.Command{
|
Index.Merge(&ice.Context{Commands: map[string]*ice.Command{
|
||||||
"/action": {Name: "/action", Help: "工作台", Action: map[string]*ice.Action{
|
"/action": {Name: "/action river storm action arg...", Help: "工作台", Action: map[string]*ice.Action{
|
||||||
ctx.COMMAND: {Name: "command", Help: "命令", Hand: func(m *ice.Message, arg ...string) {
|
ctx.COMMAND: {Name: "command", Help: "命令", Hand: func(m *ice.Message, arg ...string) {
|
||||||
for _, k := range arg {
|
for _, k := range arg {
|
||||||
m.Cmdy(ctx.COMMAND, k)
|
m.Cmdy(ctx.COMMAND, k)
|
||||||
@ -71,8 +74,9 @@ func init() {
|
|||||||
return //命令列表
|
return //命令列表
|
||||||
}
|
}
|
||||||
|
|
||||||
if m.Option("_upload") != "" {
|
_action_domain(m)
|
||||||
_action_upload(m)
|
if m.Option(ice.MSG_UPLOAD) != "" {
|
||||||
|
_action_upload(m) // 上传文件
|
||||||
}
|
}
|
||||||
_action_show(m, arg[0], arg[1], arg[2], arg[3:]...)
|
_action_show(m, arg[0], arg[1], arg[2], arg[3:]...)
|
||||||
}},
|
}},
|
||||||
|
@ -35,7 +35,7 @@ func init() {
|
|||||||
m.Echo(m.Option(ice.MSG_USERNAME))
|
m.Echo(m.Option(ice.MSG_USERNAME))
|
||||||
}},
|
}},
|
||||||
|
|
||||||
"userrole": {Name: "userrole", Help: "登录检查", Hand: func(m *ice.Message, arg ...string) {
|
aaa.USERROLE: {Name: "userrole", Help: "用户角色", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Echo(aaa.UserRole(m, m.Option("who")))
|
m.Echo(aaa.UserRole(m, m.Option("who")))
|
||||||
}},
|
}},
|
||||||
|
|
||||||
|
@ -35,8 +35,8 @@ func init() {
|
|||||||
LOCATION: {Name: LOCATION, Help: "地理位置", Value: kit.Data(kit.MDB_SHORT, kit.MDB_TEXT)},
|
LOCATION: {Name: LOCATION, Help: "地理位置", Value: kit.Data(kit.MDB_SHORT, kit.MDB_TEXT)},
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
Commands: map[string]*ice.Command{
|
||||||
LOCATION: {Name: "location text auto 添加@location", Help: "地理位置", Action: map[string]*ice.Action{
|
LOCATION: {Name: "location text auto create@location", Help: "地理位置", Action: map[string]*ice.Action{
|
||||||
mdb.CREATE: {Name: "insert type name address latitude longitude", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
mdb.CREATE: {Name: "insert type=text name address latitude longitude", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||||
_trans(arg, map[string]string{"address": "text"})
|
_trans(arg, map[string]string{"address": "text"})
|
||||||
m.Conf(LOCATION, kit.Keys(m.Option(ice.MSG_DOMAIN), kit.MDB_META, kit.MDB_SHORT), kit.MDB_TEXT)
|
m.Conf(LOCATION, kit.Keys(m.Option(ice.MSG_DOMAIN), kit.MDB_META, kit.MDB_SHORT), kit.MDB_TEXT)
|
||||||
m.Cmdy(mdb.INSERT, LOCATION, m.Option(ice.MSG_DOMAIN), mdb.HASH, arg)
|
m.Cmdy(mdb.INSERT, LOCATION, m.Option(ice.MSG_DOMAIN), mdb.HASH, arg)
|
||||||
@ -68,11 +68,10 @@ func init() {
|
|||||||
m.Table(func(index int, value map[string]string, head []string) {
|
m.Table(func(index int, value map[string]string, head []string) {
|
||||||
m.PushRender(kit.MDB_LINK, "a", "百度地图", kit.Format(
|
m.PushRender(kit.MDB_LINK, "a", "百度地图", kit.Format(
|
||||||
"https://map.baidu.com/search/%s/@12958750.085,4825785.55,16z?querytype=s&da_src=shareurl&wd=%s",
|
"https://map.baidu.com/search/%s/@12958750.085,4825785.55,16z?querytype=s&da_src=shareurl&wd=%s",
|
||||||
url.QueryEscape(kit.Format(value[kit.MDB_TEXT])),
|
url.QueryEscape(kit.Format(value[kit.MDB_TEXT])), url.QueryEscape(kit.Format(value[kit.MDB_TEXT])),
|
||||||
url.QueryEscape(kit.Format(value[kit.MDB_TEXT])),
|
|
||||||
))
|
))
|
||||||
})
|
})
|
||||||
m.PushAction("删除")
|
m.PushAction(mdb.REMOVE)
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}, nil)
|
}, nil)
|
||||||
|
@ -15,13 +15,13 @@ func init() {
|
|||||||
PASTE: {Name: PASTE, Help: "粘贴板", Value: kit.Data(kit.MDB_SHORT, kit.MDB_TEXT)},
|
PASTE: {Name: PASTE, Help: "粘贴板", Value: kit.Data(kit.MDB_SHORT, kit.MDB_TEXT)},
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
Commands: map[string]*ice.Command{
|
||||||
PASTE: {Name: "paste hash auto 添加@paste", Help: "粘贴板", Action: map[string]*ice.Action{
|
PASTE: {Name: "paste hash auto create@paste", Help: "粘贴板", Action: map[string]*ice.Action{
|
||||||
mdb.INSERT: {Name: "insert data:textarea=hi", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
mdb.CREATE: {Name: "create type=text name=hi data:textarea=hi", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||||
_trans(arg, map[string]string{"data": "text"})
|
_trans(arg, map[string]string{"data": "text"})
|
||||||
m.Conf(PASTE, kit.Keys(m.Option(ice.MSG_DOMAIN), kit.MDB_META, kit.MDB_SHORT), kit.MDB_TEXT)
|
m.Conf(PASTE, kit.Keys(m.Option(ice.MSG_DOMAIN), kit.MDB_META, kit.MDB_SHORT), kit.MDB_TEXT)
|
||||||
m.Cmdy(mdb.INSERT, m.Prefix(PASTE), m.Option(ice.MSG_DOMAIN), mdb.HASH, arg)
|
m.Cmdy(mdb.INSERT, m.Prefix(PASTE), m.Option(ice.MSG_DOMAIN), mdb.HASH, arg)
|
||||||
}},
|
}},
|
||||||
mdb.DELETE: {Name: "delete", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.DELETE, m.Prefix(PASTE), m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_TEXT, m.Option(kit.MDB_TEXT))
|
m.Cmdy(mdb.DELETE, m.Prefix(PASTE), m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_TEXT, m.Option(kit.MDB_TEXT))
|
||||||
}},
|
}},
|
||||||
mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
||||||
@ -30,6 +30,9 @@ func init() {
|
|||||||
mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.IMPORT, m.Prefix(PASTE), m.Option(ice.MSG_DOMAIN), mdb.HASH)
|
m.Cmdy(mdb.IMPORT, m.Prefix(PASTE), m.Option(ice.MSG_DOMAIN), mdb.HASH)
|
||||||
}},
|
}},
|
||||||
|
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
m.Cmdy(mdb.INPUTS, m.Prefix(PASTE), m.Option(ice.MSG_DOMAIN), mdb.HASH, arg)
|
||||||
|
}},
|
||||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
if len(arg) > 0 {
|
if len(arg) > 0 {
|
||||||
text := m.Cmd(mdb.SELECT, m.Prefix(PASTE), m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_HASH, arg[0]).Append(kit.MDB_TEXT)
|
text := m.Cmd(mdb.SELECT, m.Prefix(PASTE), m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_HASH, arg[0]).Append(kit.MDB_TEXT)
|
||||||
@ -41,7 +44,7 @@ func init() {
|
|||||||
|
|
||||||
m.Cmdy(mdb.SELECT, m.Prefix(PASTE), m.Option(ice.MSG_DOMAIN), mdb.HASH)
|
m.Cmdy(mdb.SELECT, m.Prefix(PASTE), m.Option(ice.MSG_DOMAIN), mdb.HASH)
|
||||||
m.Sort(kit.MDB_TIME, "time_r")
|
m.Sort(kit.MDB_TIME, "time_r")
|
||||||
m.PushAction("删除")
|
m.PushAction(mdb.REMOVE)
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}, nil)
|
}, nil)
|
||||||
|
@ -12,9 +12,9 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func _river_list(m *ice.Message) {
|
func _river_list(m *ice.Message) {
|
||||||
if m.Option("share") != "" && m.Option("share") != "" {
|
if m.Option(web.SHARE) != "" && m.Option(web.SHARE) != "" {
|
||||||
m.Option(ice.MSG_RIVER, m.Option("river"))
|
m.Option(ice.MSG_RIVER, m.Option(RIVER))
|
||||||
if m.Cmd(AUTH, m.Option("share")).Append(kit.MDB_TYPE) == USER {
|
if m.Cmd(m.Prefix(AUTH), m.Option(web.SHARE)).Append(kit.MDB_TYPE) == USER {
|
||||||
if m.Cmd(m.Prefix(USER), m.Option(ice.MSG_USERNAME)).Append(ice.MSG_USERNAME) == "" {
|
if m.Cmd(m.Prefix(USER), m.Option(ice.MSG_USERNAME)).Append(ice.MSG_USERNAME) == "" {
|
||||||
m.Cmd(m.Prefix(USER), mdb.INSERT, aaa.USERNAME, m.Option(ice.MSG_USERNAME))
|
m.Cmd(m.Prefix(USER), mdb.INSERT, aaa.USERNAME, m.Option(ice.MSG_USERNAME))
|
||||||
// 加入群组
|
// 加入群组
|
||||||
@ -22,7 +22,7 @@ func _river_list(m *ice.Message) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m.Set(ice.MSG_OPTION, kit.MDB_KEY)
|
m.Set(ice.MSG_OPTION, kit.MDB_HASH)
|
||||||
m.Set(ice.MSG_OPTION, kit.MDB_NAME)
|
m.Set(ice.MSG_OPTION, kit.MDB_NAME)
|
||||||
|
|
||||||
if p := m.Option(POD); p != "" {
|
if p := m.Option(POD); p != "" {
|
||||||
@ -33,7 +33,7 @@ func _river_list(m *ice.Message) {
|
|||||||
|
|
||||||
m.Richs(RIVER, nil, kit.MDB_FOREACH, func(key string, value map[string]interface{}) {
|
m.Richs(RIVER, nil, kit.MDB_FOREACH, func(key string, value map[string]interface{}) {
|
||||||
m.Richs(RIVER, kit.Keys(kit.MDB_HASH, key, USER), m.Option(ice.MSG_USERNAME), func(k string, val map[string]interface{}) {
|
m.Richs(RIVER, kit.Keys(kit.MDB_HASH, key, USER), m.Option(ice.MSG_USERNAME), func(k string, val map[string]interface{}) {
|
||||||
m.Push(key, value[kit.MDB_META], []string{kit.MDB_HASH, kit.MDB_NAME}, val[kit.MDB_META])
|
m.Push(key, kit.GetMeta(value), []string{kit.MDB_HASH, kit.MDB_NAME}, kit.GetMeta(val))
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -74,12 +74,22 @@ func init() {
|
|||||||
m.Option(mdb.FIELDS, mdb.DETAIL)
|
m.Option(mdb.FIELDS, mdb.DETAIL)
|
||||||
m.Cmdy(mdb.SELECT, RIVER, "", mdb.HASH, kit.MDB_HASH, m.Option(ice.MSG_RIVER))
|
m.Cmdy(mdb.SELECT, RIVER, "", mdb.HASH, kit.MDB_HASH, m.Option(ice.MSG_RIVER))
|
||||||
}},
|
}},
|
||||||
AUTH: {Name: "auth hash auto 添加", Help: "授权", Action: map[string]*ice.Action{
|
AUTH: {Name: "auth hash auto create", Help: "授权", Action: map[string]*ice.Action{
|
||||||
mdb.CREATE: {Name: "create type=node,user name text", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
mdb.CREATE: {Name: "create type=node,user name text", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.INSERT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), AUTH), mdb.HASH,
|
m.Cmdy(mdb.INSERT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), AUTH), mdb.HASH,
|
||||||
aaa.USERROLE, m.Option(ice.MSG_USERROLE), aaa.USERNAME, m.Option(ice.MSG_USERNAME),
|
aaa.USERROLE, m.Option(ice.MSG_USERROLE), aaa.USERNAME, m.Option(ice.MSG_USERNAME),
|
||||||
kit.MDB_TIME, m.Time("72h"), arg)
|
kit.MDB_TIME, m.Time("72h"), arg)
|
||||||
}},
|
}},
|
||||||
|
mdb.INSERT: {Name: "insert river share", Help: "加入", Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
m.Option(mdb.FIELDS, "time,hash,userrole,username,type,name,text")
|
||||||
|
msg := m.Cmd(mdb.SELECT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(RIVER), AUTH), mdb.HASH, kit.MDB_HASH, m.Option(web.SHARE))
|
||||||
|
switch msg.Append(kit.MDB_TYPE) {
|
||||||
|
case USER:
|
||||||
|
m.Option(ice.MSG_RIVER, m.Option(RIVER))
|
||||||
|
m.Cmdy(m.Prefix(USER), mdb.INSERT, aaa.USERNAME, m.Option(ice.MSG_USERNAME))
|
||||||
|
case NODE:
|
||||||
|
}
|
||||||
|
}},
|
||||||
mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.MODIFY, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), AUTH), mdb.HASH,
|
m.Cmdy(mdb.MODIFY, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), AUTH), mdb.HASH,
|
||||||
kit.MDB_HASH, m.Option(kit.MDB_HASH), arg)
|
kit.MDB_HASH, m.Option(kit.MDB_HASH), arg)
|
||||||
@ -89,23 +99,23 @@ func init() {
|
|||||||
kit.MDB_HASH, m.Option(kit.MDB_HASH))
|
kit.MDB_HASH, m.Option(kit.MDB_HASH))
|
||||||
}},
|
}},
|
||||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
m.Option(mdb.FIELDS, "time,hash,userrole,username,type,name,text")
|
m.Option(mdb.FIELDS, kit.Select("time,hash,userrole,username,type,name,text", mdb.DETAIL, len(arg) > 0))
|
||||||
m.Cmdy(mdb.SELECT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), AUTH), mdb.HASH, kit.MDB_HASH, arg)
|
m.Cmdy(mdb.SELECT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), AUTH), mdb.HASH, kit.MDB_HASH, arg)
|
||||||
m.PushAction("删除")
|
m.PushAction(mdb.REMOVE)
|
||||||
}},
|
|
||||||
NODE: {Name: "node name ctx cmd auto 添加 邀请", Help: "设备", Action: map[string]*ice.Action{
|
|
||||||
mdb.INVITE: {Name: "invite", Help: "邀请", Hand: func(m *ice.Message, arg ...string) {
|
|
||||||
m.Option(web.SHARE, m.Cmdx(AUTH, mdb.CREATE, kit.MDB_TYPE, NODE))
|
|
||||||
m.Cmdy(code.PUBLISH, "contexts", "tool")
|
|
||||||
}},
|
}},
|
||||||
|
NODE: {Name: "node name ctx cmd auto insert invite", Help: "设备", Action: map[string]*ice.Action{
|
||||||
mdb.INSERT: {Name: "insert type name share", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
mdb.INSERT: {Name: "insert type name share", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.INSERT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(RIVER), NODE), mdb.HASH, arg)
|
m.Cmdy(mdb.INSERT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(RIVER), NODE), mdb.HASH, arg)
|
||||||
}},
|
}},
|
||||||
|
mdb.INVITE: {Name: "invite", Help: "邀请", Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
m.Option(web.SHARE, m.Cmdx(m.Prefix(AUTH), mdb.CREATE, kit.MDB_TYPE, NODE))
|
||||||
|
m.Cmdy(code.PUBLISH, "contexts", "tool")
|
||||||
|
}},
|
||||||
web.SPACE_START: {Name: "start type name share river", Help: "启动", Hand: func(m *ice.Message, arg ...string) {
|
web.SPACE_START: {Name: "start type name share river", Help: "启动", Hand: func(m *ice.Message, arg ...string) {
|
||||||
if m.Option(ice.MSG_RIVER, m.Option(RIVER)) == "" {
|
if m.Option(ice.MSG_RIVER, m.Option(RIVER)) == "" {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if msg := m.Cmd(AUTH, m.Option("share")); msg.Append(kit.MDB_TYPE) == NODE {
|
if msg := m.Cmd(m.Prefix(AUTH), m.Option(web.SHARE)); msg.Append(kit.MDB_TYPE) == NODE {
|
||||||
m.Cmdy(mdb.INSERT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(RIVER), NODE), mdb.HASH, arg)
|
m.Cmdy(mdb.INSERT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(RIVER), NODE), mdb.HASH, arg)
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
@ -124,12 +134,12 @@ func init() {
|
|||||||
m.PushRender(kit.MDB_LINK, "a", value[kit.MDB_NAME],
|
m.PushRender(kit.MDB_LINK, "a", value[kit.MDB_NAME],
|
||||||
kit.MergeURL(m.Option(ice.MSG_USERWEB), kit.SSH_POD, kit.Keys(m.Option(kit.SSH_POD), value[kit.MDB_NAME])))
|
kit.MergeURL(m.Option(ice.MSG_USERWEB), kit.SSH_POD, kit.Keys(m.Option(kit.SSH_POD), value[kit.MDB_NAME])))
|
||||||
})
|
})
|
||||||
m.PushAction("删除")
|
m.PushAction(mdb.REMOVE)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
m.Cmdy(web.ROUTE, arg)
|
m.Cmdy(web.ROUTE, arg)
|
||||||
}},
|
}},
|
||||||
TOOL: {Name: "tool hash id auto 添加 创建", Help: "工具", Action: map[string]*ice.Action{
|
TOOL: {Name: "tool hash id auto insert create", Help: "工具", Action: map[string]*ice.Action{
|
||||||
mdb.CREATE: {Name: "create type=public,protected,private name=hi text=hello", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
|
mdb.CREATE: {Name: "create type=public,protected,private name=hi text=hello", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.INSERT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL), mdb.HASH, arg)
|
m.Cmdy(mdb.INSERT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL), mdb.HASH, arg)
|
||||||
}},
|
}},
|
||||||
@ -149,6 +159,22 @@ func init() {
|
|||||||
m.Cmdy(mdb.DELETE, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL), mdb.HASH,
|
m.Cmdy(mdb.DELETE, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL), mdb.HASH,
|
||||||
kit.MDB_HASH, m.Option(kit.MDB_HASH))
|
kit.MDB_HASH, m.Option(kit.MDB_HASH))
|
||||||
}},
|
}},
|
||||||
|
mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
if m.Option(kit.MDB_ID) != "" {
|
||||||
|
_action_domain(m, m.Option(kit.MDB_HASH))
|
||||||
|
m.Option(mdb.FIELDS, "time,id,pod,ctx,cmd,arg")
|
||||||
|
msg := m.Cmd(mdb.SELECT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL, kit.MDB_HASH, m.Option(kit.MDB_HASH)), mdb.LIST, kit.MDB_ID, m.Option(kit.MDB_ID))
|
||||||
|
m.Cmdy(_river_proxy(msg, msg.Append(POD)), kit.Keys(msg.Append(CTX), msg.Append(CMD)), mdb.EXPORT)
|
||||||
|
}
|
||||||
|
}},
|
||||||
|
mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
if m.Option(kit.MDB_ID) != "" {
|
||||||
|
_action_domain(m, m.Option(kit.MDB_HASH))
|
||||||
|
m.Option(mdb.FIELDS, "time,id,pod,ctx,cmd,arg")
|
||||||
|
msg := m.Cmd(mdb.SELECT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL, kit.MDB_HASH, m.Option(kit.MDB_HASH)), mdb.LIST, kit.MDB_ID, m.Option(kit.MDB_ID))
|
||||||
|
m.Cmdy(_river_proxy(msg, msg.Append(POD)), kit.Keys(msg.Append(CTX), msg.Append(CMD)), mdb.IMPORT)
|
||||||
|
}
|
||||||
|
}},
|
||||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||||
switch arg[0] {
|
switch arg[0] {
|
||||||
case kit.MDB_HASH:
|
case kit.MDB_HASH:
|
||||||
@ -163,7 +189,7 @@ func init() {
|
|||||||
m.Push(CTX, kit.Keys(kit.Select("", value["ups"], value["ups"] != "shy"), value[kit.MDB_NAME]))
|
m.Push(CTX, kit.Keys(kit.Select("", value["ups"], value["ups"] != "shy"), value[kit.MDB_NAME]))
|
||||||
m.Push(kit.MDB_HELP, value[kit.MDB_HELP])
|
m.Push(kit.MDB_HELP, value[kit.MDB_HELP])
|
||||||
})
|
})
|
||||||
case CMD, "help":
|
case CMD, kit.MDB_HELP:
|
||||||
m.Cmd(ctx.CONTEXT, m.Option(CTX), ctx.COMMAND).Table(func(index int, value map[string]string, head []string) {
|
m.Cmd(ctx.CONTEXT, m.Option(CTX), ctx.COMMAND).Table(func(index int, value map[string]string, head []string) {
|
||||||
m.Push(CMD, value[kit.MDB_KEY])
|
m.Push(CMD, value[kit.MDB_KEY])
|
||||||
m.Push(kit.MDB_NAME, value[kit.MDB_NAME])
|
m.Push(kit.MDB_NAME, value[kit.MDB_NAME])
|
||||||
@ -175,8 +201,8 @@ func init() {
|
|||||||
if len(arg) == 0 {
|
if len(arg) == 0 {
|
||||||
m.Option(mdb.FIELDS, "time,hash,name,count")
|
m.Option(mdb.FIELDS, "time,hash,name,count")
|
||||||
m.Cmdy(mdb.SELECT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL), mdb.HASH)
|
m.Cmdy(mdb.SELECT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL), mdb.HASH)
|
||||||
m.PushAction("删除")
|
m.PushAction(mdb.REMOVE)
|
||||||
return
|
return // 应用列表
|
||||||
}
|
}
|
||||||
|
|
||||||
m.Option(mdb.FIELDS, "time,id,pod,ctx,cmd,arg")
|
m.Option(mdb.FIELDS, "time,id,pod,ctx,cmd,arg")
|
||||||
@ -187,26 +213,28 @@ func init() {
|
|||||||
|
|
||||||
if len(arg) > 2 && arg[2] == "run" {
|
if len(arg) > 2 && arg[2] == "run" {
|
||||||
m.Cmdy(_river_proxy(m, msg.Append(POD)), kit.Keys(msg.Append(CTX), msg.Append(CMD)), arg[3:])
|
m.Cmdy(_river_proxy(m, msg.Append(POD)), kit.Keys(msg.Append(CTX), msg.Append(CMD)), arg[3:])
|
||||||
return
|
return // 执行命令
|
||||||
}
|
}
|
||||||
if m.Copy(msg); len(arg) < 2 {
|
if m.Copy(msg); len(arg) < 2 {
|
||||||
return
|
m.PushAction(mdb.EXPORT, mdb.IMPORT)
|
||||||
|
return // 命令列表
|
||||||
}
|
}
|
||||||
|
|
||||||
m.Option("_process", "_field")
|
// 命令插件
|
||||||
|
m.Option(ice.MSG_PROCESS, "_field")
|
||||||
m.Option("_prefix", arg[0], arg[1], "run")
|
m.Option("_prefix", arg[0], arg[1], "run")
|
||||||
m.Table(func(index int, value map[string]string, head []string) {
|
m.Table(func(index int, value map[string]string, head []string) {
|
||||||
m.Cmdy(web.SPACE, value[POD], ctx.CONTEXT, value[CTX], ctx.COMMAND, value[CMD])
|
m.Cmdy(web.SPACE, value[POD], ctx.CONTEXT, value[CTX], ctx.COMMAND, value[CMD])
|
||||||
})
|
})
|
||||||
}},
|
}},
|
||||||
USER: {Name: "user username auto 添加 邀请", Help: "用户", Action: map[string]*ice.Action{
|
USER: {Name: "user username auto insert invite", Help: "用户", Action: map[string]*ice.Action{
|
||||||
mdb.INVITE: {Name: "invite", Help: "邀请", Hand: func(m *ice.Message, arg ...string) {
|
mdb.INVITE: {Name: "invite", Help: "邀请", Hand: func(m *ice.Message, arg ...string) {
|
||||||
share := m.Option(web.SHARE, m.Cmdx(AUTH, mdb.CREATE, kit.MDB_TYPE, USER))
|
share := m.Option(web.SHARE, m.Cmdx(m.Prefix(AUTH), mdb.CREATE, kit.MDB_TYPE, USER))
|
||||||
m.Cmdy(wiki.SPARK, "inner", kit.MergeURL(m.Option(ice.MSG_USERWEB), "river", m.Option(ice.MSG_RIVER), "share", share))
|
m.Cmdy(wiki.SPARK, "inner", kit.MergeURL(m.Option(ice.MSG_USERWEB), RIVER, m.Option(ice.MSG_RIVER), web.SHARE, share))
|
||||||
m.Cmdy(wiki.IMAGE, "qrcode", kit.MergeURL(m.Option(ice.MSG_USERWEB), "river", m.Option(ice.MSG_RIVER), "share", share))
|
m.Cmdy(wiki.IMAGE, "qrcode", kit.MergeURL(m.Option(ice.MSG_USERWEB), RIVER, m.Option(ice.MSG_RIVER), web.SHARE, share))
|
||||||
m.Render("")
|
m.Render("")
|
||||||
}},
|
}},
|
||||||
mdb.INSERT: {Name: "insert username userzone usernick", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
mdb.INSERT: {Name: "insert username", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.INSERT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), USER), mdb.HASH, arg)
|
m.Cmdy(mdb.INSERT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), USER), mdb.HASH, arg)
|
||||||
}},
|
}},
|
||||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||||
@ -214,6 +242,7 @@ func init() {
|
|||||||
}},
|
}},
|
||||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(aaa.USER)
|
m.Cmdy(aaa.USER)
|
||||||
|
m.Appendv(ice.MSG_APPEND, aaa.USERNAME, aaa.USERNICK)
|
||||||
}},
|
}},
|
||||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
m.Option(mdb.FIELDS, "time,username")
|
m.Option(mdb.FIELDS, "time,username")
|
||||||
@ -221,25 +250,26 @@ func init() {
|
|||||||
m.Table(func(index int, value map[string]string, head []string) {
|
m.Table(func(index int, value map[string]string, head []string) {
|
||||||
m.Push(aaa.USERNICK, aaa.UserNick(m, value[aaa.USERNAME]))
|
m.Push(aaa.USERNICK, aaa.UserNick(m, value[aaa.USERNAME]))
|
||||||
m.Push(aaa.USERZONE, aaa.UserZone(m, value[aaa.USERNAME]))
|
m.Push(aaa.USERZONE, aaa.UserZone(m, value[aaa.USERNAME]))
|
||||||
|
m.PushRender(aaa.AVATAR, "img", value["avatar_url"])
|
||||||
})
|
})
|
||||||
m.PushAction("删除")
|
m.PushAction(mdb.REMOVE)
|
||||||
}},
|
}},
|
||||||
RIVER: {Name: "river hash auto 添加", Help: "群组", Action: map[string]*ice.Action{
|
RIVER: {Name: "river hash auto create", Help: "群组", Action: map[string]*ice.Action{
|
||||||
mdb.CREATE: {Name: "create type=public,protected,private name=hi text=hello", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
mdb.CREATE: {Name: "create type=public,protected,private name=hi text=hello template=base", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||||
h := m.Cmdx(mdb.INSERT, RIVER, "", mdb.HASH, arg)
|
h := m.Cmdx(mdb.INSERT, RIVER, "", mdb.HASH, arg)
|
||||||
m.Option(ice.MSG_RIVER, h)
|
m.Option(ice.MSG_RIVER, h)
|
||||||
m.Echo(h)
|
m.Echo(h)
|
||||||
|
|
||||||
m.Conf(RIVER, kit.Keys(kit.MDB_HASH, h, USER, kit.MDB_META, kit.MDB_SHORT), aaa.USERNAME)
|
|
||||||
m.Conf(RIVER, kit.Keys(kit.MDB_HASH, h, NODE, kit.MDB_META, kit.MDB_SHORT), kit.MDB_NAME)
|
m.Conf(RIVER, kit.Keys(kit.MDB_HASH, h, NODE, kit.MDB_META, kit.MDB_SHORT), kit.MDB_NAME)
|
||||||
|
m.Conf(RIVER, kit.Keys(kit.MDB_HASH, h, USER, kit.MDB_META, kit.MDB_SHORT), aaa.USERNAME)
|
||||||
m.Cmd(m.Prefix(USER), mdb.INSERT, aaa.USERNAME, m.Option(ice.MSG_USERNAME))
|
m.Cmd(m.Prefix(USER), mdb.INSERT, aaa.USERNAME, m.Option(ice.MSG_USERNAME))
|
||||||
|
|
||||||
kit.Fetch(m.Confv(RIVER, kit.Keys("meta.template", "base")), func(storm string, value interface{}) {
|
kit.Fetch(m.Confv(RIVER, kit.Keys("meta.template", kit.Select("base", m.Option("template")))), func(storm string, value interface{}) {
|
||||||
h := m.Cmdx(TOOL, mdb.CREATE, kit.MDB_TYPE, "public", kit.MDB_NAME, storm, kit.MDB_TEXT, storm)
|
h := m.Cmdx(TOOL, mdb.CREATE, kit.MDB_TYPE, "public", kit.MDB_NAME, storm, kit.MDB_TEXT, storm)
|
||||||
|
|
||||||
kit.Fetch(value, func(index int, value string) {
|
kit.Fetch(value, func(index int, value string) {
|
||||||
m.Search(value, func(p *ice.Context, s *ice.Context, key string, cmd *ice.Command) {
|
m.Search(value, func(p *ice.Context, s *ice.Context, key string, cmd *ice.Command) {
|
||||||
m.Cmd(TOOL, mdb.INSERT, kit.MDB_HASH, h, CTX, s.Cap(ice.CTX_FOLLOW), CMD, key, kit.MDB_HELP, kit.Simple(cmd.Help)[0])
|
m.Cmd(TOOL, mdb.INSERT, kit.MDB_HASH, h, CTX, s.Cap(ice.CTX_FOLLOW), CMD, key, kit.MDB_HELP, cmd.Help)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@ -265,6 +295,8 @@ func init() {
|
|||||||
m.Push(aaa.USERROLE, aaa.VOID)
|
m.Push(aaa.USERROLE, aaa.VOID)
|
||||||
m.Push(aaa.USERROLE, aaa.TECH)
|
m.Push(aaa.USERROLE, aaa.TECH)
|
||||||
m.Push(aaa.USERROLE, aaa.ROOT)
|
m.Push(aaa.USERROLE, aaa.ROOT)
|
||||||
|
case "template":
|
||||||
|
m.Push("template", "base")
|
||||||
default:
|
default:
|
||||||
m.Cmdy(mdb.INPUTS, RIVER, "", mdb.HASH, arg)
|
m.Cmdy(mdb.INPUTS, RIVER, "", mdb.HASH, arg)
|
||||||
}
|
}
|
||||||
@ -274,7 +306,7 @@ func init() {
|
|||||||
}},
|
}},
|
||||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
m.Cmdy(mdb.SELECT, RIVER, "", mdb.HASH, kit.MDB_HASH, arg)
|
m.Cmdy(mdb.SELECT, RIVER, "", mdb.HASH, kit.MDB_HASH, arg)
|
||||||
m.PushAction("删除")
|
m.PushAction(mdb.REMOVE)
|
||||||
}},
|
}},
|
||||||
|
|
||||||
"/river": {Name: "/river", Help: "小河流", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
"/river": {Name: "/river", Help: "小河流", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
|
@ -15,12 +15,12 @@ func init() {
|
|||||||
SCAN: {Name: SCAN, Help: "扫码", Value: kit.Data(kit.MDB_SHORT, kit.MDB_TEXT)},
|
SCAN: {Name: SCAN, Help: "扫码", Value: kit.Data(kit.MDB_SHORT, kit.MDB_TEXT)},
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
Commands: map[string]*ice.Command{
|
||||||
SCAN: {Name: "scan hash auto 添加@scan", Help: "扫码", Action: map[string]*ice.Action{
|
SCAN: {Name: "scan hash auto create@scan", Help: "扫码", Action: map[string]*ice.Action{
|
||||||
mdb.INSERT: {Name: "insert text:textarea=hi", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
mdb.CREATE: {Name: "create type=text name=hi text:textarea=hi", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Conf(SCAN, kit.Keys(m.Option(ice.MSG_DOMAIN), kit.MDB_META, kit.MDB_SHORT), kit.MDB_TEXT)
|
m.Conf(SCAN, kit.Keys(m.Option(ice.MSG_DOMAIN), kit.MDB_META, kit.MDB_SHORT), kit.MDB_TEXT)
|
||||||
m.Cmdy(mdb.INSERT, m.Prefix(SCAN), m.Option(ice.MSG_DOMAIN), mdb.HASH, arg)
|
m.Cmdy(mdb.INSERT, m.Prefix(SCAN), m.Option(ice.MSG_DOMAIN), mdb.HASH, arg)
|
||||||
}},
|
}},
|
||||||
mdb.DELETE: {Name: "delete", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.DELETE, m.Prefix(SCAN), m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_TEXT, m.Option(kit.MDB_TEXT))
|
m.Cmdy(mdb.DELETE, m.Prefix(SCAN), m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_TEXT, m.Option(kit.MDB_TEXT))
|
||||||
}},
|
}},
|
||||||
mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
||||||
@ -29,6 +29,9 @@ func init() {
|
|||||||
mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.IMPORT, m.Prefix(SCAN), m.Option(ice.MSG_DOMAIN), mdb.HASH)
|
m.Cmdy(mdb.IMPORT, m.Prefix(SCAN), m.Option(ice.MSG_DOMAIN), mdb.HASH)
|
||||||
}},
|
}},
|
||||||
|
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
m.Cmdy(mdb.INPUTS, m.Prefix(SCAN), m.Option(ice.MSG_DOMAIN), mdb.HASH, arg)
|
||||||
|
}},
|
||||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
if len(arg) > 0 {
|
if len(arg) > 0 {
|
||||||
text := m.Cmd(mdb.SELECT, m.Prefix(SCAN), m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_HASH, arg[0]).Append(kit.MDB_TEXT)
|
text := m.Cmd(mdb.SELECT, m.Prefix(SCAN), m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_HASH, arg[0]).Append(kit.MDB_TEXT)
|
||||||
@ -40,7 +43,7 @@ func init() {
|
|||||||
|
|
||||||
m.Cmdy(mdb.SELECT, m.Prefix(SCAN), m.Option(ice.MSG_DOMAIN), mdb.HASH)
|
m.Cmdy(mdb.SELECT, m.Prefix(SCAN), m.Option(ice.MSG_DOMAIN), mdb.HASH)
|
||||||
m.Sort(kit.MDB_TIME, "time_r")
|
m.Sort(kit.MDB_TIME, "time_r")
|
||||||
m.PushAction("删除")
|
m.PushAction(mdb.REMOVE)
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}, nil)
|
}, nil)
|
||||||
|
@ -95,8 +95,8 @@ mkdir contexts; cd contexts
|
|||||||
export ctx_dev={{.Option "httphost"}} ctx_temp=$(mktemp); curl -sL $ctx_dev >$ctx_temp; source $ctx_temp dev
|
export ctx_dev={{.Option "httphost"}} ctx_temp=$(mktemp); curl -sL $ctx_dev >$ctx_temp; source $ctx_temp dev
|
||||||
`,
|
`,
|
||||||
"tool", `
|
"tool", `
|
||||||
# 生产环境
|
# 群组环境
|
||||||
mkdir contexts; cd contexts
|
mkdir contexts; cd contexts
|
||||||
export ctx_dev={{.Option "httphost"}} ctx_river={{.Option "sess.river"}} ctx_share={{.Option "share"}} ctx_temp=$(mktemp); curl -sL $ctx_dev >$ctx_temp; source $ctx_temp ice
|
export ctx_log=/dev/stdout ctx_dev={{.Option "httphost"}} ctx_river={{.Option "sess.river"}} ctx_share={{.Option "share"}} ctx_temp=$(mktemp); curl -sL $ctx_dev >$ctx_temp; source $ctx_temp ice
|
||||||
`,
|
`,
|
||||||
)
|
)
|
||||||
|
10
meta.go
10
meta.go
@ -492,6 +492,16 @@ func (m *Message) Appendv(key string, arg ...interface{}) []string {
|
|||||||
}
|
}
|
||||||
return index
|
return index
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(m.meta[MSG_APPEND]) == 2 && m.meta[MSG_APPEND][0] == kit.MDB_KEY {
|
||||||
|
for i, k := range m.meta[kit.MDB_KEY] {
|
||||||
|
if k == key {
|
||||||
|
return []string{kit.Select("", m.meta[kit.MDB_VALUE], i)}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
if len(arg) > 0 {
|
if len(arg) > 0 {
|
||||||
m.meta[key] = kit.Simple(arg...)
|
m.meta[key] = kit.Simple(arg...)
|
||||||
}
|
}
|
||||||
|
119
misc/mp/mp.go
119
misc/mp/mp.go
@ -7,16 +7,16 @@ import (
|
|||||||
"github.com/shylinux/icebergs/base/web"
|
"github.com/shylinux/icebergs/base/web"
|
||||||
"github.com/shylinux/icebergs/core/chat"
|
"github.com/shylinux/icebergs/core/chat"
|
||||||
kit "github.com/shylinux/toolkits"
|
kit "github.com/shylinux/toolkits"
|
||||||
|
|
||||||
"net/http"
|
|
||||||
"path"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
LOGIN = "login"
|
||||||
|
)
|
||||||
const MP = "mp"
|
const MP = "mp"
|
||||||
|
|
||||||
var Index = &ice.Context{Name: "mp", Help: "小程序",
|
var Index = &ice.Context{Name: MP, Help: "小程序",
|
||||||
Configs: map[string]*ice.Config{
|
Configs: map[string]*ice.Config{
|
||||||
"login": {Name: "login", Help: "认证", Value: kit.Data(
|
LOGIN: {Name: LOGIN, Help: "认证", Value: kit.Data(
|
||||||
"auth", "/sns/jscode2session?grant_type=authorization_code",
|
"auth", "/sns/jscode2session?grant_type=authorization_code",
|
||||||
"weixin", "https://api.weixin.qq.com",
|
"weixin", "https://api.weixin.qq.com",
|
||||||
"appid", "", "appmm", "", "token", "",
|
"appid", "", "appmm", "", "token", "",
|
||||||
@ -25,27 +25,22 @@ var Index = &ice.Context{Name: "mp", Help: "小程序",
|
|||||||
Commands: map[string]*ice.Command{
|
Commands: map[string]*ice.Command{
|
||||||
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
m.Load()
|
m.Load()
|
||||||
m.Cmd(web.SPIDE, mdb.CREATE, "weixin", m.Conf("login", "meta.weixin"))
|
m.Cmd(web.SPIDE, mdb.CREATE, "weixin", m.Conf(LOGIN, "meta.weixin"))
|
||||||
m.Confm("login", "meta.userrole", func(key string, value string) {
|
|
||||||
m.Cmd(aaa.ROLE, value, key)
|
|
||||||
})
|
|
||||||
}},
|
}},
|
||||||
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
m.Save("login")
|
m.Save()
|
||||||
}},
|
}},
|
||||||
|
|
||||||
"/login/": {Name: "/login/", Help: "登录", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
"/login/": {Name: "/login/", Help: "登录", Action: map[string]*ice.Action{
|
||||||
switch arg[0] {
|
"code": {Name: "code", Help: "登录", Hand: func(m *ice.Message, arg ...string) {
|
||||||
case "code":
|
msg := m.Cmd(web.SPIDE, "weixin", web.SPIDE_GET, m.Conf(LOGIN, "meta.auth"), "js_code", m.Option("code"),
|
||||||
msg := m.Cmd(web.SPIDE, "weixin", http.MethodGet, m.Conf("login", "meta.auth"), "js_code", m.Option("code"),
|
"appid", m.Conf(LOGIN, "meta.appid"), "secret", m.Conf(LOGIN, "meta.appmm"))
|
||||||
"appid", m.Conf("login", "meta.appid"), "secret", m.Conf("login", "meta.appmm"))
|
|
||||||
|
|
||||||
// 用户登录
|
// 用户登录
|
||||||
m.Option(ice.MSG_USERZONE, MP)
|
m.Option(ice.MSG_USERZONE, MP)
|
||||||
m.Echo(aaa.SessCreate(msg, msg.Append("openid"), aaa.UserRole(msg, msg.Append("openid"))))
|
m.Echo(aaa.SessCreate(msg, msg.Append("openid"), aaa.UserRole(msg, msg.Append("openid"))))
|
||||||
|
}},
|
||||||
case "info":
|
"info": {Name: "info", Help: "信息", Hand: func(m *ice.Message, arg ...string) {
|
||||||
// 用户信息
|
|
||||||
m.Option(aaa.USERNAME, m.Option(ice.MSG_USERNAME))
|
m.Option(aaa.USERNAME, m.Option(ice.MSG_USERNAME))
|
||||||
m.Cmd(aaa.USER, mdb.MODIFY, aaa.USERZONE, MP, aaa.USERNICK, m.Option("nickName"),
|
m.Cmd(aaa.USER, mdb.MODIFY, aaa.USERZONE, MP, aaa.USERNICK, m.Option("nickName"),
|
||||||
"avatar_url", m.Option("avatarUrl"),
|
"avatar_url", m.Option("avatarUrl"),
|
||||||
@ -54,91 +49,15 @@ var Index = &ice.Context{Name: "mp", Help: "小程序",
|
|||||||
"language", m.Option("language"),
|
"language", m.Option("language"),
|
||||||
"province", m.Option("province"),
|
"province", m.Option("province"),
|
||||||
)
|
)
|
||||||
|
}},
|
||||||
case "scan":
|
"scan": {Name: "scan", Help: "scan", Hand: func(m *ice.Message, arg ...string) {
|
||||||
if p := m.Option("pod"); p != "" {
|
if m.Option(web.SHARE) != "" {
|
||||||
m.Option("pod", "")
|
if m.Option(chat.RIVER) != "" {
|
||||||
// 代理列表
|
m.Cmdy(chat.AUTH, mdb.INSERT)
|
||||||
m.Cmdy(web.SPACE, p, "web.chat.qrcode.qrcode", mdb.INSERT, "qrcode", m.Option("name"), m.Option("text"))
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
m.Cmdy("web.chat.qrcode.qrcode", mdb.INSERT, "qrcode", m.Option("name"), m.Option("text"))
|
|
||||||
|
|
||||||
case "auth":
|
|
||||||
if !m.Options(ice.MSG_USERNAME) {
|
|
||||||
m.Render("status", 401, "not login")
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
switch kit.Select("active", m.Option("type")) {
|
|
||||||
case "share":
|
|
||||||
m.Richs(web.SHARE, nil, m.Option("text"), func(key string, value map[string]interface{}) {
|
|
||||||
switch value["type"] {
|
|
||||||
case "invite":
|
|
||||||
if m.Option(ice.MSG_USERROLE) != value["name"] {
|
|
||||||
m.Cmd(aaa.ROLE, value["name"], m.Option(ice.MSG_USERNAME))
|
|
||||||
m.Cmd("web.chat.auto", m.Option(ice.MSG_USERNAME), value["name"])
|
|
||||||
}
|
|
||||||
break
|
|
||||||
default:
|
|
||||||
m.Option("type", value["type"])
|
|
||||||
m.Option("name", value["name"])
|
|
||||||
m.Option("text", value["text"])
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
switch kit.Select("active", m.Option("type")) {
|
|
||||||
case "active":
|
|
||||||
// 网页登录
|
|
||||||
m.Cmdy(web.SPACE, m.Option("name"), "sessid", m.Cmdx(aaa.SESS, "create", m.Option(ice.MSG_USERNAME)))
|
|
||||||
case "login":
|
|
||||||
// 终端登录
|
|
||||||
m.Cmdy(aaa.SESS, "auth", m.Option("text"), m.Option(ice.MSG_USERNAME))
|
|
||||||
}
|
|
||||||
|
|
||||||
case "upload":
|
|
||||||
msg := m.Cmd(web.CACHE, "upload")
|
|
||||||
m.Cmd(web.STORY, web.WATCH, msg.Append("data"), path.Join("usr/local/mp/", path.Base(msg.Append("name"))))
|
|
||||||
// m.Cmd(web.FAVOR, "device", "file", msg.Append("name"), msg.Append("data"))
|
|
||||||
m.Render(msg.Append("data"))
|
|
||||||
|
|
||||||
case "cmds":
|
|
||||||
if !m.Options(ice.MSG_USERNAME) {
|
|
||||||
m.Render("status", 401, "not login")
|
|
||||||
break
|
|
||||||
}
|
|
||||||
if arg = kit.Split(arg[1]); !m.Right(arg) {
|
|
||||||
m.Render("status", 403, "not auth")
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
// 执行命令
|
|
||||||
m.Cmdy(arg)
|
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
|
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
"scan": {Name: "scan", Help: "扫码", List: kit.List(
|
|
||||||
kit.MDB_INPUT, "text", "name", "location", "cb", "location",
|
|
||||||
kit.MDB_INPUT, "text", "name", "battery", "cb", "battery",
|
|
||||||
kit.MDB_INPUT, "text", "name", "paste", "cb", "paste",
|
|
||||||
kit.MDB_INPUT, "text", "name", "scan", "cb", "scan",
|
|
||||||
kit.MDB_INPUT, "text", "name", "wifi", "cb", "wifi",
|
|
||||||
|
|
||||||
kit.MDB_INPUT, "text", "name", "album", "cb", "album",
|
|
||||||
kit.MDB_INPUT, "text", "name", "finger", "cb", "finger",
|
|
||||||
kit.MDB_INPUT, "text", "name", "vibrate", "cb", "vibrate",
|
|
||||||
kit.MDB_INPUT, "text", "name", "wifiList", "cb", "wifiList",
|
|
||||||
kit.MDB_INPUT, "text", "name", "wifiConn", "cb", "wifiConn",
|
|
||||||
|
|
||||||
kit.MDB_INPUT, "textarea", "name", "scan", "cb", "scan",
|
|
||||||
kit.MDB_INPUT, "textarea", "name", "location", "cb", "location",
|
|
||||||
kit.MDB_INPUT, "button", "name", "scan", "cb", "scan",
|
|
||||||
kit.MDB_INPUT, "button", "name", "location", "cb", "location",
|
|
||||||
kit.MDB_INPUT, "button", "name", "text",
|
|
||||||
kit.MDB_INPUT, "button", "name", "share",
|
|
||||||
), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
|
||||||
m.Echo(arg[0])
|
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
4
type.go
4
type.go
@ -233,10 +233,14 @@ func (c *Context) _split(name string) []interface{} {
|
|||||||
}
|
}
|
||||||
case "@":
|
case "@":
|
||||||
if len(ls) > i+1 {
|
if len(ls) > i+1 {
|
||||||
|
if kit.Value(item, kit.MDB_INPUT) == "button" {
|
||||||
|
kit.Value(item, kit.MDB_ACTION, ls[i+1])
|
||||||
|
} else {
|
||||||
kit.Value(item, kit.MDB_VALUE, "@"+ls[i+1]+"="+value)
|
kit.Value(item, kit.MDB_VALUE, "@"+ls[i+1]+"="+value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
list = append(list, item)
|
list = append(list, item)
|
||||||
}
|
}
|
||||||
return list
|
return list
|
||||||
|
Loading…
x
Reference in New Issue
Block a user