mirror of
https://shylinux.com/x/icebergs
synced 2025-06-26 18:37:29 +08:00
opt some
This commit is contained in:
parent
8cc28bdf25
commit
fdef735fb2
@ -27,18 +27,24 @@ var Index = &ice.Context{Name: "aaa", Help: "认证模块",
|
|||||||
m.Save(ice.AAA_ROLE, ice.AAA_USER, ice.AAA_SESS)
|
m.Save(ice.AAA_ROLE, ice.AAA_USER, ice.AAA_SESS)
|
||||||
}},
|
}},
|
||||||
|
|
||||||
ice.AAA_ROLE: {Name: "role check|black|white|right", Help: "角色", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
ice.AAA_ROLE: {Name: []string{
|
||||||
|
"role check username",
|
||||||
|
"role right userrole chain",
|
||||||
|
"role userrole username ok",
|
||||||
|
"role black|white userrole enable|disable chain",
|
||||||
|
}, Help: "角色", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
|
|
||||||
|
// ice.AAA_ROLE: {Name: "role check username; role right userrole chain; role userrole username ok; role black|white userrole enable|disable chain", Help: "角色", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
if len(arg) == 0 {
|
if len(arg) == 0 {
|
||||||
kit.Fetch(m.Confv("role", "meta.root"), func(key string, value string) {
|
kit.Fetch(m.Confv("role", "meta.root"), func(key string, value string) {
|
||||||
m.Push("userrole", "root")
|
m.Push("userrole", "root").Push("username", key)
|
||||||
m.Push("username", key)
|
|
||||||
})
|
})
|
||||||
kit.Fetch(m.Confv("role", "meta.tech"), func(key string, value string) {
|
kit.Fetch(m.Confv("role", "meta.tech"), func(key string, value string) {
|
||||||
m.Push("userrole", "tech")
|
m.Push("userrole", "tech").Push("username", key)
|
||||||
m.Push("username", key)
|
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
switch arg[0] {
|
switch arg[0] {
|
||||||
case "check":
|
case "check":
|
||||||
// 用户角色
|
// 用户角色
|
||||||
|
@ -84,7 +84,7 @@ var Index = &ice.Context{Name: "ctx", Help: "配置模块",
|
|||||||
v := s.Commands[k]
|
v := s.Commands[k]
|
||||||
m.Push("key", s.Cap(ice.CTX_FOLLOW))
|
m.Push("key", s.Cap(ice.CTX_FOLLOW))
|
||||||
m.Push("index", k)
|
m.Push("index", k)
|
||||||
m.Push("name", v.Name)
|
m.Push("name", kit.Format(v.Name))
|
||||||
m.Push("help", kit.Simple(v.Help)[0])
|
m.Push("help", kit.Simple(v.Help)[0])
|
||||||
m.Push("list", kit.Format(v.List))
|
m.Push("list", kit.Format(v.List))
|
||||||
}
|
}
|
||||||
@ -106,7 +106,14 @@ var Index = &ice.Context{Name: "ctx", Help: "配置模块",
|
|||||||
m.Push("help", kit.Simple(cmd.Help)[0])
|
m.Push("help", kit.Simple(cmd.Help)[0])
|
||||||
m.Push("meta", kit.Format(cmd.Meta))
|
m.Push("meta", kit.Format(cmd.Meta))
|
||||||
if len(cmd.List) == 0 {
|
if len(cmd.List) == 0 {
|
||||||
list := kit.Split(cmd.Name)
|
var list []string
|
||||||
|
switch name := cmd.Name.(type) {
|
||||||
|
case []string, []interface{}:
|
||||||
|
list = kit.Split(kit.Simple(name)[0])
|
||||||
|
default:
|
||||||
|
list = kit.Split(strings.Split(kit.Format(name), ";")[0])
|
||||||
|
}
|
||||||
|
|
||||||
button := false
|
button := false
|
||||||
for i, v := range list {
|
for i, v := range list {
|
||||||
if i > 0 {
|
if i > 0 {
|
||||||
|
@ -4,7 +4,7 @@ import (
|
|||||||
"github.com/shylinux/icebergs"
|
"github.com/shylinux/icebergs"
|
||||||
"github.com/shylinux/toolkits"
|
"github.com/shylinux/toolkits"
|
||||||
|
|
||||||
"fmt"
|
"bufio"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
)
|
)
|
||||||
@ -36,18 +36,25 @@ func (f *Frame) Start(m *ice.Message, arg ...string) bool {
|
|||||||
break
|
break
|
||||||
} else {
|
} else {
|
||||||
// 日志文件
|
// 日志文件
|
||||||
file := kit.Select("bench", m.Conf("show", l.l+".file"))
|
file := kit.Select("bench", m.Conf("show", kit.Keys(l.l, "file")))
|
||||||
f := m.Confv("file", file+".file").(*os.File)
|
// 日志格式
|
||||||
|
view := m.Confm("view", m.Conf("show", kit.Keys(l.l, "view")))
|
||||||
// 日志内容
|
|
||||||
ls := []string{l.m.Format("prefix"), " "}
|
|
||||||
ls = append(ls, m.Conf("show", l.l+".prefix"),
|
|
||||||
l.l, " ", l.s, m.Conf("show", l.l+".suffix"), "\n")
|
|
||||||
|
|
||||||
// 输出日志
|
// 输出日志
|
||||||
for _, v := range ls {
|
bio := m.Confv("file", file+".file").(*bufio.Writer)
|
||||||
fmt.Fprintf(f, v)
|
bio.WriteString(l.m.Format("prefix"))
|
||||||
|
bio.WriteString(" ")
|
||||||
|
if p, ok := view["prefix"].(string); ok {
|
||||||
|
bio.WriteString(p)
|
||||||
}
|
}
|
||||||
|
bio.WriteString(l.l)
|
||||||
|
bio.WriteString(" ")
|
||||||
|
bio.WriteString(l.s)
|
||||||
|
if p, ok := view["suffix"].(string); ok {
|
||||||
|
bio.WriteString(p)
|
||||||
|
}
|
||||||
|
bio.WriteString("\n")
|
||||||
|
bio.Flush()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
@ -65,27 +72,43 @@ var Index = &ice.Context{Name: "log", Help: "日志模块",
|
|||||||
"error", kit.Dict("path", "var/log/error.log"),
|
"error", kit.Dict("path", "var/log/error.log"),
|
||||||
"trace", kit.Dict("path", "var/log/trace.log"),
|
"trace", kit.Dict("path", "var/log/trace.log"),
|
||||||
)},
|
)},
|
||||||
"show": &ice.Config{Name: "show", Help: "日志格式", Value: kit.Dict(
|
"view": &ice.Config{Name: "view", Help: "日志格式", Value: kit.Dict(
|
||||||
|
"red", kit.Dict("prefix", "\033[31m", "suffix", "\033[0m"),
|
||||||
|
"green", kit.Dict("prefix", "\033[32m", "suffix", "\033[0m"),
|
||||||
|
"yellow", kit.Dict("prefix", "\033[33m", "suffix", "\033[0m"),
|
||||||
|
)},
|
||||||
|
"show": &ice.Config{Name: "show", Help: "日志分流", Value: kit.Dict(
|
||||||
|
// 数据
|
||||||
ice.LOG_ENABLE, kit.Dict("file", "watch"),
|
ice.LOG_ENABLE, kit.Dict("file", "watch"),
|
||||||
ice.LOG_IMPORT, kit.Dict("file", "watch"),
|
ice.LOG_IMPORT, kit.Dict("file", "watch"),
|
||||||
ice.LOG_CREATE, kit.Dict("file", "watch"),
|
|
||||||
ice.LOG_INSERT, kit.Dict("file", "watch"),
|
|
||||||
ice.LOG_EXPORT, kit.Dict("file", "watch"),
|
ice.LOG_EXPORT, kit.Dict("file", "watch"),
|
||||||
|
ice.LOG_CREATE, kit.Dict("file", "watch"),
|
||||||
|
ice.LOG_REMOVE, kit.Dict("file", "watch"),
|
||||||
|
ice.LOG_INSERT, kit.Dict("file", "watch"),
|
||||||
|
ice.LOG_DELETE, kit.Dict("file", "watch"),
|
||||||
|
ice.LOG_MODIFY, kit.Dict("file", "watch"),
|
||||||
|
ice.LOG_SELECT, kit.Dict("file", "watch"),
|
||||||
|
|
||||||
|
// 事件
|
||||||
ice.LOG_LISTEN, kit.Dict("file", "bench"),
|
ice.LOG_LISTEN, kit.Dict("file", "bench"),
|
||||||
|
ice.LOG_ACCEPT, kit.Dict("file", "bench", "view", "green"),
|
||||||
|
ice.LOG_FINISH, kit.Dict("file", "bench", "view", "red"),
|
||||||
ice.LOG_SIGNAL, kit.Dict("file", "bench"),
|
ice.LOG_SIGNAL, kit.Dict("file", "bench"),
|
||||||
ice.LOG_TIMERS, kit.Dict("file", "bench"),
|
|
||||||
ice.LOG_EVENTS, kit.Dict("file", "bench"),
|
ice.LOG_EVENTS, kit.Dict("file", "bench"),
|
||||||
|
ice.LOG_TIMERS, kit.Dict("file", "bench"),
|
||||||
|
|
||||||
|
// 状态
|
||||||
ice.LOG_BEGIN, kit.Dict("file", "bench"),
|
ice.LOG_BEGIN, kit.Dict("file", "bench"),
|
||||||
ice.LOG_START, kit.Dict("file", "bench", "prefix", "\033[32m", "suffix", "\033[0m"),
|
ice.LOG_START, kit.Dict("file", "bench", "view", "green"),
|
||||||
ice.LOG_SERVE, kit.Dict("file", "bench", "prefix", "\033[32m", "suffix", "\033[0m"),
|
ice.LOG_SERVE, kit.Dict("file", "bench", "view", "green"),
|
||||||
ice.LOG_CLOSE, kit.Dict("file", "bench", "prefix", "\033[31m", "suffix", "\033[0m"),
|
ice.LOG_CLOSE, kit.Dict("file", "bench", "view", "red"),
|
||||||
|
|
||||||
ice.LOG_CMDS, kit.Dict("file", "bench", "prefix", "\033[32m", "suffix", "\033[0m"),
|
// 分类
|
||||||
ice.LOG_COST, kit.Dict("file", "bench", "prefix", "\033[33m", "suffix", "\033[0m"),
|
ice.LOG_AUTH, kit.Dict("file", "bench", "view", "yellow"),
|
||||||
|
ice.LOG_CMDS, kit.Dict("file", "bench", "view", "green"),
|
||||||
|
ice.LOG_COST, kit.Dict("file", "bench", "view", "yellow"),
|
||||||
ice.LOG_INFO, kit.Dict("file", "bench"),
|
ice.LOG_INFO, kit.Dict("file", "bench"),
|
||||||
ice.LOG_WARN, kit.Dict("file", "bench", "prefix", "\033[31m", "suffix", "\033[0m"),
|
ice.LOG_WARN, kit.Dict("file", "bench", "view", "red"),
|
||||||
ice.LOG_ERROR, kit.Dict("file", "error"),
|
ice.LOG_ERROR, kit.Dict("file", "error"),
|
||||||
ice.LOG_TRACE, kit.Dict("file", "trace"),
|
ice.LOG_TRACE, kit.Dict("file", "trace"),
|
||||||
)},
|
)},
|
||||||
@ -98,7 +121,7 @@ var Index = &ice.Context{Name: "log", Help: "日志模块",
|
|||||||
if f, p, e := kit.Create(kit.Format(value["path"])); m.Assert(e) {
|
if f, p, e := kit.Create(kit.Format(value["path"])); m.Assert(e) {
|
||||||
m.Cap(ice.CTX_STREAM, path.Base(p))
|
m.Cap(ice.CTX_STREAM, path.Base(p))
|
||||||
m.Log("create", "%s: %s", key, p)
|
m.Log("create", "%s: %s", key, p)
|
||||||
value["file"] = f
|
value["file"] = bufio.NewWriter(f)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -4,10 +4,15 @@ import (
|
|||||||
"github.com/shylinux/icebergs"
|
"github.com/shylinux/icebergs"
|
||||||
"github.com/shylinux/toolkits"
|
"github.com/shylinux/toolkits"
|
||||||
|
|
||||||
|
"bufio"
|
||||||
"net"
|
"net"
|
||||||
|
"net/url"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type Frame struct {
|
||||||
|
}
|
||||||
|
|
||||||
var Index = &ice.Context{Name: "tcp", Help: "通信模块",
|
var Index = &ice.Context{Name: "tcp", Help: "通信模块",
|
||||||
Caches: map[string]*ice.Cache{},
|
Caches: map[string]*ice.Cache{},
|
||||||
Configs: map[string]*ice.Config{
|
Configs: map[string]*ice.Config{
|
||||||
@ -73,6 +78,95 @@ var Index = &ice.Context{Name: "tcp", Help: "通信模块",
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
|
|
||||||
|
"check": {Name: "check addr", Help: "server", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
|
if strings.Contains(arg[0], ".") {
|
||||||
|
switch list := strings.Split(arg[0], ":"); list[0] {
|
||||||
|
case "127.0.0.1":
|
||||||
|
m.Echo("local")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
switch list := strings.Split(arg[0], "]:"); strings.TrimPrefix(list[0], "[") {
|
||||||
|
case "::1":
|
||||||
|
m.Echo("local")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}},
|
||||||
|
"server": {Name: "server [tcp4|tcp6|udp4|udp6] addr", Help: "server", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
|
proto := "tcp4"
|
||||||
|
switch arg[0] {
|
||||||
|
case "tcp", "tcp4", "tcp6", "udp", "udp4", "udp6", "ip", "ip4", "ip6":
|
||||||
|
proto, arg = arg[0], arg[1:]
|
||||||
|
}
|
||||||
|
|
||||||
|
if l, e := net.Listen(proto, arg[0]); m.Assert(e) {
|
||||||
|
m.Gos(m, func(m *ice.Message) {
|
||||||
|
// 启动服务
|
||||||
|
m.Logs(ice.LOG_LISTEN, "addr", l.Addr())
|
||||||
|
for {
|
||||||
|
if c, e := l.Accept(); m.Assert(e) {
|
||||||
|
m.Gos(m.Spawns(), func(msg *ice.Message) {
|
||||||
|
// 建立连接
|
||||||
|
msg.Logs(ice.LOG_ACCEPT, "addr", c.RemoteAddr())
|
||||||
|
msg.Option(ice.MSG_USERADDR, c.RemoteAddr())
|
||||||
|
msg.Option(ice.MSG_USERNAME, "")
|
||||||
|
msg.Option(ice.MSG_USERROLE, "")
|
||||||
|
|
||||||
|
switch msg.Cmdx("check", c.RemoteAddr().String()) {
|
||||||
|
case "local":
|
||||||
|
// 本机用户
|
||||||
|
msg.Option(ice.MSG_USERNAME, msg.Conf(ice.CLI_RUNTIME, "boot.username"))
|
||||||
|
msg.Option(ice.MSG_USERROLE, msg.Cmdx(ice.AAA_ROLE, "check", msg.Option(ice.MSG_USERNAME)))
|
||||||
|
msg.Logs(ice.LOG_AUTH, "name", msg.Option(ice.MSG_USERNAME), "role", msg.Option(ice.MSG_USERROLE))
|
||||||
|
}
|
||||||
|
|
||||||
|
cmds := []string{}
|
||||||
|
buf := bufio.NewWriter(c)
|
||||||
|
for bio := bufio.NewScanner(c); bio.Scan(); {
|
||||||
|
text := bio.Text()
|
||||||
|
msg.Logs("scan", "len", len(text), "text", text)
|
||||||
|
|
||||||
|
if len(text) == 0 {
|
||||||
|
if len(cmds) > 0 {
|
||||||
|
msg.Cmd(ice.AAA_ROLE, "right")
|
||||||
|
// 执行命令
|
||||||
|
res := msg.Cmd(cmds)
|
||||||
|
|
||||||
|
// 返回结果
|
||||||
|
for _, str := range res.Resultv() {
|
||||||
|
buf.WriteString("result:")
|
||||||
|
buf.WriteString(url.QueryEscape(str))
|
||||||
|
buf.WriteString("\n")
|
||||||
|
}
|
||||||
|
buf.WriteString("\n")
|
||||||
|
buf.Flush()
|
||||||
|
|
||||||
|
cmds = cmds[:0]
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// 解析请求
|
||||||
|
line := strings.SplitN(bio.Text(), ":", 2)
|
||||||
|
line[0], e = url.QueryUnescape(line[0])
|
||||||
|
m.Assert(e)
|
||||||
|
line[1], e = url.QueryUnescape(line[1])
|
||||||
|
m.Assert(e)
|
||||||
|
switch line[0] {
|
||||||
|
case "cmds", ice.MSG_DETAIL:
|
||||||
|
cmds = append(cmds, line[1])
|
||||||
|
default:
|
||||||
|
msg.Option(line[0], line[1])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
msg.Logs(ice.LOG_FINISH, "addr", c.RemoteAddr())
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m.Logs(ice.LOG_FINISH, "addr", l.Addr())
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
8
conf.go
8
conf.go
@ -105,11 +105,13 @@ const ( // LOG
|
|||||||
LOG_REMOVE = "remove"
|
LOG_REMOVE = "remove"
|
||||||
LOG_INSERT = "insert"
|
LOG_INSERT = "insert"
|
||||||
LOG_DELETE = "delete"
|
LOG_DELETE = "delete"
|
||||||
LOG_SELECT = "select"
|
|
||||||
LOG_MODIFY = "modify"
|
LOG_MODIFY = "modify"
|
||||||
|
LOG_SELECT = "select"
|
||||||
|
|
||||||
// 事件
|
// 事件
|
||||||
LOG_LISTEN = "listen"
|
LOG_LISTEN = "listen"
|
||||||
|
LOG_ACCEPT = "accept"
|
||||||
|
LOG_FINISH = "finish"
|
||||||
LOG_SIGNAL = "signal"
|
LOG_SIGNAL = "signal"
|
||||||
LOG_EVENTS = "events"
|
LOG_EVENTS = "events"
|
||||||
LOG_TIMERS = "timers"
|
LOG_TIMERS = "timers"
|
||||||
@ -120,10 +122,8 @@ const ( // LOG
|
|||||||
LOG_SERVE = "serve"
|
LOG_SERVE = "serve"
|
||||||
LOG_CLOSE = "close"
|
LOG_CLOSE = "close"
|
||||||
|
|
||||||
// 权限
|
|
||||||
LOG_AUTH = "auth"
|
|
||||||
|
|
||||||
// 分类
|
// 分类
|
||||||
|
LOG_AUTH = "auth"
|
||||||
LOG_CMDS = "cmds"
|
LOG_CMDS = "cmds"
|
||||||
LOG_COST = "cost"
|
LOG_COST = "cost"
|
||||||
LOG_INFO = "info"
|
LOG_INFO = "info"
|
||||||
|
@ -158,10 +158,6 @@ var Index = &ice.Context{Name: "tmux", Help: "工作台",
|
|||||||
m.Cmd(prefix, "new-window", "-dt", session, "-n", arg[0])
|
m.Cmd(prefix, "new-window", "-dt", session, "-n", arg[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
if arg[1] == "init" {
|
|
||||||
} else {
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, v := range arg[1:] {
|
for _, v := range arg[1:] {
|
||||||
switch ls := kit.Split(v); ls[1] {
|
switch ls := kit.Split(v); ls[1] {
|
||||||
case "v":
|
case "v":
|
||||||
|
@ -7,6 +7,7 @@ import (
|
|||||||
kit "github.com/shylinux/toolkits"
|
kit "github.com/shylinux/toolkits"
|
||||||
|
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
@ -17,11 +18,10 @@ var Index = &ice.Context{Name: "zsh", Help: "命令行",
|
|||||||
Caches: map[string]*ice.Cache{},
|
Caches: map[string]*ice.Cache{},
|
||||||
Configs: map[string]*ice.Config{
|
Configs: map[string]*ice.Config{
|
||||||
"zsh": {Name: "zsh", Help: "命令行", Value: kit.Data(
|
"zsh": {Name: "zsh", Help: "命令行", Value: kit.Data(
|
||||||
"history", "zsh.history", "script", []interface{}{
|
"proxy", "tmux", "history", "zsh.history", "script", []interface{}{
|
||||||
|
".vim/syntax/sh.vim", "etc/conf/sh.vim",
|
||||||
".bashrc", "etc/conf/bashrc",
|
".bashrc", "etc/conf/bashrc",
|
||||||
".zshrc", "etc/conf/zshrc",
|
".zshrc", "etc/conf/zshrc",
|
||||||
".ish/plug.sh", "usr/shell/plug.sh",
|
|
||||||
".vim/syntax/sh.vim", "etc/conf/sh.vim",
|
|
||||||
},
|
},
|
||||||
)},
|
)},
|
||||||
},
|
},
|
||||||
@ -39,6 +39,9 @@ var Index = &ice.Context{Name: "zsh", Help: "命令行",
|
|||||||
}},
|
}},
|
||||||
ice.CODE_PREPARE: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
ice.CODE_PREPARE: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
m.Cmd("web.code.git.repos", "shell", "usr/shell")
|
m.Cmd("web.code.git.repos", "shell", "usr/shell")
|
||||||
|
p := path.Join(os.Getenv("HOME"), ".ish")
|
||||||
|
m.Cmd(ice.CLI_SYSTEM, "rm", p)
|
||||||
|
m.Cmd(ice.CLI_SYSTEM, "ln", "-s", kit.Path("usr/shell"), p)
|
||||||
|
|
||||||
list := kit.Simple(m.Confv("zsh", "meta.script"))
|
list := kit.Simple(m.Confv("zsh", "meta.script"))
|
||||||
for i := 0; i < len(list); i += 2 {
|
for i := 0; i < len(list); i += 2 {
|
||||||
@ -54,9 +57,10 @@ var Index = &ice.Context{Name: "zsh", Help: "命令行",
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m.Option("you", m.Conf("zsh", "meta.proxy"))
|
||||||
m.Richs("login", nil, m.Option("sid"), func(key string, value map[string]interface{}) {
|
m.Richs("login", nil, m.Option("sid"), func(key string, value map[string]interface{}) {
|
||||||
// 查找空间
|
// 查找空间
|
||||||
m.Option("you", value["you"])
|
m.Option("you", kit.Select(m.Conf("zsh", "meta.proxy"), value["you"]))
|
||||||
})
|
})
|
||||||
|
|
||||||
m.Logs(ice.LOG_AUTH, "you", m.Option("you"), "url", m.Option(ice.MSG_USERURL), "cmd", m.Optionv("cmds"), "sub", m.Optionv("sub"))
|
m.Logs(ice.LOG_AUTH, "you", m.Option("you"), "url", m.Option(ice.MSG_USERURL), "cmd", m.Optionv("cmds"), "sub", m.Optionv("sub"))
|
||||||
@ -204,6 +208,14 @@ var Index = &ice.Context{Name: "zsh", Help: "命令行",
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}},
|
}},
|
||||||
|
"/ish": {Name: "/ish", Help: "命令", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
|
if sub, e := url.QueryUnescape(m.Option("sub")); m.Assert(e) {
|
||||||
|
m.Cmdy(kit.Split(sub))
|
||||||
|
if len(m.Resultv()) == 0 {
|
||||||
|
m.Table()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}},
|
||||||
|
|
||||||
"/download": {Name: "/download", Help: "下载", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
"/download": {Name: "/download", Help: "下载", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
if len(arg) == 0 || arg[0] == "" {
|
if len(arg) == 0 || arg[0] == "" {
|
||||||
|
12
type.go
12
type.go
@ -1,3 +1,6 @@
|
|||||||
|
// icebergs: 后端 冰山架 挨撕不可
|
||||||
|
// CMS: a cluster manager system
|
||||||
|
|
||||||
package ice
|
package ice
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@ -34,15 +37,16 @@ type Config struct {
|
|||||||
Value interface{}
|
Value interface{}
|
||||||
}
|
}
|
||||||
type Command struct {
|
type Command struct {
|
||||||
Name string
|
Name interface{} // string []string
|
||||||
Help interface{}
|
Help interface{} // string []string
|
||||||
List []interface{}
|
List []interface{}
|
||||||
Meta map[string]interface{}
|
Meta map[string]interface{}
|
||||||
Hand func(m *Message, c *Context, key string, arg ...string)
|
Hand func(m *Message, c *Context, key string, arg ...string)
|
||||||
}
|
}
|
||||||
type Context struct {
|
type Context struct {
|
||||||
Name string
|
Name string
|
||||||
Help string
|
Help interface{} // string []string
|
||||||
|
Test interface{} // string []string
|
||||||
|
|
||||||
Caches map[string]*Cache
|
Caches map[string]*Cache
|
||||||
Configs map[string]*Config
|
Configs map[string]*Config
|
||||||
@ -95,7 +99,7 @@ func (c *Context) Register(s *Context, x Server) *Context {
|
|||||||
if c.contexts == nil {
|
if c.contexts == nil {
|
||||||
c.contexts = map[string]*Context{}
|
c.contexts = map[string]*Context{}
|
||||||
}
|
}
|
||||||
c.contexts[s.Name] = s
|
c.contexts[kit.Format(s.Name)] = s
|
||||||
s.root = c.root
|
s.root = c.root
|
||||||
s.context = c
|
s.context = c
|
||||||
s.server = x
|
s.server = x
|
||||||
|
Loading…
x
Reference in New Issue
Block a user