forked from x/icebergs
opt grant
This commit is contained in:
parent
3fc85d2178
commit
a15365fbb0
@ -59,6 +59,9 @@ func _config_load(m *ice.Message, name string, arg ...string) {
|
||||
for k, v := range data {
|
||||
msg.Search(k, func(p *ice.Context, s *ice.Context, key string) {
|
||||
m.Log_IMPORT(CONFIG, kit.Keys(s.Name, key), nfs.FILE, name)
|
||||
if s.Configs[key] == nil {
|
||||
s.Configs[key] = &ice.Config{}
|
||||
}
|
||||
s.Configs[key].Value = v
|
||||
})
|
||||
}
|
||||
|
@ -137,7 +137,7 @@ func _hash_prunes(m *ice.Message, prefix, chain string, arg ...string) {
|
||||
|
||||
const HASH = "hash"
|
||||
|
||||
func HashAction(fields ...string) map[string]*ice.Action {
|
||||
func HashAction(args ...interface{}) map[string]*ice.Action {
|
||||
_key := func(m *ice.Message) string {
|
||||
if m.Config(HASH) == "uniq" {
|
||||
return HASH
|
||||
@ -148,6 +148,11 @@ func HashAction(fields ...string) map[string]*ice.Action {
|
||||
return kit.Select(HASH, m.Config(SHORT))
|
||||
}
|
||||
return ice.SelectAction(map[string]*ice.Action{
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
|
||||
if cs := m.Target().Configs; cs[m.CommandKey()] == nil {
|
||||
cs[m.CommandKey()] = &ice.Config{Value: kit.Data(args...)}
|
||||
}
|
||||
}},
|
||||
INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(INPUTS, m.PrefixKey(), "", HASH, arg)
|
||||
}},
|
||||
@ -172,10 +177,13 @@ func HashAction(fields ...string) map[string]*ice.Action {
|
||||
PRUNES: &ice.Action{Name: "prunes before@date", Help: "清理", Hand: func(m *ice.Message, arg ...string) {
|
||||
HashPrunes(m, nil)
|
||||
}},
|
||||
}, fields...)
|
||||
SELECT: &ice.Action{Name: "select hash auto", Help: "列表", Hand: func(m *ice.Message, arg ...string) {
|
||||
HashSelect(m, arg...)
|
||||
}},
|
||||
})
|
||||
}
|
||||
func HashActionStatus(fields ...string) map[string]*ice.Action {
|
||||
list := HashAction(fields...)
|
||||
func HashActionStatus(args ...interface{}) map[string]*ice.Action {
|
||||
list := HashAction(args...)
|
||||
list[PRUNES] = &ice.Action{Name: "prunes", Help: "清理", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.OptionFields(m.Config(FIELD))
|
||||
m.Cmdy(PRUNES, m.PrefixKey(), "", HASH, STATUS, "error")
|
||||
|
@ -126,10 +126,15 @@ func _zone_import(m *ice.Message, prefix, chain, file string) {
|
||||
|
||||
const ZONE = "zone"
|
||||
|
||||
func ZoneAction(fields ...string) map[string]*ice.Action {
|
||||
func ZoneAction(args ...interface{}) map[string]*ice.Action {
|
||||
_zone := func(m *ice.Message) string { return kit.Select(ZONE, m.Config(SHORT)) }
|
||||
|
||||
return ice.SelectAction(map[string]*ice.Action{
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
|
||||
if cs := m.Target().Configs; cs[m.CommandKey()] == nil {
|
||||
cs[m.CommandKey()] = &ice.Config{Value: kit.Data(args...)}
|
||||
}
|
||||
}},
|
||||
INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
arg[0] = strings.TrimPrefix(arg[0], "extra.")
|
||||
arg[0] = kit.Select(arg[0], m.Config(kit.Keys(kit.MDB_ALIAS, arg[0])))
|
||||
@ -164,6 +169,9 @@ func ZoneAction(fields ...string) map[string]*ice.Action {
|
||||
MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(MODIFY, m.PrefixKey(), "", ZONE, m.Option(_zone(m)), m.Option(ID), arg)
|
||||
}},
|
||||
PLUGIN: {Name: "plugin extra.pod extra.ctx extra.cmd extra.arg", Help: "插件", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(MODIFY, m.PrefixKey(), "", ZONE, m.Option(_zone(m)), m.Option(ID), arg)
|
||||
}},
|
||||
EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(ice.CACHE_LIMIT, "-1")
|
||||
m.OptionFields(_zone(m), m.Config(FIELD))
|
||||
@ -173,16 +181,16 @@ func ZoneAction(fields ...string) map[string]*ice.Action {
|
||||
m.OptionFields(_zone(m))
|
||||
m.Cmdy(IMPORT, m.PrefixKey(), "", ZONE)
|
||||
}},
|
||||
PLUGIN: {Name: "plugin extra.pod extra.ctx extra.cmd extra.arg", Help: "插件", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(MODIFY, m.PrefixKey(), "", ZONE, m.Option(_zone(m)), m.Option(ID), arg)
|
||||
}},
|
||||
PREV: {Name: "prev", Help: "上一页", Hand: func(m *ice.Message, arg ...string) {
|
||||
PrevPage(m, arg[0], arg[1:]...)
|
||||
}},
|
||||
NEXT: {Name: "next", Help: "下一页", Hand: func(m *ice.Message, arg ...string) {
|
||||
NextPageLimit(m, arg[0], arg[1:]...)
|
||||
}},
|
||||
}, fields...)
|
||||
SELECT: &ice.Action{Name: "select hash auto", Help: "列表", Hand: func(m *ice.Message, arg ...string) {
|
||||
ZoneSelect(m, arg...)
|
||||
}},
|
||||
})
|
||||
}
|
||||
func ZoneSelect(m *ice.Message, arg ...string) *ice.Message {
|
||||
m.Fields(len(arg), kit.Fields(TIME, m.Config(SHORT), COUNT), m.Config(FIELD))
|
||||
|
21
conf.go
21
conf.go
@ -46,7 +46,7 @@ const (
|
||||
ERR = "err"
|
||||
|
||||
POD = "pod"
|
||||
CTX = "ctx"
|
||||
// CTX = "ctx"
|
||||
CMD = "cmd"
|
||||
ARG = "arg"
|
||||
OPT = "opt"
|
||||
@ -282,3 +282,22 @@ const ( // CTX
|
||||
CTX_INIT = "_init"
|
||||
CTX_EXIT = "_exit"
|
||||
)
|
||||
|
||||
const (
|
||||
CTX = "ctx"
|
||||
CLI = "cli"
|
||||
WEB = "web"
|
||||
AAA = "aaa"
|
||||
LEX = "lex"
|
||||
YAC = "yac"
|
||||
GDB = "gdb"
|
||||
LOG = "log"
|
||||
TCP = "tcp"
|
||||
NFS = "nfs"
|
||||
SSH = "ssh"
|
||||
MDB = "mdb"
|
||||
)
|
||||
const (
|
||||
COMMAND = "command"
|
||||
ACTION = "action"
|
||||
)
|
||||
|
@ -41,6 +41,8 @@ func _header_check(m *ice.Message, arg ...string) {
|
||||
}
|
||||
}
|
||||
func _header_grant(m *ice.Message, arg ...string) {
|
||||
m.Cmd(GRANT, mdb.INSERT, kit.SimpleKV("space,grant,userrole,username",
|
||||
m.Option(ice.POD), m.Option(web.SPACE), m.Option(ice.MSG_USERROLE), m.Option(ice.MSG_USERNAME)))
|
||||
if m.PodCmd(m.PrefixKey(), ctx.ACTION, GRANT, arg) {
|
||||
return // 下发命令
|
||||
}
|
||||
@ -71,7 +73,6 @@ const (
|
||||
TRANS = "trans"
|
||||
AGENT = "agent"
|
||||
CHECK = "check"
|
||||
GRANT = "grant"
|
||||
SHARE = "share"
|
||||
)
|
||||
const HEADER = "header"
|
||||
@ -145,6 +146,15 @@ func init() {
|
||||
m.Option(k, msg.Append(k))
|
||||
}
|
||||
|
||||
if m.Option(GRANT) != "" {
|
||||
if m.Cmd(GRANT, m.Option(ice.POD), 1).Length() > 0 {
|
||||
_header_grant(m, web.SPACE, m.Option(GRANT))
|
||||
}
|
||||
m.Debug("what %v", m.FormatMeta())
|
||||
m.Option(GRANT, ice.TRUE)
|
||||
m.Debug("what %v", m.FormatMeta())
|
||||
}
|
||||
|
||||
m.Option(TRANS, kit.Format(kit.Value(c.Commands[cmd].Meta, "_trans")))
|
||||
m.Option(MENUS, m.Config(MENUS))
|
||||
m.Echo(m.Config(TITLE))
|
||||
|
2
go.sum
2
go.sum
@ -1,7 +1,9 @@
|
||||
shylinux.com/x/go-qrcode v0.0.1 h1:/eOGqMj1qtgs9Ymd12zTUa1gcJZs9S92kj2lb0QzKsE=
|
||||
shylinux.com/x/go-qrcode v0.0.1/go.mod h1:KAbtU+KwiiABMZ/CJ0zh9PI2AX82Uf9rRYcQ4ODm4po=
|
||||
shylinux.com/x/ice v0.4.7/go.mod h1:nQaisRsVHtTZT2FWr97VE984xhfEDpcBpYJUbx8qX94=
|
||||
shylinux.com/x/icebergs v0.7.8/go.mod h1:frbUQPPU+TaMODwp701HIATVaApfQPtA2Q3MtO1El5A=
|
||||
shylinux.com/x/toolkits v0.4.3/go.mod h1:8LbYHe7oxBIqb6s4MSOD+4d28QvPdvkyCVtwB/JW7AA=
|
||||
shylinux.com/x/toolkits v0.4.4 h1:ThgoO8cqoZL4yRjQdSvsyPG5nQBIBR2dTvZNK/diIro=
|
||||
shylinux.com/x/toolkits v0.4.4/go.mod h1:8LbYHe7oxBIqb6s4MSOD+4d28QvPdvkyCVtwB/JW7AA=
|
||||
shylinux.com/x/websocket v0.0.1 h1:OBc21DxqsGlQ2+Pz76xqLyDNo1LV+PUUqfWi+1PZPDE=
|
||||
shylinux.com/x/websocket v0.0.1/go.mod h1:AaSpMToOxbMULKQytzczeHPuqb708vK1vrAzCxLo/XE=
|
||||
|
13
misc.go
13
misc.go
@ -111,7 +111,7 @@ func (m *Message) SetAppend(arg ...string) *Message {
|
||||
func (m *Message) SetResult(arg ...string) *Message {
|
||||
return m.Set(MSG_RESULT, arg...)
|
||||
}
|
||||
func (m *Message) RenameAppend(from, to string) {
|
||||
func (m *Message) RenameAppend(from, to string) *Message {
|
||||
for i, v := range m.meta[MSG_APPEND] {
|
||||
if v == from {
|
||||
m.meta[MSG_APPEND][i] = to
|
||||
@ -119,6 +119,7 @@ func (m *Message) RenameAppend(from, to string) {
|
||||
delete(m.meta, from)
|
||||
}
|
||||
}
|
||||
return m
|
||||
}
|
||||
func (m *Message) AppendSimple(key ...string) (res []string) {
|
||||
if len(key) == 0 {
|
||||
@ -229,21 +230,25 @@ func (c *Context) cmd(m *Message, cmd *Command, key string, arg ...string) *Mess
|
||||
}
|
||||
|
||||
m.meta[MSG_DETAIL] = kit.Simple(key, arg)
|
||||
if m.Hand = true; len(arg) > 1 && arg[0] == "action" && cmd.Action != nil {
|
||||
if m.Hand = true; len(arg) > 1 && arg[0] == ACTION && cmd.Action != nil {
|
||||
if h, ok := cmd.Action[arg[1]]; ok {
|
||||
return c._cmd(m, cmd, key, arg[1], h, arg[2:]...)
|
||||
}
|
||||
}
|
||||
if len(arg) > 0 && arg[0] != "command" && cmd.Action != nil {
|
||||
if len(arg) > 0 && arg[0] != COMMAND && cmd.Action != nil {
|
||||
if h, ok := cmd.Action[arg[0]]; ok {
|
||||
return c._cmd(m, cmd, key, arg[0], h, arg[1:]...)
|
||||
}
|
||||
}
|
||||
|
||||
m.Log(LOG_CMDS, "%s.%s %d %v %s", c.Name, key, len(arg), arg,
|
||||
kit.Select(kit.FileLine(cmd.Hand, 3), kit.FileLine(9, 3), m.target.Name == "mdb"))
|
||||
kit.Select(kit.FileLine(cmd.Hand, 3), kit.FileLine(9, 3), m.target.Name == MDB))
|
||||
|
||||
if cmd.Hand != nil {
|
||||
cmd.Hand(m, c, key, arg...)
|
||||
} else if cmd.Action != nil && cmd.Action["select"] != nil {
|
||||
cmd.Action["select"].Hand(m, arg...)
|
||||
}
|
||||
return m
|
||||
}
|
||||
func (c *Context) _cmd(m *Message, cmd *Command, key string, k string, h *Action, arg ...string) *Message {
|
||||
|
Loading…
x
Reference in New Issue
Block a user