1
0
mirror of https://shylinux.com/x/icebergs synced 2025-04-26 01:24:05 +08:00
This commit is contained in:
shaoying 2021-07-28 08:22:22 +08:00
parent d8c03d6331
commit b015003088
17 changed files with 161 additions and 175 deletions

View File

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

View File

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

View File

@ -129,3 +129,5 @@ func _list_inputs(m *ice.Message, prefix, chain string, field, value string) {
}
m.SortIntR(kit.MDB_COUNT)
}
const LIST = "list"

View File

@ -140,8 +140,6 @@ const (
const (
DICT = "dict"
META = "meta"
HASH = "hash"
LIST = "list"
ZONE = "zone"
)
const (

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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