1
0
mirror of https://shylinux.com/x/icebergs synced 2025-05-01 11:09:23 +08:00
This commit is contained in:
shylinux 2020-10-12 08:40:39 +08:00
parent 521351f241
commit 9acdabb179
14 changed files with 139 additions and 161 deletions

View File

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

View File

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

View File

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

View File

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

View File

@ -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:]...)
}}, }},

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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

View File

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

View File

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