diff --git a/base/aaa/aaa.go b/base/aaa/aaa.go index e9a8ee72..0a9d558a 100644 --- a/base/aaa/aaa.go +++ b/base/aaa/aaa.go @@ -25,8 +25,8 @@ const AAA = "aaa" var Index = &ice.Context{Name: AAA, Help: "认证模块", Commands: map[string]*ice.Command{ ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - m.Rich(ROLE, nil, kit.Dict(kit.MDB_NAME, VOID, White, kit.Dict(), Black, kit.Dict())) - m.Rich(ROLE, nil, kit.Dict(kit.MDB_NAME, TECH, Black, kit.Dict(), White, kit.Dict())) + m.Rich(ROLE, nil, kit.Dict(kit.MDB_NAME, VOID, WHITE, kit.Dict(), BLACK, kit.Dict())) + m.Rich(ROLE, nil, kit.Dict(kit.MDB_NAME, TECH, BLACK, kit.Dict(), WHITE, kit.Dict())) m.Load() m.Cmd(mdb.SEARCH, mdb.CREATE, USER, USER, AAA) }}, diff --git a/base/aaa/aaa.shy b/base/aaa/aaa.shy index cbd8e872..93497216 100644 --- a/base/aaa/aaa.shy +++ b/base/aaa/aaa.shy @@ -3,3 +3,4 @@ chapter "aaa" field "用户" user field "会话" sess field "角色" role +field "令牌" totp diff --git a/base/aaa/role.go b/base/aaa/role.go index 86dbc22c..79fc8c34 100644 --- a/base/aaa/role.go +++ b/base/aaa/role.go @@ -14,12 +14,9 @@ const ( // 用户角色 VOID = "void" ) const ( // 角色操作 - White = "white" - Black = "black" - Right = "right" - WHITE = "white" BLACK = "black" + RIGHT = "right" ) const ( // 返回结果 OK = "ok" @@ -27,14 +24,14 @@ const ( // 返回结果 func _role_list(m *ice.Message, userrole string) { m.Richs(ROLE, nil, kit.Select(kit.MDB_FOREACH, userrole), func(key string, value map[string]interface{}) { - for k := range value[White].(map[string]interface{}) { + for k := range value[WHITE].(map[string]interface{}) { m.Push(ROLE, kit.Value(value, kit.MDB_NAME)) - m.Push(kit.MDB_ZONE, White) + m.Push(kit.MDB_ZONE, WHITE) m.Push(kit.MDB_KEY, k) } - for k := range value[Black].(map[string]interface{}) { + for k := range value[BLACK].(map[string]interface{}) { m.Push(ROLE, kit.Value(value, kit.MDB_NAME)) - m.Push(kit.MDB_ZONE, Black) + m.Push(kit.MDB_ZONE, BLACK) m.Push(kit.MDB_KEY, k) } }) @@ -54,7 +51,7 @@ func _role_right(m *ice.Message, userrole string, keys ...string) (ok bool) { m.Richs(ROLE, nil, kit.Select(VOID, userrole), func(key string, value map[string]interface{}) { ok = true - list := value[Black].(map[string]interface{}) + list := value[BLACK].(map[string]interface{}) for i := 0; i < len(keys); i++ { if v, o := list[kit.Join(keys[:i+1], ".")]; o && v == true { ok = false @@ -70,7 +67,7 @@ func _role_right(m *ice.Message, userrole string, keys ...string) (ok bool) { } ok = false - list = value[White].(map[string]interface{}) + list = value[WHITE].(map[string]interface{}) for i := 0; i < len(keys); i++ { if v, o := list[kit.Join(keys[:i+1], ".")]; o && v == true { ok = true @@ -85,15 +82,15 @@ func _role_right(m *ice.Message, userrole string, keys ...string) (ok bool) { } func _role_black(m *ice.Message, userrole, chain string, status bool) { m.Richs(ROLE, nil, userrole, func(key string, value map[string]interface{}) { - m.Log_MODIFY(ROLE, userrole, Black, chain) - list := value[Black].(map[string]interface{}) + m.Log_MODIFY(ROLE, userrole, BLACK, chain) + list := value[BLACK].(map[string]interface{}) list[chain] = status }) } func _role_white(m *ice.Message, userrole, chain string, status bool) { m.Richs(ROLE, nil, userrole, func(key string, value map[string]interface{}) { - m.Log_MODIFY(ROLE, userrole, White, chain) - list := value[White].(map[string]interface{}) + m.Log_MODIFY(ROLE, userrole, WHITE, chain) + list := value[WHITE].(map[string]interface{}) list[chain] = status }) } @@ -110,14 +107,14 @@ func init() { ROLE: {Name: ROLE, Help: "角色", Value: kit.Data(kit.MDB_SHORT, kit.MDB_NAME)}, }, Commands: map[string]*ice.Command{ - ROLE: {Name: "role role auto 添加", Help: "角色", Action: map[string]*ice.Action{ - White: {Name: "white role chain...", Help: "白名单", Hand: func(m *ice.Message, arg ...string) { + ROLE: {Name: "role role auto create", Help: "角色", Action: map[string]*ice.Action{ + WHITE: {Name: "white role chain...", Help: "白名单", Hand: func(m *ice.Message, arg ...string) { _role_white(m, arg[0], strings.ReplaceAll(kit.Keys(arg[1:]), "/", "."), true) }}, - Black: {Name: "black role chain...", Help: "黑名单", Hand: func(m *ice.Message, arg ...string) { + BLACK: {Name: "black role chain...", Help: "黑名单", Hand: func(m *ice.Message, arg ...string) { _role_black(m, arg[0], strings.ReplaceAll(kit.Keys(arg[1:]), "/", "."), true) }}, - Right: {Name: "right role chain...", Help: "查看权限", Hand: func(m *ice.Message, arg ...string) { + RIGHT: {Name: "right role chain...", Help: "查看权限", Hand: func(m *ice.Message, arg ...string) { if _role_right(m, arg[0], kit.Split(strings.ReplaceAll(kit.Keys(arg[1:]), "/", "."), ".")...) { m.Echo(OK) } diff --git a/base/aaa/totp.go b/base/aaa/totp.go index 57ee81f6..c33af3af 100644 --- a/base/aaa/totp.go +++ b/base/aaa/totp.go @@ -76,10 +76,16 @@ func init() { m.Cmdy(mdb.DELETE, TOTP, "", mdb.HASH, kit.MDB_NAME, m.Option(kit.MDB_NAME)) }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { + if m.Option("_count") == "" { + m.Option("_count", "20") + } + if kit.Int(m.Option("_count")) > 0 { + m.Option(ice.MSG_PROCESS, "_refresh") + } + + m.Option(mdb.FIELDS, kit.Select("time,name,secret,period,number", mdb.DETAIL, len(arg) > 0)) if len(arg) == 0 { // 密码列表 - m.Option(ice.MSG_PROCESS, "_refresh") - m.Option(mdb.FIELDS, "time,name,secret,period,number") m.Cmd(mdb.SELECT, TOTP, "", mdb.HASH).Table(func(index int, value map[string]string, head []string) { per := kit.Int64(value[PERIOD]) m.Push("time", m.Time()) diff --git a/base/aaa/user.go b/base/aaa/user.go index e646592b..97f086db 100644 --- a/base/aaa/user.go +++ b/base/aaa/user.go @@ -106,7 +106,7 @@ func init() { m.Cmdy(mdb.MODIFY, USER, "", mdb.HASH, USERNAME, m.Option(USERNAME), arg) }}, mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(mdb.REMOVE, USER, "", mdb.HASH, USERNAME, m.Option(USERNAME)) + m.Cmdy(mdb.DELETE, USER, "", mdb.HASH, USERNAME, m.Option(USERNAME)) }}, mdb.SEARCH: {Name: "search type name text arg...", Help: "搜索", Hand: func(m *ice.Message, arg ...string) { _user_search(m, arg[0], arg[1], kit.Select("", arg, 2)) diff --git a/base/base.shy b/base/base.shy new file mode 100644 index 00000000..8eb16bc5 --- /dev/null +++ b/base/base.shy @@ -0,0 +1,15 @@ +source ctx/ctx.shy +source cli/cli.shy +source aaa/aaa.shy +source web/web.shy + +source lex/lex.shy +source yac/yac.shy +source log/log.shy +source gdb/gdb.shy + +source nfs/nfs.shy +source tcp/tcp.shy +source ssh/ssh.shy +source mdb/mdb.shy + diff --git a/base/cli/cli.shy b/base/cli/cli.shy index 4b31e58f..f4e5b876 100644 --- a/base/cli/cli.shy +++ b/base/cli/cli.shy @@ -1,9 +1,8 @@ chapter "cli" +field "脚本" python +field "守护" daemon field "命令" system field "输出" output -field "守护" daemon -field "脚本" python - field "环境" runtime field "进程" cli.proc diff --git a/base/cli/daemon.go b/base/cli/daemon.go index 402e9a98..6bcdff8e 100644 --- a/base/cli/daemon.go +++ b/base/cli/daemon.go @@ -89,7 +89,7 @@ func init() { DAEMON: {Name: DAEMON, Help: "守护进程", Value: kit.Data(kit.MDB_PATH, "var/daemon")}, }, Commands: map[string]*ice.Command{ - DAEMON: {Name: "daemon hash auto 添加 清理", Help: "守护进程", Action: map[string]*ice.Action{ + DAEMON: {Name: "daemon hash auto start prunes", Help: "守护进程", Action: map[string]*ice.Action{ RESTART: {Name: "restart", Help: "重启", Hand: func(m *ice.Message, arg ...string) { m.Cmd(DAEMON, STOP) m.Sleep("1s") @@ -105,7 +105,6 @@ func init() { m.Option(mdb.FIELDS, "time,hash,status,pid,cmd,dir,env") m.Cmd(mdb.SELECT, DAEMON, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH)).Table(func(index int, value map[string]string, head []string) { m.Cmd(mdb.MODIFY, DAEMON, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH), kit.MDB_STATUS, Status.Stop) - m.Debug("what %v", value) m.Cmdy(SYSTEM, "kill", "-9", value[kit.SSH_PID]) }) }}, diff --git a/base/cli/python.go b/base/cli/python.go index e7fbbfd3..aa25ee18 100644 --- a/base/cli/python.go +++ b/base/cli/python.go @@ -18,7 +18,7 @@ func init() { )}, }, Commands: map[string]*ice.Command{ - PYTHON: {Name: "python port path auto 启动:button 构建 下载", Help: "脚本命令", Action: map[string]*ice.Action{ + PYTHON: {Name: "python port path auto start build download", Help: "脚本命令", Action: map[string]*ice.Action{ "download": {Name: "download", Help: "下载", Hand: func(m *ice.Message, arg ...string) { m.Cmdy("web.code.install", "download", m.Conf(PYTHON, "meta.source")) }}, diff --git a/base/cli/runtime.go b/base/cli/runtime.go index 8e6e51fd..f6dbceff 100644 --- a/base/cli/runtime.go +++ b/base/cli/runtime.go @@ -55,8 +55,8 @@ func init() { m.Cmdy("tcp.host") }}, "hostname": {Name: "hostname", Help: "hostname", Hand: func(m *ice.Message, arg ...string) { - m.Conf(RUNTIME, "boot.hostname", arg[1]) - ice.Info.HostName = arg[1] + m.Conf(RUNTIME, "boot.hostname", arg[0]) + ice.Info.HostName = arg[0] m.Echo(ice.Info.HostName) }}, "userinfo": {Name: "userinfo", Help: "userinfo", Hand: func(m *ice.Message, arg ...string) { diff --git a/base/ctx/ctx.go b/base/ctx/ctx.go index d9bcc168..e16acd43 100644 --- a/base/ctx/ctx.go +++ b/base/ctx/ctx.go @@ -13,6 +13,7 @@ var Index = &ice.Context{Name: "ctx", Help: "配置模块", ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Cmd(mdb.SEARCH, mdb.CREATE, COMMAND, m.AddCmd(&ice.Command{Hand: func(m *ice.Message, c *ice.Context, cc string, arg ...string) { arg = arg[1:] + fields := kit.Split(m.Option(mdb.FIELDS)) ice.Pulse.Travel(func(p *ice.Context, s *ice.Context, key string, cmd *ice.Command) { if strings.HasPrefix(key, "_") || strings.HasPrefix(key, "/") { return @@ -24,16 +25,28 @@ var Index = &ice.Context{Name: "ctx", Help: "配置模块", return } - m.Push("pod", "") - m.Push("ctx", "web.chat") - m.Push("cmd", cc) - - m.Push("time", m.Time()) - m.Push("size", "") - - m.Push("type", COMMAND) - m.Push("name", key) - m.Push("text", s.Cap(ice.CTX_FOLLOW)) + for _, k := range fields { + switch k { + case kit.SSH_POD: + m.Push(k, m.Option(ice.MSG_USERPOD)) + case kit.SSH_CTX: + m.Push(k, m.Prefix()) + case kit.SSH_CMD: + m.Push(k, "_") + case kit.MDB_TIME: + m.Push(k, m.Time()) + case kit.MDB_SIZE: + m.Push(k, len(cmd.List)) + case kit.MDB_TYPE: + m.Push(k, COMMAND) + case kit.MDB_NAME: + m.Push(k, key) + case kit.MDB_TEXT: + m.Push(k, m.Prefix()) + default: + m.Push(k, "") + } + } }) }})) }}, diff --git a/base/gdb/event.go b/base/gdb/event.go index b39269b6..d86b2109 100644 --- a/base/gdb/event.go +++ b/base/gdb/event.go @@ -25,7 +25,7 @@ func init() { EVENT: {Name: EVENT, Help: "事件流", Value: kit.Data(kit.MDB_SHORT, EVENT)}, }, Commands: map[string]*ice.Command{ - EVENT: {Name: "event event id auto 监听", Help: "事件流", Action: map[string]*ice.Action{ + EVENT: {Name: "event event id auto listen", Help: "事件流", Action: map[string]*ice.Action{ LISTEN: {Name: "listen event cmd", Help: "监听", Hand: func(m *ice.Message, arg ...string) { _event_listen(m, m.Option(EVENT), m.Option(kit.SSH_CMD)) }}, diff --git a/base/gdb/signal.go b/base/gdb/signal.go index 09fed6fe..86e336fb 100644 --- a/base/gdb/signal.go +++ b/base/gdb/signal.go @@ -37,7 +37,7 @@ func init() { )}, }, Commands: map[string]*ice.Command{ - SIGNAL: {Name: "signal auto 监听", Help: "信号器", Action: map[string]*ice.Action{ + SIGNAL: {Name: "signal auto listen", Help: "信号器", Action: map[string]*ice.Action{ LISTEN: {Name: "listen signal name cmd", Help: "监听", Hand: func(m *ice.Message, arg ...string) { _signal_listen(m, kit.Int(m.Option(SIGNAL)), arg...) }}, diff --git a/base/gdb/timer.go b/base/gdb/timer.go index 6099fd48..576cdd17 100644 --- a/base/gdb/timer.go +++ b/base/gdb/timer.go @@ -41,7 +41,7 @@ func init() { TIMER: {Name: TIMER, Help: "定时器", Value: kit.Data("tick", "100ms")}, }, Commands: map[string]*ice.Command{ - TIMER: {Name: "timer hash id auto 添加 清理", Help: "定时器", Action: map[string]*ice.Action{ + TIMER: {Name: "timer hash id auto create prunes", Help: "定时器", Action: map[string]*ice.Action{ mdb.CREATE: {Name: "create delay=10ms interval=10s order=3 cmd=runtime", Help: "添加", Hand: func(m *ice.Message, arg ...string) { _timer_create(m, arg...) }}, diff --git a/base/lex/lex.shy b/base/lex/lex.shy new file mode 100644 index 00000000..9268a705 --- /dev/null +++ b/base/lex/lex.shy @@ -0,0 +1,2 @@ +chapter "lex" + diff --git a/base/log/log.shy b/base/log/log.shy new file mode 100644 index 00000000..5d200af3 --- /dev/null +++ b/base/log/log.shy @@ -0,0 +1 @@ +chapter "log" diff --git a/base/mdb/engine.go b/base/mdb/engine.go index 4ce7aac2..dab3154a 100644 --- a/base/mdb/engine.go +++ b/base/mdb/engine.go @@ -13,11 +13,18 @@ func init() { ENGINE: {Name: "engine", Help: "引擎", Value: kit.Data(kit.MDB_SHORT, kit.MDB_TYPE)}, }, Commands: map[string]*ice.Command{ - ENGINE: {Name: "engine type name text arg...", Help: "引擎", Action: map[string]*ice.Action{ - CREATE: {Name: "create type [cmd [ctx]]", Help: "创建", Hand: func(m *ice.Message, arg ...string) { + ENGINE: {Name: "engine type name text auto", Help: "引擎", Action: map[string]*ice.Action{ + CREATE: {Name: "create type cmd ctx", Help: "创建", Hand: func(m *ice.Message, arg ...string) { m.Rich(ENGINE, nil, kit.Dict(kit.MDB_TYPE, arg[0], kit.MDB_NAME, kit.Select(arg[0], arg, 1), kit.MDB_TEXT, kit.Select("", arg, 2))) }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { + if len(arg) == 0 || arg[0] == "" { + m.Richs(ENGINE, nil, kit.MDB_FOREACH, func(key string, value map[string]interface{}) { + m.Push(key, value, []string{kit.MDB_TYPE, kit.MDB_NAME, kit.MDB_TEXT}) + }) + return + } + if len(arg) == 2 { arg = append(arg, "") } diff --git a/base/mdb/mdb.shy b/base/mdb/mdb.shy index 23c5127a..768563b0 100644 --- a/base/mdb/mdb.shy +++ b/base/mdb/mdb.shy @@ -1,8 +1,7 @@ chapter "mdb" -field "搜索" mdb.search -field "引擎" mdb.engine - field "插件" mdb.plugin field "渲染" mdb.render +field "引擎" mdb.engine +field "搜索" mdb.search diff --git a/base/mdb/plugin.go b/base/mdb/plugin.go index fd25af38..3023364e 100644 --- a/base/mdb/plugin.go +++ b/base/mdb/plugin.go @@ -13,11 +13,18 @@ func init() { PLUGIN: {Name: "plugin", Help: "插件", Value: kit.Data(kit.MDB_SHORT, kit.MDB_TYPE)}, }, Commands: map[string]*ice.Command{ - PLUGIN: {Name: "plugin type name text", Help: "插件", Action: map[string]*ice.Action{ + PLUGIN: {Name: "plugin type name text auto", Help: "插件", Action: map[string]*ice.Action{ CREATE: {Name: "create type cmd ctx", Help: "创建", Hand: func(m *ice.Message, arg ...string) { m.Rich(PLUGIN, nil, kit.Dict(kit.MDB_TYPE, arg[0], kit.MDB_NAME, kit.Select(arg[0], arg, 1), kit.MDB_TEXT, kit.Select("", arg, 2))) }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { + if len(arg) == 0 || arg[0] == "" { + m.Richs(PLUGIN, nil, kit.MDB_FOREACH, func(key string, value map[string]interface{}) { + m.Push(key, value, []string{kit.MDB_TYPE, kit.MDB_NAME, kit.MDB_TEXT}) + }) + return + } + m.Richs(PLUGIN, nil, arg[0], func(key string, value map[string]interface{}) { m.Cmdy(kit.Keys(value[kit.MDB_TEXT], value[kit.MDB_NAME]), PLUGIN, arg[0], arg[1], kit.Select("", arg, 2)) }) diff --git a/base/mdb/render.go b/base/mdb/render.go index 50e0ec94..c28d22e9 100644 --- a/base/mdb/render.go +++ b/base/mdb/render.go @@ -13,11 +13,18 @@ func init() { RENDER: {Name: "render", Help: "渲染", Value: kit.Data(kit.MDB_SHORT, kit.MDB_TYPE)}, }, Commands: map[string]*ice.Command{ - RENDER: {Name: "render type name text", Help: "渲染", Action: map[string]*ice.Action{ + RENDER: {Name: "render type name text auto", Help: "渲染", Action: map[string]*ice.Action{ CREATE: {Name: "create type cmd ctx", Help: "创建", Hand: func(m *ice.Message, arg ...string) { m.Rich(RENDER, nil, kit.Dict(kit.MDB_TYPE, arg[0], kit.MDB_NAME, kit.Select(arg[0], arg, 1), kit.MDB_TEXT, kit.Select("", arg, 2))) }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { + if len(arg) == 0 || arg[0] == "" { + m.Richs(RENDER, nil, kit.MDB_FOREACH, func(key string, value map[string]interface{}) { + m.Push(key, value, []string{kit.MDB_TYPE, kit.MDB_NAME, kit.MDB_TEXT}) + }) + return + } + m.Richs(RENDER, nil, arg[0], func(key string, value map[string]interface{}) { m.Cmdy(kit.Keys(value[kit.MDB_TEXT], value[kit.MDB_NAME]), RENDER, arg[0], arg[1], kit.Select("", arg, 2)) }) diff --git a/base/nfs/nfs.go b/base/nfs/nfs.go index 04f61ee3..556cbd7f 100644 --- a/base/nfs/nfs.go +++ b/base/nfs/nfs.go @@ -33,8 +33,13 @@ func _file_list(m *ice.Message, root string, name string, level int, deep bool, } fs, e := ioutil.ReadDir(path.Join(root, name)) - if m.Warn(e != nil, ice.ErrNotFound, name) { - return // 查找失败 + if e != nil { + ls, _ := ioutil.ReadDir(root) + for _, k := range ls { + if k.Name() == name { + fs = append(fs, k) + } + } } for _, f := range fs { diff --git a/base/nfs/nfs.shy b/base/nfs/nfs.shy index f6835613..73859fd7 100644 --- a/base/nfs/nfs.shy +++ b/base/nfs/nfs.shy @@ -2,4 +2,5 @@ chapter "nfs" field "目录" nfs.dir field "文件" nfs.file +field "日志" nfs.tail diff --git a/base/ssh/channel.go b/base/ssh/channel.go index 242efb25..a2eba9a4 100644 --- a/base/ssh/channel.go +++ b/base/ssh/channel.go @@ -72,8 +72,8 @@ func init() { CHANNEL: {Name: "channel", Help: "通道", Value: kit.Data()}, }, Commands: map[string]*ice.Command{ - CHANNEL: {Name: "channel hash id auto 清理", Help: "通道", Action: map[string]*ice.Action{ - mdb.DELETE: {Name: "delete", Help: "删除", Hand: func(m *ice.Message, arg ...string) { + CHANNEL: {Name: "channel hash id auto prunes", Help: "通道", Action: map[string]*ice.Action{ + mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) { m.Cmdy(mdb.DELETE, CHANNEL, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH)) }}, mdb.PRUNES: {Name: "prunes", Help: "清理", Hand: func(m *ice.Message, arg ...string) { @@ -84,7 +84,7 @@ func init() { m.Option(mdb.FIELDS, "time,hash,status,username,hostname,hostport,tty,count") if m.Cmdy(mdb.SELECT, CHANNEL, "", mdb.HASH); len(arg) == 0 { m.Table(func(index int, value map[string]string, head []string) { - m.PushButton(kit.Select("", "删除", value[kit.MDB_STATUS] == tcp.CLOSE)) + m.PushButton(kit.Select("", mdb.REMOVE, value[kit.MDB_STATUS] == tcp.CLOSE)) }) } return diff --git a/base/ssh/connect.go b/base/ssh/connect.go index 66d648d1..378e277f 100644 --- a/base/ssh/connect.go +++ b/base/ssh/connect.go @@ -62,7 +62,7 @@ func init() { CONNECT: {Name: CONNECT, Help: "连接", Value: kit.Data()}, }, Commands: map[string]*ice.Command{ - CONNECT: {Name: "connect hash auto 添加 清理", Help: "连接", Action: map[string]*ice.Action{ + CONNECT: {Name: "connect hash auto dial prunes", Help: "连接", Action: map[string]*ice.Action{ tcp.DIAL: {Name: "dial username=shy host=shylinux.com port=22 private=.ssh/id_rsa", Help: "添加", Hand: func(m *ice.Message, arg ...string) { m.Option(tcp.DIAL_CB, func(c net.Conn) { client, e := _ssh_conn(m, c, kit.Select("shy", m.Option(aaa.USERNAME)), @@ -81,7 +81,7 @@ func init() { m.Echo(h) }) - m.Cmds(tcp.CLIENT, tcp.DIAL, arg) + m.Cmds(tcp.CLIENT, tcp.DIAL, kit.MDB_TYPE, SSH, kit.MDB_NAME, m.Option(aaa.USERNAME), tcp.PORT, m.Option(tcp.PORT), tcp.HOST, m.Option(tcp.HOST)) m.Sleep("100ms") }}, SESSION: {Name: "session hash", Help: "会话", Hand: func(m *ice.Message, arg ...string) { @@ -152,7 +152,7 @@ func init() { m.Echo("exit %s\n", m.Option(tcp.HOST)) }}, - 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, CONNECT, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH)) }}, mdb.PRUNES: {Name: "prunes", Help: "清理", Hand: func(m *ice.Message, arg ...string) { @@ -162,7 +162,7 @@ func init() { m.Option(mdb.FIELDS, kit.Select("time,hash,status,username,host,port", mdb.DETAIL, len(arg) > 0)) if m.Cmdy(mdb.SELECT, CONNECT, "", mdb.HASH, kit.MDB_HASH, arg); len(arg) == 0 { m.Table(func(index int, value map[string]string, head []string) { - m.PushButton(kit.Select("", "删除", value[kit.MDB_STATUS] == tcp.CLOSE)) + m.PushButton(kit.Select("", mdb.REMOVE, value[kit.MDB_STATUS] == tcp.CLOSE)) }) } }}, diff --git a/base/ssh/scripts.go b/base/ssh/scripts.go index 4e17cf67..44b42c8b 100644 --- a/base/ssh/scripts.go +++ b/base/ssh/scripts.go @@ -334,9 +334,7 @@ const ( func init() { Index.Merge(&ice.Context{ Configs: map[string]*ice.Config{ - SOURCE: {Name: SOURCE, Help: "加载脚本", Value: kit.Dict( - kit.MDB_HASH, kit.Dict(STDIO, kit.Data(kit.MDB_TIME, "2020-10-01 15:04:05", kit.MDB_NAME, STDIO)), - )}, + SOURCE: {Name: SOURCE, Help: "加载脚本", Value: kit.Dict()}, PROMPT: {Name: PROMPT, Help: "命令提示", Value: kit.Data( "PS1", []interface{}{"\033[33;44m", "count", "[", "time", "]", "\033[5m", "target", "\033[0m", "\033[44m", ">", "\033[0m ", "\033[?25h", "\033[32m"}, "PS2", []interface{}{"count", " ", "target", "> "}, diff --git a/base/ssh/service.go b/base/ssh/service.go index 26788d0a..26b8b752 100644 --- a/base/ssh/service.go +++ b/base/ssh/service.go @@ -159,7 +159,7 @@ func init() { )}, }, Commands: map[string]*ice.Command{ - SERVICE: {Name: "service port id auto 监听 清理", Help: "服务", Action: map[string]*ice.Action{ + SERVICE: {Name: "service port id auto listen prunes", Help: "服务", Action: map[string]*ice.Action{ tcp.LISTEN: {Name: "listen port=9030 private=.ssh/id_rsa auth=.ssh/authorized_keys", Help: "监听", Hand: func(m *ice.Message, arg ...string) { if m.Richs(SERVICE, "", m.Option(tcp.PORT), func(key string, value map[string]interface{}) { kit.Value(value, "meta.status", tcp.OPEN) diff --git a/base/ssh/session.go b/base/ssh/session.go index d0d6ef03..aac5a29a 100644 --- a/base/ssh/session.go +++ b/base/ssh/session.go @@ -78,7 +78,7 @@ func init() { SESSION: {Name: SESSION, Help: "会话", Value: kit.Data()}, }, Commands: map[string]*ice.Command{ - SESSION: {Name: "session hash id auto 命令 清理", Help: "会话", Action: map[string]*ice.Action{ + SESSION: {Name: "session hash id auto command prunes", Help: "会话", Action: map[string]*ice.Action{ ctx.COMMAND: {Name: "command cmd=pwd", Help: "命令", Hand: func(m *ice.Message, arg ...string) { m.Richs(SESSION, "", m.Option(kit.MDB_HASH), func(key string, value map[string]interface{}) { if w, ok := kit.Value(value, "meta.input").(io.Writer); ok { @@ -106,7 +106,7 @@ func init() { }) }}, - 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, SESSION, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH)) }}, mdb.PRUNES: {Name: "prunes", Help: "清理", Hand: func(m *ice.Message, arg ...string) { @@ -117,7 +117,7 @@ func init() { m.Option(mdb.FIELDS, "time,hash,status,count,connect") if m.Cmdy(mdb.SELECT, SESSION, "", mdb.HASH, kit.MDB_HASH, arg); len(arg) == 0 { m.Table(func(index int, value map[string]string, head []string) { - m.PushButton(kit.Select("绑定", "删除", value[kit.MDB_STATUS] == tcp.CLOSE)) + m.PushButton(kit.Select("bind", mdb.REMOVE, value[kit.MDB_STATUS] == tcp.CLOSE)) }) } return diff --git a/base/ssh/ssh.go b/base/ssh/ssh.go index 4aeba28a..9eb472ac 100644 --- a/base/ssh/ssh.go +++ b/base/ssh/ssh.go @@ -11,6 +11,8 @@ const SSH = "ssh" var Index = &ice.Context{Name: SSH, Help: "终端模块", Commands: map[string]*ice.Command{ ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Load() + m.Conf(SOURCE, kit.Keys(kit.MDB_HASH, STDIO, kit.MDB_META, kit.MDB_NAME), STDIO) + m.Conf(SOURCE, kit.Keys(kit.MDB_HASH, STDIO, kit.MDB_META, kit.MDB_TIME), m.Time()) }}, ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { if _, ok := m.Target().Server().(*Frame); ok { diff --git a/base/tcp/client.go b/base/tcp/client.go index f81a03ed..8f6652b0 100644 --- a/base/tcp/client.go +++ b/base/tcp/client.go @@ -55,7 +55,7 @@ func init() { CLIENT: {Name: CLIENT, Help: "客户端", Value: kit.Data()}, }, Commands: map[string]*ice.Command{ - CLIENT: {Name: "client hash auto 清理", Help: "客户端", Action: map[string]*ice.Action{ + CLIENT: {Name: "client hash auto prunes", Help: "客户端", Action: map[string]*ice.Action{ DIAL: {Name: "dial type name port=9010 host=", Help: "连接", Hand: func(m *ice.Message, arg ...string) { c, e := net.Dial(TCP, m.Option(HOST)+":"+m.Option(PORT)) h := m.Cmdx(mdb.INSERT, CLIENT, "", mdb.HASH, PORT, m.Option(PORT), HOST, m.Option(HOST), @@ -85,7 +85,7 @@ func init() { c.Write([]byte("hello world\n")) } }}, - 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, CLIENT, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH)) }}, mdb.PRUNES: {Name: "prunes", Help: "清理", Hand: func(m *ice.Message, arg ...string) { @@ -96,7 +96,7 @@ func init() { m.Option(mdb.FIELDS, kit.Select("time,hash,status,type,name,host,port,error,nread,nwrite", mdb.DETAIL, len(arg) > 0)) if m.Cmdy(mdb.SELECT, CLIENT, "", mdb.HASH, kit.MDB_HASH, arg); len(arg) == 0 { m.Table(func(index int, value map[string]string, head []string) { - m.PushButton(kit.Select("", "删除", value[kit.MDB_STATUS] == OPEN)) + m.PushButton(kit.Select("", mdb.REMOVE, value[kit.MDB_STATUS] == OPEN)) }) } }}, diff --git a/base/tcp/host.go b/base/tcp/host.go index bbb10969..6071d248 100644 --- a/base/tcp/host.go +++ b/base/tcp/host.go @@ -53,7 +53,7 @@ func _islocalhost(m *ice.Message, ip string) (ok bool) { return false } if m.Richs(HOST, kit.Keys("meta.white"), ip, nil) != nil { - m.Log_AUTH(aaa.White, ip) + m.Log_AUTH(aaa.WHITE, ip) return true } return false @@ -70,16 +70,16 @@ func init() { Index.Merge(&ice.Context{ Configs: map[string]*ice.Config{ HOST: {Name: HOST, Help: "主机", Value: kit.Data( - aaa.Black, kit.Data(kit.MDB_SHORT, kit.MDB_TEXT), - aaa.White, kit.Data(kit.MDB_SHORT, kit.MDB_TEXT), + aaa.BLACK, kit.Data(kit.MDB_SHORT, kit.MDB_TEXT), + aaa.WHITE, kit.Data(kit.MDB_SHORT, kit.MDB_TEXT), )}, }, Commands: map[string]*ice.Command{ HOST: {Name: "host name auto", Help: "主机", Action: map[string]*ice.Action{ - aaa.Black: {Name: "black", Help: "黑名单", Hand: func(m *ice.Message, arg ...string) { + aaa.BLACK: {Name: "black", Help: "黑名单", Hand: func(m *ice.Message, arg ...string) { m.Rich(HOST, kit.Keys("meta.black"), kit.Dict(kit.MDB_TEXT, arg[0])) }}, - aaa.White: {Name: "white", Help: "白名单", Hand: func(m *ice.Message, arg ...string) { + aaa.WHITE: {Name: "white", Help: "白名单", Hand: func(m *ice.Message, arg ...string) { m.Rich(HOST, kit.Keys("meta.white"), kit.Dict(kit.MDB_TEXT, arg[0])) }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { diff --git a/base/tcp/port.go b/base/tcp/port.go index eaeaa31f..b22c87f6 100644 --- a/base/tcp/port.go +++ b/base/tcp/port.go @@ -56,7 +56,7 @@ func init() { }, Commands: map[string]*ice.Command{ PORT: {Name: "port port path auto", Help: "端口", Action: map[string]*ice.Action{ - aaa.Right: {Name: "right [begin]", Help: "分配", Hand: func(m *ice.Message, arg ...string) { + aaa.RIGHT: {Name: "right [begin]", Help: "分配", Hand: func(m *ice.Message, arg ...string) { port, p := kit.Select("", arg, 0), "" for i := 0; i < 10; i++ { port = _port_right(m, port) diff --git a/base/tcp/server.go b/base/tcp/server.go index 883ada03..41bfea69 100644 --- a/base/tcp/server.go +++ b/base/tcp/server.go @@ -51,7 +51,7 @@ func init() { SERVER: {Name: SERVER, Help: "服务器", Value: kit.Data()}, }, Commands: map[string]*ice.Command{ - SERVER: {Name: "server hash auto 清理", Help: "服务器", Action: map[string]*ice.Action{ + SERVER: {Name: "server hash auto prunes", Help: "服务器", Action: map[string]*ice.Action{ LISTEN: {Name: "LISTEN type name port=9010 host=", Help: "监听", Hand: func(m *ice.Message, arg ...string) { l, e := net.Listen(TCP, m.Option(HOST)+":"+m.Option(PORT)) h := m.Cmdx(mdb.INSERT, SERVER, "", mdb.HASH, arg, @@ -99,7 +99,7 @@ func init() { } } }}, - 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, SERVER, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH)) }}, mdb.PRUNES: {Name: "prunes", Help: "清理", Hand: func(m *ice.Message, arg ...string) { @@ -110,7 +110,7 @@ func init() { m.Option(mdb.FIELDS, kit.Select("time,hash,status,type,name,host,port,error,nconn", mdb.DETAIL, len(arg) > 0)) if m.Cmdy(mdb.SELECT, SERVER, "", mdb.HASH, kit.MDB_HASH, arg); len(arg) == 0 { m.Table(func(index int, value map[string]string, head []string) { - m.PushButton(kit.Select("", "删除", value[kit.MDB_STATUS] == CLOSE)) + m.PushButton(kit.Select("", mdb.REMOVE, value[kit.MDB_STATUS] == CLOSE)) }) } }}, diff --git a/base/tcp/tcp.go b/base/tcp/tcp.go index 92019641..ba4188fd 100644 --- a/base/tcp/tcp.go +++ b/base/tcp/tcp.go @@ -13,7 +13,7 @@ var Index = &ice.Context{Name: TCP, Help: "通信模块", ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Load() m.Cmd(HOST).Table(func(index int, value map[string]string, head []string) { - m.Cmd(HOST, aaa.White, value["ip"]) + m.Cmd(HOST, aaa.WHITE, value["ip"]) }) }}, ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { diff --git a/base/web/cache.go b/base/web/cache.go index 17af44f8..d90e13e9 100644 --- a/base/web/cache.go +++ b/base/web/cache.go @@ -165,7 +165,7 @@ func init() { } }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - m.Option(mdb.FIELDS, "time,hash,size,type,name,text,file") + m.Option(mdb.FIELDS, kit.Select("time,hash,size,type,name,text,file", mdb.DETAIL, len(arg) > 0)) m.Cmdy(mdb.SELECT, CACHE, "", mdb.HASH, kit.MDB_HASH, arg) }}, diff --git a/base/web/serve.go b/base/web/serve.go index fd1f85a7..039a4114 100644 --- a/base/web/serve.go +++ b/base/web/serve.go @@ -126,6 +126,7 @@ func _serve_handle(key string, cmd *ice.Command, msg *ice.Message, w http.Respon } // 用户请求 + msg.Option("cache.limit", "10") msg.Option(ice.MSG_OUTPUT, "") msg.Option(ice.MSG_METHOD, r.Method) msg.Option(ice.MSG_USERWEB, kit.Select(msg.Conf(SHARE, "meta.domain"), r.Header.Get("Referer"))) @@ -267,7 +268,7 @@ func init() { SERVE: {Name: "serve name auto start", Help: "服务器", Action: map[string]*ice.Action{ gdb.START: {Name: "start dev= name=self proto=http host= port=9020", Help: "启动", Hand: func(m *ice.Message, arg ...string) { if cli.NodeInfo(m, SERVER, ice.Info.HostName); m.Option(tcp.PORT) == "random" { - m.Option(tcp.PORT, m.Cmdx(tcp.PORT, aaa.Right)) + m.Option(tcp.PORT, m.Cmdx(tcp.PORT, aaa.RIGHT)) } m.Target().Start(m, kit.MDB_NAME, m.Option(kit.MDB_NAME), tcp.HOST, m.Option(tcp.HOST), tcp.PORT, m.Option(tcp.PORT)) diff --git a/base/web/space.go b/base/web/space.go index 04e01d86..49e4d2ac 100644 --- a/base/web/space.go +++ b/base/web/space.go @@ -18,14 +18,10 @@ import ( func _space_list(m *ice.Message, space string) { m.Option(mdb.FIELDS, kit.Select("time,type,name,text", mdb.DETAIL, space != "")) - m.Cmdy(mdb.SELECT, SPACE, "", mdb.HASH, kit.MDB_HASH, space) + m.Cmdy(mdb.SELECT, SPACE, "", mdb.HASH, kit.MDB_NAME, space) m.Table(func(index int, value map[string]string, head []string) { - if p := kit.MergeURL(m.Option(ice.MSG_USERWEB), kit.SSH_POD, kit.Keys(m.Option(kit.SSH_POD), kit.Select(value[kit.MDB_VALUE], value[kit.MDB_NAME]))); space == "" { - m.PushRender(kit.MDB_LINK, "a", value[kit.MDB_NAME], p) - } else if value[kit.MDB_KEY] == kit.MDB_NAME { - m.Push(kit.MDB_KEY, kit.MDB_LINK) - m.PushRender(kit.MDB_VALUE, "a", value[kit.MDB_VALUE], p) - } + p := kit.MergeURL(m.Option(ice.MSG_USERWEB), kit.SSH_POD, kit.Keys(m.Option(kit.SSH_POD), kit.Select(value[kit.MDB_VALUE], value[kit.MDB_NAME]))) + m.PushRender(kit.MDB_LINK, "a", value[kit.MDB_NAME], p) }) m.Sort(kit.MDB_NAME) } diff --git a/base/yac/yac.shy b/base/yac/yac.shy new file mode 100644 index 00000000..01d8e7ea --- /dev/null +++ b/base/yac/yac.shy @@ -0,0 +1 @@ +chapter "yac" diff --git a/core/chat/chat.shy b/core/chat/chat.shy new file mode 100644 index 00000000..3d4b98e1 --- /dev/null +++ b/core/chat/chat.shy @@ -0,0 +1,2 @@ +chapter "chat" + diff --git a/core/code/code.shy b/core/code/code.shy index aaa46e14..049b095a 100644 --- a/core/code/code.shy +++ b/core/code/code.shy @@ -1,20 +1,19 @@ chapter "code" -# field "安装" web.code.install -# field "生成" web.code.autogen -# field "编译" web.code.compile -# field "发布" web.code.publish -# field "升级" web.code.upgrade +field "后端" web.code.binpack +field "前端" web.code.webpack -field "打包" web.code.binpack -field "打包" web.code.webpack +field "安装" web.code.install +field "生成" web.code.autogen +field "编译" web.code.compile +field "发布" web.code.publish +field "升级" web.code.upgrade field "编辑" web.code.vimer field "查看" web.code.inner field "收藏" web.code.favor field "测试" web.code.bench field "优化" web.code.pprof -return field "系统" web.code.c field "命令" web.code.sh diff --git a/core/code/install.go b/core/code/install.go index de4822d6..4b5750e9 100644 --- a/core/code/install.go +++ b/core/code/install.go @@ -110,7 +110,7 @@ func init() { }) }}, gdb.SPAWN: {Name: "spawn link", Help: "新建", Hand: func(m *ice.Message, arg ...string) { - port := m.Cmdx(tcp.PORT, aaa.Right) + port := m.Cmdx(tcp.PORT, aaa.RIGHT) target := path.Join(m.Conf(cli.DAEMON, kit.META_PATH), port) source := path.Join(m.Conf(INSTALL, kit.META_PATH), kit.TrimExt(m.Option(kit.MDB_LINK))) diff --git a/core/code/pprof.go b/core/code/pprof.go index 79332b88..e918af78 100644 --- a/core/code/pprof.go +++ b/core/code/pprof.go @@ -64,7 +64,7 @@ func init() { web.SERVE: {Name: "serve", Help: "展示", Hand: func(m *ice.Message, arg ...string) { m.Option(ice.MSG_PROCESS, "_inner") u := kit.ParseURL(m.Option(ice.MSG_USERWEB)) - p := u.Hostname() + ":" + m.Cmdx(tcp.PORT, aaa.Right) + p := u.Hostname() + ":" + m.Cmdx(tcp.PORT, aaa.RIGHT) m.Cmd(cli.DAEMON, m.Confv(PPROF, "meta.pprof"), "-http="+p, m.Option(BINNARY), m.Option(kit.MDB_FILE)) m.Echo("http://%s/ui/top", p) diff --git a/core/core.shy b/core/core.shy new file mode 100644 index 00000000..b96ed790 --- /dev/null +++ b/core/core.shy @@ -0,0 +1,6 @@ +source code/code.shy +source wiki/wiki.shy +source chat/chat.shy +source team/team.shy +source mall/mall.shy + diff --git a/core/mall/mall.shy b/core/mall/mall.shy index ecca3464..032f0822 100644 --- a/core/mall/mall.shy +++ b/core/mall/mall.shy @@ -1,6 +1,10 @@ -title "asset" +chapter "mall" + +section "asset" refer ` 公积金 https://grwsyw.gjj.beijing.gov.cn/ish/flow/menu/PPLGRZH0102?_r=0.6644871172745264 社保 http://fuwu.rsj.beijing.gov.cn/csibiz/indinfo/index.jsp 个税 https://its.beijing.chinatax.gov.cn:8443/zmsqjl.html ` +field "资产" web.mall.asset +field "工资" web.mall.salary diff --git a/core/team/team.shy b/core/team/team.shy new file mode 100644 index 00000000..9a4c94af --- /dev/null +++ b/core/team/team.shy @@ -0,0 +1,5 @@ +chapter "team" + +field "任务" web.team.task +field "计划" web.team.plan + diff --git a/core/wiki/wiki.shy b/core/wiki/wiki.shy new file mode 100644 index 00000000..deeeb3b4 --- /dev/null +++ b/core/wiki/wiki.shy @@ -0,0 +1 @@ +chapter "wiki" diff --git a/misc/alpha/alpha.shy b/misc/alpha/alpha.shy new file mode 100644 index 00000000..bf3d8728 --- /dev/null +++ b/misc/alpha/alpha.shy @@ -0,0 +1,3 @@ +chapter "alpha" + +field "英汉" web.wiki.input.input diff --git a/misc/input/input.shy b/misc/input/input.shy new file mode 100644 index 00000000..48392e55 --- /dev/null +++ b/misc/input/input.shy @@ -0,0 +1,4 @@ +chapter "input" + +field "五笔" web.wiki.alpha.alpha + diff --git a/misc/misc.shy b/misc/misc.shy new file mode 100644 index 00000000..ad811caa --- /dev/null +++ b/misc/misc.shy @@ -0,0 +1,13 @@ +source alpha/alpha.shy +source input/input.shy +source chrome/chrome.shy + +source zsh/zsh.shy +source tmux/tmux.shy +source git/git.shy +source vim/vim.shy + +source lark/lark.shy +source wx/wx.shy +source mp/mp.shy + diff --git a/misc/totp/totp.js b/misc/totp/totp.js deleted file mode 100644 index 957bfb22..00000000 --- a/misc/totp/totp.js +++ /dev/null @@ -1,9 +0,0 @@ -Volcanos("onimport", {help: "导入数据", list: [], - "init": function(can, msg, cb, output, action, option) {}, -}) -Volcanos("onaction", {help: "控件菜单", list: []}) -Volcanos("onchoice", {help: "控件交互", list: ["刷新"] - "刷新": function(event, can, value, cmd, target) {}, -}) -Volcanos("ondetail", {help: "控件详情", list: []}) -Volcanos("onexport", {help: "导出数据", list: []}) diff --git a/misc/totp/totp.shy b/misc/totp/totp.shy deleted file mode 100644 index e9142d89..00000000 --- a/misc/totp/totp.shy +++ /dev/null @@ -1 +0,0 @@ -title "auth"