mirror of
https://shylinux.com/x/icebergs
synced 2025-05-06 21:26:54 +08:00
opt core
This commit is contained in:
parent
b8bc1e211b
commit
44505582bc
@ -25,8 +25,8 @@ const AAA = "aaa"
|
|||||||
|
|
||||||
var Index = &ice.Context{Name: AAA, Help: "认证模块", Commands: map[string]*ice.Command{
|
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) {
|
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, 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, TECH, BLACK, kit.Dict(), WHITE, kit.Dict()))
|
||||||
m.Load()
|
m.Load()
|
||||||
m.Cmd(mdb.SEARCH, mdb.CREATE, USER, USER, AAA)
|
m.Cmd(mdb.SEARCH, mdb.CREATE, USER, USER, AAA)
|
||||||
}},
|
}},
|
||||||
|
@ -3,3 +3,4 @@ chapter "aaa"
|
|||||||
field "用户" user
|
field "用户" user
|
||||||
field "会话" sess
|
field "会话" sess
|
||||||
field "角色" role
|
field "角色" role
|
||||||
|
field "令牌" totp
|
||||||
|
@ -14,12 +14,9 @@ const ( // 用户角色
|
|||||||
VOID = "void"
|
VOID = "void"
|
||||||
)
|
)
|
||||||
const ( // 角色操作
|
const ( // 角色操作
|
||||||
White = "white"
|
|
||||||
Black = "black"
|
|
||||||
Right = "right"
|
|
||||||
|
|
||||||
WHITE = "white"
|
WHITE = "white"
|
||||||
BLACK = "black"
|
BLACK = "black"
|
||||||
|
RIGHT = "right"
|
||||||
)
|
)
|
||||||
const ( // 返回结果
|
const ( // 返回结果
|
||||||
OK = "ok"
|
OK = "ok"
|
||||||
@ -27,14 +24,14 @@ const ( // 返回结果
|
|||||||
|
|
||||||
func _role_list(m *ice.Message, userrole string) {
|
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{}) {
|
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(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)
|
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(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)
|
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{}) {
|
m.Richs(ROLE, nil, kit.Select(VOID, userrole), func(key string, value map[string]interface{}) {
|
||||||
ok = true
|
ok = true
|
||||||
list := value[Black].(map[string]interface{})
|
list := value[BLACK].(map[string]interface{})
|
||||||
for i := 0; i < len(keys); i++ {
|
for i := 0; i < len(keys); i++ {
|
||||||
if v, o := list[kit.Join(keys[:i+1], ".")]; o && v == true {
|
if v, o := list[kit.Join(keys[:i+1], ".")]; o && v == true {
|
||||||
ok = false
|
ok = false
|
||||||
@ -70,7 +67,7 @@ func _role_right(m *ice.Message, userrole string, keys ...string) (ok bool) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ok = false
|
ok = false
|
||||||
list = value[White].(map[string]interface{})
|
list = value[WHITE].(map[string]interface{})
|
||||||
for i := 0; i < len(keys); i++ {
|
for i := 0; i < len(keys); i++ {
|
||||||
if v, o := list[kit.Join(keys[:i+1], ".")]; o && v == true {
|
if v, o := list[kit.Join(keys[:i+1], ".")]; o && v == true {
|
||||||
ok = 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) {
|
func _role_black(m *ice.Message, userrole, chain string, status bool) {
|
||||||
m.Richs(ROLE, nil, userrole, func(key string, value map[string]interface{}) {
|
m.Richs(ROLE, nil, userrole, func(key string, value map[string]interface{}) {
|
||||||
m.Log_MODIFY(ROLE, userrole, Black, chain)
|
m.Log_MODIFY(ROLE, userrole, BLACK, chain)
|
||||||
list := value[Black].(map[string]interface{})
|
list := value[BLACK].(map[string]interface{})
|
||||||
list[chain] = status
|
list[chain] = status
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
func _role_white(m *ice.Message, userrole, chain string, status bool) {
|
func _role_white(m *ice.Message, userrole, chain string, status bool) {
|
||||||
m.Richs(ROLE, nil, userrole, func(key string, value map[string]interface{}) {
|
m.Richs(ROLE, nil, userrole, func(key string, value map[string]interface{}) {
|
||||||
m.Log_MODIFY(ROLE, userrole, White, chain)
|
m.Log_MODIFY(ROLE, userrole, WHITE, chain)
|
||||||
list := value[White].(map[string]interface{})
|
list := value[WHITE].(map[string]interface{})
|
||||||
list[chain] = status
|
list[chain] = status
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -110,14 +107,14 @@ func init() {
|
|||||||
ROLE: {Name: ROLE, Help: "角色", Value: kit.Data(kit.MDB_SHORT, kit.MDB_NAME)},
|
ROLE: {Name: ROLE, Help: "角色", Value: kit.Data(kit.MDB_SHORT, kit.MDB_NAME)},
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
Commands: map[string]*ice.Command{
|
||||||
ROLE: {Name: "role role auto 添加", Help: "角色", Action: map[string]*ice.Action{
|
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) {
|
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)
|
_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)
|
_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:]), "/", "."), ".")...) {
|
if _role_right(m, arg[0], kit.Split(strings.ReplaceAll(kit.Keys(arg[1:]), "/", "."), ".")...) {
|
||||||
m.Echo(OK)
|
m.Echo(OK)
|
||||||
}
|
}
|
||||||
|
@ -76,10 +76,16 @@ func init() {
|
|||||||
m.Cmdy(mdb.DELETE, TOTP, "", mdb.HASH, kit.MDB_NAME, m.Option(kit.MDB_NAME))
|
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) {
|
}, 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 {
|
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) {
|
m.Cmd(mdb.SELECT, TOTP, "", mdb.HASH).Table(func(index int, value map[string]string, head []string) {
|
||||||
per := kit.Int64(value[PERIOD])
|
per := kit.Int64(value[PERIOD])
|
||||||
m.Push("time", m.Time())
|
m.Push("time", m.Time())
|
||||||
|
@ -106,7 +106,7 @@ func init() {
|
|||||||
m.Cmdy(mdb.MODIFY, USER, "", mdb.HASH, USERNAME, m.Option(USERNAME), arg)
|
m.Cmdy(mdb.MODIFY, USER, "", mdb.HASH, USERNAME, m.Option(USERNAME), arg)
|
||||||
}},
|
}},
|
||||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||||
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) {
|
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))
|
_user_search(m, arg[0], arg[1], kit.Select("", arg, 2))
|
||||||
|
15
base/base.shy
Normal file
15
base/base.shy
Normal file
@ -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
|
||||||
|
|
@ -1,9 +1,8 @@
|
|||||||
chapter "cli"
|
chapter "cli"
|
||||||
|
|
||||||
|
field "脚本" python
|
||||||
|
field "守护" daemon
|
||||||
field "命令" system
|
field "命令" system
|
||||||
field "输出" output
|
field "输出" output
|
||||||
field "守护" daemon
|
|
||||||
field "脚本" python
|
|
||||||
|
|
||||||
field "环境" runtime
|
field "环境" runtime
|
||||||
field "进程" cli.proc
|
field "进程" cli.proc
|
||||||
|
@ -89,7 +89,7 @@ func init() {
|
|||||||
DAEMON: {Name: DAEMON, Help: "守护进程", Value: kit.Data(kit.MDB_PATH, "var/daemon")},
|
DAEMON: {Name: DAEMON, Help: "守护进程", Value: kit.Data(kit.MDB_PATH, "var/daemon")},
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
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) {
|
RESTART: {Name: "restart", Help: "重启", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmd(DAEMON, STOP)
|
m.Cmd(DAEMON, STOP)
|
||||||
m.Sleep("1s")
|
m.Sleep("1s")
|
||||||
@ -105,7 +105,6 @@ func init() {
|
|||||||
m.Option(mdb.FIELDS, "time,hash,status,pid,cmd,dir,env")
|
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.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.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])
|
m.Cmdy(SYSTEM, "kill", "-9", value[kit.SSH_PID])
|
||||||
})
|
})
|
||||||
}},
|
}},
|
||||||
|
@ -18,7 +18,7 @@ func init() {
|
|||||||
)},
|
)},
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
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) {
|
"download": {Name: "download", Help: "下载", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy("web.code.install", "download", m.Conf(PYTHON, "meta.source"))
|
m.Cmdy("web.code.install", "download", m.Conf(PYTHON, "meta.source"))
|
||||||
}},
|
}},
|
||||||
|
@ -55,8 +55,8 @@ func init() {
|
|||||||
m.Cmdy("tcp.host")
|
m.Cmdy("tcp.host")
|
||||||
}},
|
}},
|
||||||
"hostname": {Name: "hostname", Help: "hostname", Hand: func(m *ice.Message, arg ...string) {
|
"hostname": {Name: "hostname", Help: "hostname", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Conf(RUNTIME, "boot.hostname", arg[1])
|
m.Conf(RUNTIME, "boot.hostname", arg[0])
|
||||||
ice.Info.HostName = arg[1]
|
ice.Info.HostName = arg[0]
|
||||||
m.Echo(ice.Info.HostName)
|
m.Echo(ice.Info.HostName)
|
||||||
}},
|
}},
|
||||||
"userinfo": {Name: "userinfo", Help: "userinfo", Hand: func(m *ice.Message, arg ...string) {
|
"userinfo": {Name: "userinfo", Help: "userinfo", Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
@ -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) {
|
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) {
|
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:]
|
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) {
|
ice.Pulse.Travel(func(p *ice.Context, s *ice.Context, key string, cmd *ice.Command) {
|
||||||
if strings.HasPrefix(key, "_") || strings.HasPrefix(key, "/") {
|
if strings.HasPrefix(key, "_") || strings.HasPrefix(key, "/") {
|
||||||
return
|
return
|
||||||
@ -24,16 +25,28 @@ var Index = &ice.Context{Name: "ctx", Help: "配置模块",
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
m.Push("pod", "")
|
for _, k := range fields {
|
||||||
m.Push("ctx", "web.chat")
|
switch k {
|
||||||
m.Push("cmd", cc)
|
case kit.SSH_POD:
|
||||||
|
m.Push(k, m.Option(ice.MSG_USERPOD))
|
||||||
m.Push("time", m.Time())
|
case kit.SSH_CTX:
|
||||||
m.Push("size", "")
|
m.Push(k, m.Prefix())
|
||||||
|
case kit.SSH_CMD:
|
||||||
m.Push("type", COMMAND)
|
m.Push(k, "_")
|
||||||
m.Push("name", key)
|
case kit.MDB_TIME:
|
||||||
m.Push("text", s.Cap(ice.CTX_FOLLOW))
|
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, "")
|
||||||
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}}))
|
}}))
|
||||||
}},
|
}},
|
||||||
|
@ -25,7 +25,7 @@ func init() {
|
|||||||
EVENT: {Name: EVENT, Help: "事件流", Value: kit.Data(kit.MDB_SHORT, EVENT)},
|
EVENT: {Name: EVENT, Help: "事件流", Value: kit.Data(kit.MDB_SHORT, EVENT)},
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
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) {
|
LISTEN: {Name: "listen event cmd", Help: "监听", Hand: func(m *ice.Message, arg ...string) {
|
||||||
_event_listen(m, m.Option(EVENT), m.Option(kit.SSH_CMD))
|
_event_listen(m, m.Option(EVENT), m.Option(kit.SSH_CMD))
|
||||||
}},
|
}},
|
||||||
|
@ -37,7 +37,7 @@ func init() {
|
|||||||
)},
|
)},
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
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) {
|
LISTEN: {Name: "listen signal name cmd", Help: "监听", Hand: func(m *ice.Message, arg ...string) {
|
||||||
_signal_listen(m, kit.Int(m.Option(SIGNAL)), arg...)
|
_signal_listen(m, kit.Int(m.Option(SIGNAL)), arg...)
|
||||||
}},
|
}},
|
||||||
|
@ -41,7 +41,7 @@ func init() {
|
|||||||
TIMER: {Name: TIMER, Help: "定时器", Value: kit.Data("tick", "100ms")},
|
TIMER: {Name: TIMER, Help: "定时器", Value: kit.Data("tick", "100ms")},
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
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) {
|
mdb.CREATE: {Name: "create delay=10ms interval=10s order=3 cmd=runtime", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||||
_timer_create(m, arg...)
|
_timer_create(m, arg...)
|
||||||
}},
|
}},
|
||||||
|
2
base/lex/lex.shy
Normal file
2
base/lex/lex.shy
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
chapter "lex"
|
||||||
|
|
1
base/log/log.shy
Normal file
1
base/log/log.shy
Normal file
@ -0,0 +1 @@
|
|||||||
|
chapter "log"
|
@ -13,11 +13,18 @@ func init() {
|
|||||||
ENGINE: {Name: "engine", Help: "引擎", Value: kit.Data(kit.MDB_SHORT, kit.MDB_TYPE)},
|
ENGINE: {Name: "engine", Help: "引擎", Value: kit.Data(kit.MDB_SHORT, kit.MDB_TYPE)},
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
Commands: map[string]*ice.Command{
|
||||||
ENGINE: {Name: "engine type name text arg...", Help: "引擎", Action: map[string]*ice.Action{
|
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) {
|
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)))
|
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) {
|
}, 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 {
|
if len(arg) == 2 {
|
||||||
arg = append(arg, "")
|
arg = append(arg, "")
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
chapter "mdb"
|
chapter "mdb"
|
||||||
|
|
||||||
field "搜索" mdb.search
|
|
||||||
field "引擎" mdb.engine
|
|
||||||
|
|
||||||
field "插件" mdb.plugin
|
field "插件" mdb.plugin
|
||||||
field "渲染" mdb.render
|
field "渲染" mdb.render
|
||||||
|
field "引擎" mdb.engine
|
||||||
|
field "搜索" mdb.search
|
||||||
|
|
||||||
|
@ -13,11 +13,18 @@ func init() {
|
|||||||
PLUGIN: {Name: "plugin", Help: "插件", Value: kit.Data(kit.MDB_SHORT, kit.MDB_TYPE)},
|
PLUGIN: {Name: "plugin", Help: "插件", Value: kit.Data(kit.MDB_SHORT, kit.MDB_TYPE)},
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
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) {
|
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)))
|
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) {
|
}, 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.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))
|
m.Cmdy(kit.Keys(value[kit.MDB_TEXT], value[kit.MDB_NAME]), PLUGIN, arg[0], arg[1], kit.Select("", arg, 2))
|
||||||
})
|
})
|
||||||
|
@ -13,11 +13,18 @@ func init() {
|
|||||||
RENDER: {Name: "render", Help: "渲染", Value: kit.Data(kit.MDB_SHORT, kit.MDB_TYPE)},
|
RENDER: {Name: "render", Help: "渲染", Value: kit.Data(kit.MDB_SHORT, kit.MDB_TYPE)},
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
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) {
|
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)))
|
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) {
|
}, 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.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))
|
m.Cmdy(kit.Keys(value[kit.MDB_TEXT], value[kit.MDB_NAME]), RENDER, arg[0], arg[1], kit.Select("", arg, 2))
|
||||||
})
|
})
|
||||||
|
@ -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))
|
fs, e := ioutil.ReadDir(path.Join(root, name))
|
||||||
if m.Warn(e != nil, ice.ErrNotFound, name) {
|
if e != nil {
|
||||||
return // 查找失败
|
ls, _ := ioutil.ReadDir(root)
|
||||||
|
for _, k := range ls {
|
||||||
|
if k.Name() == name {
|
||||||
|
fs = append(fs, k)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, f := range fs {
|
for _, f := range fs {
|
||||||
|
@ -2,4 +2,5 @@ chapter "nfs"
|
|||||||
|
|
||||||
field "目录" nfs.dir
|
field "目录" nfs.dir
|
||||||
field "文件" nfs.file
|
field "文件" nfs.file
|
||||||
|
field "日志" nfs.tail
|
||||||
|
|
||||||
|
@ -72,8 +72,8 @@ func init() {
|
|||||||
CHANNEL: {Name: "channel", Help: "通道", Value: kit.Data()},
|
CHANNEL: {Name: "channel", Help: "通道", Value: kit.Data()},
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
Commands: map[string]*ice.Command{
|
||||||
CHANNEL: {Name: "channel hash id auto 清理", Help: "通道", Action: map[string]*ice.Action{
|
CHANNEL: {Name: "channel hash id auto prunes", Help: "通道", Action: map[string]*ice.Action{
|
||||||
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, CHANNEL, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH))
|
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) {
|
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")
|
m.Option(mdb.FIELDS, "time,hash,status,username,hostname,hostport,tty,count")
|
||||||
if m.Cmdy(mdb.SELECT, CHANNEL, "", mdb.HASH); len(arg) == 0 {
|
if m.Cmdy(mdb.SELECT, CHANNEL, "", mdb.HASH); len(arg) == 0 {
|
||||||
m.Table(func(index int, value map[string]string, head []string) {
|
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
|
return
|
||||||
|
@ -62,7 +62,7 @@ func init() {
|
|||||||
CONNECT: {Name: CONNECT, Help: "连接", Value: kit.Data()},
|
CONNECT: {Name: CONNECT, Help: "连接", Value: kit.Data()},
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
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) {
|
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) {
|
m.Option(tcp.DIAL_CB, func(c net.Conn) {
|
||||||
client, e := _ssh_conn(m, c, kit.Select("shy", m.Option(aaa.USERNAME)),
|
client, e := _ssh_conn(m, c, kit.Select("shy", m.Option(aaa.USERNAME)),
|
||||||
@ -81,7 +81,7 @@ func init() {
|
|||||||
m.Echo(h)
|
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")
|
m.Sleep("100ms")
|
||||||
}},
|
}},
|
||||||
SESSION: {Name: "session hash", Help: "会话", Hand: func(m *ice.Message, arg ...string) {
|
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))
|
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))
|
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) {
|
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))
|
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 {
|
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.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))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
|
@ -334,9 +334,7 @@ const (
|
|||||||
func init() {
|
func init() {
|
||||||
Index.Merge(&ice.Context{
|
Index.Merge(&ice.Context{
|
||||||
Configs: map[string]*ice.Config{
|
Configs: map[string]*ice.Config{
|
||||||
SOURCE: {Name: SOURCE, Help: "加载脚本", Value: kit.Dict(
|
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)),
|
|
||||||
)},
|
|
||||||
PROMPT: {Name: PROMPT, Help: "命令提示", Value: kit.Data(
|
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"},
|
"PS1", []interface{}{"\033[33;44m", "count", "[", "time", "]", "\033[5m", "target", "\033[0m", "\033[44m", ">", "\033[0m ", "\033[?25h", "\033[32m"},
|
||||||
"PS2", []interface{}{"count", " ", "target", "> "},
|
"PS2", []interface{}{"count", " ", "target", "> "},
|
||||||
|
@ -159,7 +159,7 @@ func init() {
|
|||||||
)},
|
)},
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
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) {
|
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{}) {
|
if m.Richs(SERVICE, "", m.Option(tcp.PORT), func(key string, value map[string]interface{}) {
|
||||||
kit.Value(value, "meta.status", tcp.OPEN)
|
kit.Value(value, "meta.status", tcp.OPEN)
|
||||||
|
@ -78,7 +78,7 @@ func init() {
|
|||||||
SESSION: {Name: SESSION, Help: "会话", Value: kit.Data()},
|
SESSION: {Name: SESSION, Help: "会话", Value: kit.Data()},
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
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) {
|
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{}) {
|
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 {
|
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))
|
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) {
|
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")
|
m.Option(mdb.FIELDS, "time,hash,status,count,connect")
|
||||||
if m.Cmdy(mdb.SELECT, SESSION, "", mdb.HASH, kit.MDB_HASH, arg); len(arg) == 0 {
|
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.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
|
return
|
||||||
|
@ -11,6 +11,8 @@ const SSH = "ssh"
|
|||||||
var Index = &ice.Context{Name: SSH, Help: "终端模块", Commands: map[string]*ice.Command{
|
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) {
|
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
m.Load()
|
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) {
|
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
if _, ok := m.Target().Server().(*Frame); ok {
|
if _, ok := m.Target().Server().(*Frame); ok {
|
||||||
|
@ -55,7 +55,7 @@ func init() {
|
|||||||
CLIENT: {Name: CLIENT, Help: "客户端", Value: kit.Data()},
|
CLIENT: {Name: CLIENT, Help: "客户端", Value: kit.Data()},
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
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) {
|
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))
|
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),
|
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"))
|
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))
|
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) {
|
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))
|
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 {
|
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.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))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
|
@ -53,7 +53,7 @@ func _islocalhost(m *ice.Message, ip string) (ok bool) {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if m.Richs(HOST, kit.Keys("meta.white"), ip, nil) != nil {
|
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 true
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
@ -70,16 +70,16 @@ func init() {
|
|||||||
Index.Merge(&ice.Context{
|
Index.Merge(&ice.Context{
|
||||||
Configs: map[string]*ice.Config{
|
Configs: map[string]*ice.Config{
|
||||||
HOST: {Name: HOST, Help: "主机", Value: kit.Data(
|
HOST: {Name: HOST, Help: "主机", Value: kit.Data(
|
||||||
aaa.Black, 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),
|
aaa.WHITE, kit.Data(kit.MDB_SHORT, kit.MDB_TEXT),
|
||||||
)},
|
)},
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
Commands: map[string]*ice.Command{
|
||||||
HOST: {Name: "host name auto", Help: "主机", Action: map[string]*ice.Action{
|
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]))
|
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]))
|
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) {
|
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
|
@ -56,7 +56,7 @@ func init() {
|
|||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
Commands: map[string]*ice.Command{
|
||||||
PORT: {Name: "port port path auto", Help: "端口", Action: map[string]*ice.Action{
|
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), ""
|
port, p := kit.Select("", arg, 0), ""
|
||||||
for i := 0; i < 10; i++ {
|
for i := 0; i < 10; i++ {
|
||||||
port = _port_right(m, port)
|
port = _port_right(m, port)
|
||||||
|
@ -51,7 +51,7 @@ func init() {
|
|||||||
SERVER: {Name: SERVER, Help: "服务器", Value: kit.Data()},
|
SERVER: {Name: SERVER, Help: "服务器", Value: kit.Data()},
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
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) {
|
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))
|
l, e := net.Listen(TCP, m.Option(HOST)+":"+m.Option(PORT))
|
||||||
h := m.Cmdx(mdb.INSERT, SERVER, "", mdb.HASH, arg,
|
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))
|
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) {
|
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))
|
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 {
|
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.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))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
|
@ -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) {
|
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
m.Load()
|
m.Load()
|
||||||
m.Cmd(HOST).Table(func(index int, value map[string]string, head []string) {
|
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) {
|
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
|
@ -165,7 +165,7 @@ func init() {
|
|||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
m.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)
|
m.Cmdy(mdb.SELECT, CACHE, "", mdb.HASH, kit.MDB_HASH, arg)
|
||||||
}},
|
}},
|
||||||
|
|
||||||
|
@ -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_OUTPUT, "")
|
||||||
msg.Option(ice.MSG_METHOD, r.Method)
|
msg.Option(ice.MSG_METHOD, r.Method)
|
||||||
msg.Option(ice.MSG_USERWEB, kit.Select(msg.Conf(SHARE, "meta.domain"), r.Header.Get("Referer")))
|
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{
|
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) {
|
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" {
|
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))
|
m.Target().Start(m, kit.MDB_NAME, m.Option(kit.MDB_NAME), tcp.HOST, m.Option(tcp.HOST), tcp.PORT, m.Option(tcp.PORT))
|
||||||
|
@ -18,14 +18,10 @@ import (
|
|||||||
|
|
||||||
func _space_list(m *ice.Message, space string) {
|
func _space_list(m *ice.Message, space string) {
|
||||||
m.Option(mdb.FIELDS, kit.Select("time,type,name,text", mdb.DETAIL, space != ""))
|
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) {
|
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 == "" {
|
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.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)
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
m.Sort(kit.MDB_NAME)
|
m.Sort(kit.MDB_NAME)
|
||||||
}
|
}
|
||||||
|
1
base/yac/yac.shy
Normal file
1
base/yac/yac.shy
Normal file
@ -0,0 +1 @@
|
|||||||
|
chapter "yac"
|
2
core/chat/chat.shy
Normal file
2
core/chat/chat.shy
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
chapter "chat"
|
||||||
|
|
@ -1,20 +1,19 @@
|
|||||||
chapter "code"
|
chapter "code"
|
||||||
|
|
||||||
# field "安装" web.code.install
|
field "后端" web.code.binpack
|
||||||
# field "生成" web.code.autogen
|
field "前端" web.code.webpack
|
||||||
# field "编译" web.code.compile
|
|
||||||
# field "发布" web.code.publish
|
|
||||||
# field "升级" web.code.upgrade
|
|
||||||
|
|
||||||
field "打包" web.code.binpack
|
field "安装" web.code.install
|
||||||
field "打包" web.code.webpack
|
field "生成" web.code.autogen
|
||||||
|
field "编译" web.code.compile
|
||||||
|
field "发布" web.code.publish
|
||||||
|
field "升级" web.code.upgrade
|
||||||
|
|
||||||
field "编辑" web.code.vimer
|
field "编辑" web.code.vimer
|
||||||
field "查看" web.code.inner
|
field "查看" web.code.inner
|
||||||
field "收藏" web.code.favor
|
field "收藏" web.code.favor
|
||||||
field "测试" web.code.bench
|
field "测试" web.code.bench
|
||||||
field "优化" web.code.pprof
|
field "优化" web.code.pprof
|
||||||
return
|
|
||||||
|
|
||||||
field "系统" web.code.c
|
field "系统" web.code.c
|
||||||
field "命令" web.code.sh
|
field "命令" web.code.sh
|
||||||
|
@ -110,7 +110,7 @@ func init() {
|
|||||||
})
|
})
|
||||||
}},
|
}},
|
||||||
gdb.SPAWN: {Name: "spawn link", Help: "新建", Hand: func(m *ice.Message, arg ...string) {
|
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)
|
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)))
|
source := path.Join(m.Conf(INSTALL, kit.META_PATH), kit.TrimExt(m.Option(kit.MDB_LINK)))
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ func init() {
|
|||||||
web.SERVE: {Name: "serve", Help: "展示", Hand: func(m *ice.Message, arg ...string) {
|
web.SERVE: {Name: "serve", Help: "展示", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Option(ice.MSG_PROCESS, "_inner")
|
m.Option(ice.MSG_PROCESS, "_inner")
|
||||||
u := kit.ParseURL(m.Option(ice.MSG_USERWEB))
|
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.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)
|
m.Echo("http://%s/ui/top", p)
|
||||||
|
6
core/core.shy
Normal file
6
core/core.shy
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
source code/code.shy
|
||||||
|
source wiki/wiki.shy
|
||||||
|
source chat/chat.shy
|
||||||
|
source team/team.shy
|
||||||
|
source mall/mall.shy
|
||||||
|
|
@ -1,6 +1,10 @@
|
|||||||
title "asset"
|
chapter "mall"
|
||||||
|
|
||||||
|
section "asset"
|
||||||
refer `
|
refer `
|
||||||
公积金 https://grwsyw.gjj.beijing.gov.cn/ish/flow/menu/PPLGRZH0102?_r=0.6644871172745264
|
公积金 https://grwsyw.gjj.beijing.gov.cn/ish/flow/menu/PPLGRZH0102?_r=0.6644871172745264
|
||||||
社保 http://fuwu.rsj.beijing.gov.cn/csibiz/indinfo/index.jsp
|
社保 http://fuwu.rsj.beijing.gov.cn/csibiz/indinfo/index.jsp
|
||||||
个税 https://its.beijing.chinatax.gov.cn:8443/zmsqjl.html
|
个税 https://its.beijing.chinatax.gov.cn:8443/zmsqjl.html
|
||||||
`
|
`
|
||||||
|
field "资产" web.mall.asset
|
||||||
|
field "工资" web.mall.salary
|
||||||
|
5
core/team/team.shy
Normal file
5
core/team/team.shy
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
chapter "team"
|
||||||
|
|
||||||
|
field "任务" web.team.task
|
||||||
|
field "计划" web.team.plan
|
||||||
|
|
1
core/wiki/wiki.shy
Normal file
1
core/wiki/wiki.shy
Normal file
@ -0,0 +1 @@
|
|||||||
|
chapter "wiki"
|
3
misc/alpha/alpha.shy
Normal file
3
misc/alpha/alpha.shy
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
chapter "alpha"
|
||||||
|
|
||||||
|
field "英汉" web.wiki.input.input
|
4
misc/input/input.shy
Normal file
4
misc/input/input.shy
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
chapter "input"
|
||||||
|
|
||||||
|
field "五笔" web.wiki.alpha.alpha
|
||||||
|
|
13
misc/misc.shy
Normal file
13
misc/misc.shy
Normal file
@ -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
|
||||||
|
|
@ -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: []})
|
|
@ -1 +0,0 @@
|
|||||||
title "auth"
|
|
Loading…
x
Reference in New Issue
Block a user