mirror of
https://shylinux.com/x/icebergs
synced 2025-04-26 01:24:05 +08:00
opt chat
This commit is contained in:
parent
d8c03d6331
commit
b015003088
@ -7,6 +7,7 @@ import (
|
||||
"strings"
|
||||
|
||||
ice "github.com/shylinux/icebergs"
|
||||
"github.com/shylinux/icebergs/base/ctx"
|
||||
"github.com/shylinux/icebergs/base/mdb"
|
||||
kit "github.com/shylinux/toolkits"
|
||||
)
|
||||
@ -66,15 +67,35 @@ func _daemon_show(m *ice.Message, cmd *exec.Cmd, out, err string) {
|
||||
})
|
||||
}
|
||||
|
||||
func Inputs(m *ice.Message, field, value string) bool {
|
||||
switch strings.TrimPrefix(field, "extra.") {
|
||||
case POD:
|
||||
m.Cmdy("route")
|
||||
case CTX:
|
||||
m.Cmdy(ctx.CONTEXT)
|
||||
case CMD:
|
||||
m.Cmdy(ctx.CONTEXT, kit.Select(m.Option(CTX), m.Option(kit.Keys("extra", CTX))), ctx.COMMAND)
|
||||
case ARG:
|
||||
|
||||
default:
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
const (
|
||||
PID = "pid"
|
||||
PWD = "pwd"
|
||||
DIR = "dir"
|
||||
ENV = "env"
|
||||
PID = "pid"
|
||||
PWD = "pwd"
|
||||
|
||||
POD = "pod"
|
||||
CTX = "ctx"
|
||||
CMD = "cmd"
|
||||
API = "api"
|
||||
ARG = "arg"
|
||||
|
||||
RUN = "run"
|
||||
API = "api"
|
||||
RES = "res"
|
||||
ERR = "err"
|
||||
)
|
||||
|
@ -139,3 +139,34 @@ func _hash_inputs(m *ice.Message, prefix, chain string, field, value string) {
|
||||
}
|
||||
m.Sort(kit.MDB_COUNT, "int_r")
|
||||
}
|
||||
|
||||
func HashAction(key string, fields ...string) map[string]*ice.Action {
|
||||
list := map[string]*ice.Action{
|
||||
MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(MODIFY, m.Prefix(key), "", HASH, m.OptionSimple(kit.MDB_HASH), arg)
|
||||
}},
|
||||
REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(DELETE, m.Prefix(key), "", HASH, m.OptionSimple(kit.MDB_HASH))
|
||||
}},
|
||||
EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(EXPORT, m.Prefix(key), "", HASH)
|
||||
}},
|
||||
IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(IMPORT, m.Prefix(key), "", HASH)
|
||||
}},
|
||||
INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(INPUTS, m.Prefix(key), "", HASH, arg)
|
||||
}},
|
||||
}
|
||||
if len(fields) == 0 {
|
||||
return list
|
||||
}
|
||||
|
||||
res := map[string]*ice.Action{}
|
||||
for _, field := range fields {
|
||||
res[field] = list[field]
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
const HASH = "hash"
|
||||
|
@ -129,3 +129,5 @@ func _list_inputs(m *ice.Message, prefix, chain string, field, value string) {
|
||||
}
|
||||
m.SortIntR(kit.MDB_COUNT)
|
||||
}
|
||||
|
||||
const LIST = "list"
|
||||
|
@ -140,8 +140,6 @@ const (
|
||||
const (
|
||||
DICT = "dict"
|
||||
META = "meta"
|
||||
HASH = "hash"
|
||||
LIST = "list"
|
||||
ZONE = "zone"
|
||||
)
|
||||
const (
|
||||
|
@ -59,6 +59,12 @@ func _islocalhost(m *ice.Message, ip string) (ok bool) {
|
||||
return false
|
||||
}
|
||||
func IsLocalHost(m *ice.Message, ip string) bool { return _islocalhost(m, ip) }
|
||||
func ReplaceLocalhost(m *ice.Message, url string) string {
|
||||
if strings.Contains(url, "://"+LOCALHOST) {
|
||||
url = strings.Replace(url, "://"+LOCALHOST, "://"+m.Cmd(HOST, ice.OptionFields(IP)).Append(IP), 1)
|
||||
}
|
||||
return url
|
||||
}
|
||||
|
||||
const (
|
||||
HOSTPORT = "hostport"
|
||||
|
@ -103,7 +103,7 @@ func _action_share(m *ice.Message, arg ...string) {
|
||||
func _action_list(m *ice.Message, river, storm string) {
|
||||
m.Option(ice.MSG_RIVER, river)
|
||||
m.Cmdy(TOOL, storm).Table(func(index int, value map[string]string, head []string) {
|
||||
m.Cmdy(m.Space(kit.Select(m.Option(POD), value[POD])), ctx.COMMAND, kit.Keys(value[CTX], value[CMD]))
|
||||
m.Cmdy(m.Space(kit.Select(m.Option(cli.POD), value[cli.POD])), ctx.COMMAND, kit.Keys(value[cli.CTX], value[cli.CMD]))
|
||||
})
|
||||
m.SortInt(kit.MDB_ID)
|
||||
}
|
||||
@ -114,8 +114,8 @@ func _action_show(m *ice.Message, river, storm, index string, arg ...string) {
|
||||
cmds := []string{index}
|
||||
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 cmds = kit.Simple(kit.Keys(value[CTX], value[CMD])); kit.Format(value[POD]) != "" {
|
||||
m.Option(POD, value[POD])
|
||||
if cmds = kit.Simple(kit.Keys(value[cli.CTX], value[cli.CMD])); kit.Format(value[cli.POD]) != "" {
|
||||
m.Option(cli.POD, value[cli.POD])
|
||||
}
|
||||
}) == nil && m.Warn(!m.Right(cmds), ice.ErrNotRight) {
|
||||
return
|
||||
@ -127,9 +127,9 @@ func _action_show(m *ice.Message, river, storm, index string, arg ...string) {
|
||||
m.Cmdy(_action_proxy(m), cmds, arg)
|
||||
}
|
||||
func _action_proxy(m *ice.Message) (proxy []string) {
|
||||
if p := m.Option(POD); p != "" {
|
||||
if p := m.Option(cli.POD); p != "" {
|
||||
proxy = append(proxy, web.SPACE, p)
|
||||
m.Option(POD, "")
|
||||
m.Option(cli.POD, "")
|
||||
}
|
||||
return proxy
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package chat
|
||||
|
||||
import (
|
||||
ice "github.com/shylinux/icebergs"
|
||||
"github.com/shylinux/icebergs/base/cli"
|
||||
"github.com/shylinux/icebergs/base/mdb"
|
||||
"github.com/shylinux/icebergs/base/web"
|
||||
kit "github.com/shylinux/toolkits"
|
||||
@ -17,19 +18,16 @@ func init() {
|
||||
)},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
FILES: {Name: "files hash auto upload", Help: "文件夹", Action: map[string]*ice.Action{
|
||||
FILES: {Name: "files hash auto upload", Help: "文件夹", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
web.UPLOAD: {Name: "upload", Help: "上传", Hand: func(m *ice.Message, arg ...string) {
|
||||
up := kit.Simple(m.Optionv(ice.MSG_UPLOAD))
|
||||
m.Cmdy(mdb.INSERT, m.Prefix(FILES), "", mdb.HASH, kit.MDB_TYPE, kit.Ext(up[1]), kit.MDB_NAME, up[1], kit.MDB_SIZE, up[2], kit.MDB_DATA, up[0])
|
||||
}},
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.DELETE, m.Prefix(FILES), "", mdb.HASH, m.OptionSimple(kit.MDB_HASH))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction(FILES)), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Fields(len(arg), m.Conf(FILES, kit.META_FIELD))
|
||||
m.Cmdy(mdb.SELECT, m.Prefix(FILES), "", mdb.HASH, kit.MDB_HASH, arg)
|
||||
m.Table(func(index int, value map[string]string, head []string) {
|
||||
link := kit.MergeURL("/share/cache/"+value[kit.MDB_DATA], "pod", m.Option(ice.MSG_USERPOD))
|
||||
link := kit.MergeURL("/share/cache/"+value[kit.MDB_DATA], cli.POD, m.Option(ice.MSG_USERPOD))
|
||||
if m.PushDownload(kit.MDB_LINK, value[kit.MDB_NAME], link); len(arg) > 0 && kit.ExtIsImage(value[kit.MDB_NAME]) {
|
||||
m.PushImages(kit.MDB_IMAGE, link)
|
||||
}
|
||||
|
@ -1,10 +1,9 @@
|
||||
package chat
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
ice "github.com/shylinux/icebergs"
|
||||
"github.com/shylinux/icebergs/base/aaa"
|
||||
"github.com/shylinux/icebergs/base/ctx"
|
||||
"github.com/shylinux/icebergs/base/mdb"
|
||||
"github.com/shylinux/icebergs/base/tcp"
|
||||
"github.com/shylinux/icebergs/base/web"
|
||||
@ -12,7 +11,7 @@ import (
|
||||
kit "github.com/shylinux/toolkits"
|
||||
)
|
||||
|
||||
func _header_check(m *ice.Message) {
|
||||
func _header_check(m *ice.Message, arg ...string) {
|
||||
if m.Option(web.SHARE) != "" {
|
||||
switch msg := m.Cmd(web.SHARE, m.Option(web.SHARE)); msg.Append(kit.MDB_TYPE) {
|
||||
case web.LOGIN: // 扫码登录
|
||||
@ -35,20 +34,14 @@ func _header_share(m *ice.Message, arg ...string) {
|
||||
share := m.Cmdx(web.SHARE, mdb.CREATE, kit.MDB_TYPE, web.LOGIN, arg)
|
||||
m.Option(kit.MDB_LINK, kit.MergeURL(m.Option(ice.MSG_USERWEB), web.SHARE, share))
|
||||
}
|
||||
|
||||
link := m.Option(kit.MDB_LINK)
|
||||
if strings.Contains(link, tcp.LOCALHOST) {
|
||||
link = strings.Replace(link, tcp.LOCALHOST, m.Cmd(tcp.HOST, ice.OptionFields(tcp.IP)).Append(tcp.IP), 1)
|
||||
}
|
||||
link := tcp.ReplaceLocalhost(m, m.Option(kit.MDB_LINK))
|
||||
|
||||
m.Set(kit.MDB_NAME, kit.MDB_TEXT)
|
||||
m.PushQRCode(kit.MDB_TEXT, link)
|
||||
m.Push(kit.MDB_NAME, link)
|
||||
}
|
||||
func _header_grant(m *ice.Message, arg ...string) {
|
||||
if pod := m.Option(kit.SSH_POD); pod != "" {
|
||||
m.Option(kit.SSH_POD, "")
|
||||
m.Cmd(web.SPACE, pod, m.Prefix(P_HEADER), kit.MDB_ACTION, GRANT, arg)
|
||||
if m.PodCmd(m.Prefix("/header"), ctx.ACTION, GRANT, arg) {
|
||||
return // 下发命令
|
||||
}
|
||||
|
||||
@ -58,20 +51,16 @@ func _header_grant(m *ice.Message, arg ...string) {
|
||||
}
|
||||
func _header_users(m *ice.Message, key string, arg ...string) {
|
||||
m.Option(aaa.USERNAME, m.Option(ice.MSG_USERNAME))
|
||||
m.Cmdy("aaa.user", kit.MDB_ACTION, mdb.MODIFY, key, m.Option(key, arg[0]))
|
||||
m.Cmdy("aaa.user", ctx.ACTION, mdb.MODIFY, key, m.Option(key, arg[0]))
|
||||
}
|
||||
|
||||
const (
|
||||
TITLE = "title"
|
||||
CHECK = "check"
|
||||
LOGIN = "login"
|
||||
GRANT = "grant"
|
||||
SHARE = "share"
|
||||
AGENT = "agent"
|
||||
|
||||
LOGOUT = "logout"
|
||||
CHECK = "check"
|
||||
SHARE = "share"
|
||||
GRANT = "grant"
|
||||
)
|
||||
const P_HEADER = "/header"
|
||||
const HEADER = "header"
|
||||
|
||||
func init() {
|
||||
@ -80,41 +69,41 @@ func init() {
|
||||
HEADER: {Name: HEADER, Help: "标题栏", Value: kit.Data(TITLE, "github.com/shylinux/contexts")},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
P_HEADER: {Name: "/header", Help: "标题栏", Action: map[string]*ice.Action{
|
||||
CHECK: {Name: "check", Help: "登录检查", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_check(m)
|
||||
m.Echo(m.Option(ice.MSG_USERNAME))
|
||||
"/header": {Name: "/header", Help: "标题栏", Action: map[string]*ice.Action{
|
||||
AGENT: {Name: "agent", Help: "应用宿主", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy("web.chat.wx.access", "config")
|
||||
}},
|
||||
LOGIN: {Name: "login", Help: "密码登录", Hand: func(m *ice.Message, arg ...string) {
|
||||
CHECK: {Name: "check", Help: "登录检查", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_check(m, arg...)
|
||||
}},
|
||||
SHARE: {Name: "share type", Help: "扫码登录", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_share(m, arg...)
|
||||
}},
|
||||
GRANT: {Name: "grant space", Help: "扫码授权", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_grant(m, arg...)
|
||||
}},
|
||||
|
||||
aaa.LOGIN: {Name: "login", Help: "密码登录", Hand: func(m *ice.Message, arg ...string) {
|
||||
if aaa.UserLogin(m, arg[0], arg[1]) {
|
||||
web.RenderCookie(m, aaa.SessCreate(m, arg[0]))
|
||||
}
|
||||
m.Echo(m.Option(ice.MSG_USERNAME))
|
||||
}},
|
||||
GRANT: {Name: "grant space", Help: "扫码授权", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_grant(m, arg...)
|
||||
}},
|
||||
SHARE: {Name: "share type", Help: "扫码登录", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_share(m, arg...)
|
||||
}},
|
||||
AGENT: {Name: "agent", Help: "应用宿主", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy("web.chat.wx.access", "config")
|
||||
}},
|
||||
LOGOUT: {Name: "logout", Help: "退出登录", Hand: func(m *ice.Message, arg ...string) {
|
||||
aaa.LOGOUT: {Name: "logout", Help: "退出登录", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmd(aaa.SESS, mdb.REMOVE, ice.OptionHash(m.Option(ice.MSG_SESSID)))
|
||||
}},
|
||||
|
||||
code.WEBPACK: {Name: "webpack", Help: "网页打包", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(code.WEBPACK, mdb.CREATE, kit.MDB_NAME, m.Option(kit.MDB_NAME))
|
||||
}},
|
||||
aaa.BACKGROUND: {Name: "background", Help: "背景图片", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_users(m, aaa.BACKGROUND, arg...)
|
||||
aaa.AVATAR: {Name: "avatar", Help: "头像图片", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_users(m, aaa.AVATAR, arg...)
|
||||
}},
|
||||
aaa.USERNICK: {Name: "usernick", Help: "用户昵称", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_users(m, aaa.USERNICK, arg...)
|
||||
}},
|
||||
aaa.AVATAR: {Name: "avatar", Help: "头像图片", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_users(m, aaa.AVATAR, arg...)
|
||||
aaa.BACKGROUND: {Name: "background", Help: "背景图片", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_users(m, aaa.BACKGROUND, arg...)
|
||||
}},
|
||||
code.WEBPACK: {Name: "webpack", Help: "网页打包", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(code.WEBPACK, mdb.CREATE, m.OptionSimple(kit.MDB_NAME))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
user := m.Cmd("aaa.user", m.Option(ice.MSG_USERNAME))
|
||||
|
@ -40,7 +40,7 @@ func init() {
|
||||
)},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
LOCATION: {Name: "location hash auto getLocation", Help: "地理位置", Action: map[string]*ice.Action{
|
||||
LOCATION: {Name: "location hash auto getLocation", Help: "地理位置", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
OPENLOCATION: {Name: "openLocation", Help: "地图", Hand: func(m *ice.Message, arg ...string) {}},
|
||||
GETLOCATION: {Name: "getLocation", Help: "打卡", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.INSERT, m.Prefix(LOCATION), "", mdb.HASH, arg)
|
||||
@ -48,22 +48,7 @@ func init() {
|
||||
mdb.CREATE: {Name: "create type=text name text latitude longitude", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.INSERT, m.Prefix(LOCATION), "", mdb.HASH, arg)
|
||||
}},
|
||||
mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.MODIFY, m.Prefix(LOCATION), "", mdb.HASH, m.OptionSimple(kit.MDB_HASH), arg)
|
||||
}},
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.DELETE, m.Prefix(LOCATION), "", mdb.HASH, m.OptionSimple(kit.MDB_TEXT))
|
||||
}},
|
||||
mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.EXPORT, m.Prefix(LOCATION), "", mdb.HASH)
|
||||
}},
|
||||
mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.IMPORT, m.Prefix(LOCATION), "", mdb.HASH)
|
||||
}},
|
||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.INPUTS, m.Prefix(LOCATION), "", mdb.HASH, arg)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction(LOCATION)), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Fields(len(arg), m.Conf(LOCATION, kit.META_FIELD))
|
||||
m.Cmdy(mdb.SELECT, m.Prefix(LOCATION), "", mdb.HASH, kit.MDB_HASH, arg)
|
||||
m.PushAction(OPENLOCATION, mdb.REMOVE)
|
||||
|
@ -22,23 +22,11 @@ func init() {
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Load() }},
|
||||
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Save() }},
|
||||
|
||||
MISS: {Name: "miss name auto create", Help: "资料", Meta: kit.Dict("_trans", kit.Dict("name", "姓名")), Action: map[string]*ice.Action{
|
||||
MISS: {Name: "miss name auto create", Help: "资料", Meta: kit.Dict("_trans", kit.Dict("name", "姓名")), Action: ice.MergeAction(map[string]*ice.Action{
|
||||
mdb.CREATE: {Name: "create name 照片 性别 年龄 身高 体重 籍贯 户口 学历 学校 职业 公司 年薪 资产 家境", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.INSERT, m.Prefix(MISS), "", mdb.HASH, arg)
|
||||
}},
|
||||
mdb.MODIFY: {Name: "modify key value", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.MODIFY, m.Prefix(MISS), "", mdb.HASH, m.OptionSimple(kit.MDB_NAME), arg)
|
||||
}},
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.DELETE, m.Prefix(MISS), "", mdb.HASH, m.OptionSimple(kit.MDB_NAME))
|
||||
}},
|
||||
mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.EXPORT, m.Prefix(MISS), "", mdb.HASH)
|
||||
}},
|
||||
mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.IMPORT, m.Prefix(MISS), "", mdb.HASH)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction(MISS)), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Fields(len(arg), m.Conf(MISS, kit.META_FIELD))
|
||||
m.Cmd(mdb.SELECT, m.Prefix(MISS), "", mdb.HASH, kit.MDB_NAME, arg).Table(func(index int, value map[string]string, head []string) {
|
||||
value["照片"] = kit.Format(`<img src="%s" height=%s>`, value["照片"], kit.Select("100", "400", m.Option(mdb.FIELDS) == mdb.DETAIL))
|
||||
|
@ -16,7 +16,7 @@ func init() {
|
||||
)},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
PASTE: {Name: "paste hash auto getClipboardData", Help: "粘贴板", Action: map[string]*ice.Action{
|
||||
PASTE: {Name: "paste hash auto getClipboardData", Help: "粘贴板", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
"getClipboardData": {Name: "getClipboardData", Help: "粘贴", Hand: func(m *ice.Message, arg ...string) {
|
||||
_trans(arg, map[string]string{"data": "text"})
|
||||
m.Cmdy(mdb.INSERT, m.Prefix(PASTE), "", mdb.HASH, arg)
|
||||
@ -25,22 +25,7 @@ func init() {
|
||||
_trans(arg, map[string]string{"data": "text"})
|
||||
m.Cmdy(mdb.INSERT, m.Prefix(PASTE), "", mdb.HASH, arg)
|
||||
}},
|
||||
mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.MODIFY, m.Prefix(PASTE), "", mdb.HASH, m.OptionSimple(kit.MDB_HASH), arg)
|
||||
}},
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.DELETE, m.Prefix(PASTE), "", mdb.HASH, m.OptionSimple(kit.MDB_HASH))
|
||||
}},
|
||||
mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.EXPORT, m.Prefix(PASTE), "", mdb.HASH)
|
||||
}},
|
||||
mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.IMPORT, m.Prefix(PASTE), "", mdb.HASH)
|
||||
}},
|
||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.INPUTS, m.Prefix(PASTE), "", mdb.HASH, arg)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction(PASTE)), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Fields(len(arg), m.Conf(PASTE, kit.META_FIELD))
|
||||
if m.Cmdy(mdb.SELECT, cmd, "", mdb.HASH, kit.MDB_HASH, arg); len(arg) > 0 {
|
||||
m.PushScript("script", m.Append(kit.MDB_TEXT))
|
||||
|
@ -3,6 +3,7 @@ package chat
|
||||
import (
|
||||
ice "github.com/shylinux/icebergs"
|
||||
"github.com/shylinux/icebergs/base/aaa"
|
||||
"github.com/shylinux/icebergs/base/cli"
|
||||
"github.com/shylinux/icebergs/base/ctx"
|
||||
"github.com/shylinux/icebergs/base/mdb"
|
||||
"github.com/shylinux/icebergs/base/tcp"
|
||||
@ -48,19 +49,13 @@ func _river_list(m *ice.Message) {
|
||||
})
|
||||
}
|
||||
func _river_proxy(m *ice.Message, pod string) (proxy []string) {
|
||||
if p := kit.Select(m.Option(POD), pod); p != "" {
|
||||
if p := kit.Select(m.Option(cli.POD), pod); p != "" {
|
||||
proxy = append(proxy, web.SPACE, p)
|
||||
m.Option(POD, "")
|
||||
m.Option(cli.POD, "")
|
||||
}
|
||||
return proxy
|
||||
}
|
||||
|
||||
const (
|
||||
POD = "pod"
|
||||
CTX = "ctx"
|
||||
CMD = "cmd"
|
||||
ARG = "arg"
|
||||
)
|
||||
const (
|
||||
INFO = "info"
|
||||
AUTH = "auth"
|
||||
@ -178,9 +173,9 @@ func init() {
|
||||
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))
|
||||
|
||||
cmd := kit.Keys(msg.Append(CTX), msg.Append(CMD))
|
||||
cmd := kit.Keys(msg.Append(cli.CTX), msg.Append(cli.CMD))
|
||||
_action_domain(m, cmd, m.Option(kit.MDB_HASH))
|
||||
m.Cmdy(_river_proxy(msg, msg.Append(POD)), cmd, mdb.EXPORT)
|
||||
m.Cmdy(_river_proxy(msg, msg.Append(cli.POD)), cmd, mdb.EXPORT)
|
||||
}
|
||||
}},
|
||||
mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
||||
@ -188,9 +183,9 @@ func init() {
|
||||
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))
|
||||
|
||||
cmd := kit.Keys(msg.Append(CTX), msg.Append(CMD))
|
||||
cmd := kit.Keys(msg.Append(cli.CTX), msg.Append(cli.CMD))
|
||||
_action_domain(m, cmd, m.Option(kit.MDB_HASH))
|
||||
m.Cmdy(_river_proxy(msg, msg.Append(POD)), cmd, mdb.IMPORT)
|
||||
m.Cmdy(_river_proxy(msg, msg.Append(cli.POD)), cmd, mdb.IMPORT)
|
||||
}
|
||||
}},
|
||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
@ -200,16 +195,16 @@ func init() {
|
||||
m.Push(kit.MDB_HASH, value[kit.MDB_HASH])
|
||||
m.Push(kit.MDB_NAME, value[kit.MDB_NAME])
|
||||
})
|
||||
case POD:
|
||||
case cli.POD:
|
||||
m.Cmdy(web.ROUTE)
|
||||
case CTX:
|
||||
case cli.CTX:
|
||||
m.Cmd(ctx.CONTEXT, "web").Table(func(index int, value map[string]string, head []string) {
|
||||
m.Push(CTX, kit.Keys(kit.Select("", value["ups"], value["ups"] != "shy"), value[kit.MDB_NAME]))
|
||||
m.Push(cli.CTX, kit.Keys(kit.Select("", value["ups"], value["ups"] != "shy"), value[kit.MDB_NAME]))
|
||||
m.Push(kit.MDB_HELP, value[kit.MDB_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.Push(CMD, value[kit.MDB_KEY])
|
||||
case cli.CMD, kit.MDB_HELP:
|
||||
m.Cmd(ctx.CONTEXT, m.Option(cli.CTX), ctx.COMMAND).Table(func(index int, value map[string]string, head []string) {
|
||||
m.Push(cli.CMD, value[kit.MDB_KEY])
|
||||
m.Push(kit.MDB_NAME, value[kit.MDB_NAME])
|
||||
m.Push(kit.MDB_HELP, value[kit.MDB_HELP])
|
||||
})
|
||||
@ -226,12 +221,12 @@ func init() {
|
||||
|
||||
m.Option(mdb.FIELDS, "time,id,pod,ctx,cmd,arg,display,style")
|
||||
msg := m.Cmd(mdb.SELECT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL, kit.MDB_HASH, arg[0]), mdb.LIST, kit.MDB_ID, kit.Select("", arg, 1))
|
||||
if len(msg.Appendv(CMD)) == 0 && len(arg) > 1 {
|
||||
msg.Push(CMD, arg[1])
|
||||
if len(msg.Appendv(cli.CMD)) == 0 && len(arg) > 1 {
|
||||
msg.Push(cli.CMD, arg[1])
|
||||
}
|
||||
|
||||
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(cli.POD)), kit.Keys(msg.Append(cli.CTX), msg.Append(cli.CMD)), arg[3:])
|
||||
return // 执行命令
|
||||
}
|
||||
if m.Copy(msg); len(arg) < 2 {
|
||||
@ -243,7 +238,7 @@ func init() {
|
||||
// 命令插件
|
||||
m.ProcessField(arg[0], arg[1], "run")
|
||||
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[cli.POD], ctx.CONTEXT, value[cli.CTX], ctx.COMMAND, value[cli.CMD])
|
||||
})
|
||||
}},
|
||||
USER: {Name: "user username auto insert invite", Help: "用户", Action: map[string]*ice.Action{
|
||||
@ -290,7 +285,7 @@ func init() {
|
||||
|
||||
kit.Fetch(value, func(index int, value string) {
|
||||
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, cmd.Help)
|
||||
m.Cmd(TOOL, mdb.INSERT, kit.MDB_HASH, h, cli.CTX, s.Cap(ice.CTX_FOLLOW), cli.CMD, key, kit.MDB_HELP, cmd.Help)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
@ -16,7 +16,7 @@ func init() {
|
||||
)},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
SCAN: {Name: "scan hash auto scanQRCode scanQRCode0", Help: "二维码", Action: map[string]*ice.Action{
|
||||
SCAN: {Name: "scan hash auto scanQRCode scanQRCode0", Help: "二维码", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
"scanQRCode0": {Name: "create", Help: "本机扫码", Hand: func(m *ice.Message, arg ...string) {}},
|
||||
"scanQRCode": {Name: "create", Help: "扫码", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.INSERT, m.Prefix(SCAN), "", mdb.HASH, arg)
|
||||
@ -24,22 +24,7 @@ func init() {
|
||||
mdb.CREATE: {Name: "create type=text name=hi text:textarea=hi", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.INSERT, m.Prefix(SCAN), "", mdb.HASH, arg)
|
||||
}},
|
||||
mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.MODIFY, m.Prefix(SCAN), "", mdb.HASH, m.OptionSimple(kit.MDB_HASH), arg)
|
||||
}},
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.DELETE, m.Prefix(SCAN), "", mdb.HASH, m.OptionSimple(kit.MDB_HASH))
|
||||
}},
|
||||
mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.EXPORT, m.Prefix(SCAN), "", mdb.HASH)
|
||||
}},
|
||||
mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.IMPORT, m.Prefix(SCAN), "", mdb.HASH)
|
||||
}},
|
||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.INPUTS, m.Prefix(SCAN), "", mdb.HASH, arg)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}, mdb.HashAction(SCAN)), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Fields(len(arg), m.Conf(SCAN, kit.META_FIELD))
|
||||
if m.Cmdy(mdb.SELECT, m.Prefix(SCAN), "", mdb.HASH, kit.MDB_HASH, arg); len(arg) > 0 {
|
||||
m.PushScript("script", m.Append(kit.MDB_TEXT))
|
||||
|
@ -29,7 +29,7 @@ func init() {
|
||||
})
|
||||
}},
|
||||
mdb.RENDER: {Name: "render", Help: "渲染", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(m.Space(m.Option(POD)), mdb.RENDER, arg[1:])
|
||||
m.Cmdy(m.Space(m.Option(cli.POD)), mdb.RENDER, arg[1:])
|
||||
}},
|
||||
ctx.COMMAND: {Name: "command", Help: "命令", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(ctx.COMMAND, arg)
|
||||
@ -41,7 +41,7 @@ func init() {
|
||||
if kit.Contains(arg[1], ";") {
|
||||
arg = kit.Split(arg[1], ";", ";", ";")
|
||||
}
|
||||
if m.Cmdy(m.Space(m.Option(POD)), mdb.SEARCH, arg); arg[1] == "" {
|
||||
if m.Cmdy(m.Space(m.Option(cli.POD)), mdb.SEARCH, arg); arg[1] == "" {
|
||||
return
|
||||
}
|
||||
m.Cmd(mdb.INSERT, m.Prefix(P_SEARCH), "", mdb.HASH,
|
||||
|
@ -7,7 +7,6 @@ import (
|
||||
"github.com/shylinux/icebergs/base/cli"
|
||||
"github.com/shylinux/icebergs/base/ctx"
|
||||
"github.com/shylinux/icebergs/base/mdb"
|
||||
"github.com/shylinux/icebergs/base/web"
|
||||
kit "github.com/shylinux/toolkits"
|
||||
)
|
||||
|
||||
@ -51,15 +50,11 @@ func _asset_insert(m *ice.Message, account string, arg ...string) {
|
||||
m.Cmdy(mdb.MODIFY, m.Prefix(ASSET), "", mdb.HASH, ACCOUNT, account, AMOUNT, amount)
|
||||
}
|
||||
func _asset_inputs(m *ice.Message, field, value string) {
|
||||
switch strings.TrimPrefix(field, "extra.") {
|
||||
case "pod":
|
||||
m.Cmdy(web.ROUTE)
|
||||
case "ctx":
|
||||
m.Cmdy(ctx.CONTEXT)
|
||||
case "cmd":
|
||||
m.Cmdy(ctx.CONTEXT, kit.Select(m.Option("ctx"), m.Option("extra.ctx")), ctx.COMMAND)
|
||||
case "arg":
|
||||
if cli.Inputs(m, field, value) {
|
||||
return
|
||||
}
|
||||
|
||||
switch strings.TrimPrefix(field, "extra.") {
|
||||
case ACCOUNT, FROM, TO:
|
||||
m.Cmdy(mdb.INPUTS, m.Prefix(ASSET), "", mdb.HASH, ACCOUNT, value)
|
||||
default:
|
||||
|
@ -5,9 +5,8 @@ import (
|
||||
"time"
|
||||
|
||||
ice "github.com/shylinux/icebergs"
|
||||
"github.com/shylinux/icebergs/base/ctx"
|
||||
"github.com/shylinux/icebergs/base/cli"
|
||||
"github.com/shylinux/icebergs/base/mdb"
|
||||
"github.com/shylinux/icebergs/base/web"
|
||||
kit "github.com/shylinux/toolkits"
|
||||
)
|
||||
|
||||
@ -74,24 +73,11 @@ func _task_modify(m *ice.Message, field, value string, arg ...string) {
|
||||
m.Cmdy(mdb.MODIFY, m.Prefix(TASK), "", mdb.ZONE, m.Option(kit.MDB_ZONE), m.Option(kit.MDB_ID), field, value, arg)
|
||||
}
|
||||
func _task_inputs(m *ice.Message, field, value string) {
|
||||
switch strings.TrimPrefix(field, "extra.") {
|
||||
case "pod":
|
||||
m.Cmd(web.SPACE).Table(func(index int, value map[string]string, head []string) {
|
||||
m.Push(field, value[kit.MDB_NAME])
|
||||
m.Push("", value, []string{kit.MDB_TYPE})
|
||||
})
|
||||
case "ctx":
|
||||
m.Cmd(m.Space(m.Option("extra.pod")), ctx.CONTEXT).Table(func(index int, value map[string]string, head []string) {
|
||||
m.Push(field, value[kit.MDB_NAME])
|
||||
m.Push("", value, []string{kit.MDB_HELP})
|
||||
})
|
||||
case "cmd":
|
||||
m.Cmd(m.Space(m.Option("extra.pod")), ctx.CONTEXT, m.Option("extra.ctx"), ctx.COMMAND).Table(func(index int, value map[string]string, head []string) {
|
||||
m.Push(field, value[kit.MDB_KEY])
|
||||
m.Push("", value, []string{kit.MDB_HELP})
|
||||
})
|
||||
case "arg":
|
||||
if cli.Inputs(m, field, value) {
|
||||
return
|
||||
}
|
||||
|
||||
switch strings.TrimPrefix(field, "extra.") {
|
||||
case kit.MDB_ZONE:
|
||||
m.Cmdy(mdb.INPUTS, m.Prefix(TASK), "", mdb.HASH, field, value)
|
||||
default:
|
||||
|
22
misc.go
22
misc.go
@ -577,3 +577,25 @@ func (m *Message) OptionTemplate() string {
|
||||
})
|
||||
return strings.Join(res, " ")
|
||||
}
|
||||
func (m *Message) PodCmd(arg ...interface{}) bool {
|
||||
if pod := m.Option(kit.SSH_POD); pod != "" {
|
||||
m.Option(kit.SSH_POD, "")
|
||||
m.Cmd(append([]interface{}{"space", pod}, arg...))
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func MergeAction(list ...map[string]*Action) map[string]*Action {
|
||||
if len(list) == 0 {
|
||||
return nil
|
||||
}
|
||||
for _, item := range list[1:] {
|
||||
for k, v := range item {
|
||||
if _, ok := list[0][k]; !ok {
|
||||
list[0][k] = v
|
||||
}
|
||||
}
|
||||
}
|
||||
return list[0]
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user