diff --git a/base/nfs/cat.go b/base/nfs/cat.go index 4ef16823..c40eb65e 100644 --- a/base/nfs/cat.go +++ b/base/nfs/cat.go @@ -19,7 +19,7 @@ func _cat_ext(name string) string { } func _cat_right(m *ice.Message, name string) bool { switch strings.Split(name, "/")[0] { - case kit.SSH_ETC, kit.SSH_VAR: + case ice.ETC, ice.VAR: if m.Warn(m.Option(ice.MSG_USERROLE) == aaa.VOID, ice.ErrNotRight, "of", name) { return false } diff --git a/base/ssh/ssh.go b/base/ssh/ssh.go index 733e353d..c5f317bb 100644 --- a/base/ssh/ssh.go +++ b/base/ssh/ssh.go @@ -2,8 +2,6 @@ package ssh import ( ice "shylinux.com/x/icebergs" - "shylinux.com/x/icebergs/base/tcp" - kit "shylinux.com/x/toolkits" ) const SSH = "ssh" @@ -11,12 +9,6 @@ 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.Richs(SESSION, "", kit.MDB_FOREACH, func(key string, value map[string]interface{}) { - kit.Value(value, kit.Keym(kit.MDB_STATUS), tcp.CLOSE) - }) - m.Richs(CHANNEL, "", kit.MDB_FOREACH, func(key string, value map[string]interface{}) { - kit.Value(value, kit.Keym(kit.MDB_STATUS), tcp.CLOSE) - }) }}, ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { if f, ok := m.Target().Server().(*Frame); ok { @@ -28,7 +20,6 @@ var Index = &ice.Context{Name: SSH, Help: "终端模块", Commands: map[string]* func init() { ice.Index.Register(Index, &Frame{}, - CONNECT, SESSION, SERVICE, CHANNEL, SOURCE, TARGET, PROMPT, PRINTF, SCREEN, RETURN, ) } diff --git a/base/web/cache.go b/base/web/cache.go index f803dfa3..756693c6 100644 --- a/base/web/cache.go +++ b/base/web/cache.go @@ -99,11 +99,11 @@ func _cache_download(m *ice.Message, r *http.Response) (file, size string) { case []string: m.Richs(cb[0], cb[1], cb[2], func(key string, value map[string]interface{}) { value = kit.GetMeta(value) - value[kit.SSH_STEP], value[kit.MDB_SIZE], value[kit.MDB_TOTAL] = kit.Format(s), size, total + value[kit.MDB_STEP], value[kit.MDB_SIZE], value[kit.MDB_TOTAL] = kit.Format(s), size, total }) default: if s != step && s%10 == 0 { - m.Log_IMPORT(kit.MDB_FILE, p, kit.SSH_STEP, s, + m.Log_IMPORT(kit.MDB_FILE, p, kit.MDB_STEP, s, kit.MDB_SIZE, kit.FmtSize(int64(size)), kit.MDB_TOTAL, kit.FmtSize(int64(total))) } } diff --git a/base/web/dream.go b/base/web/dream.go index 8ee90d63..ad8d0450 100644 --- a/base/web/dream.go +++ b/base/web/dream.go @@ -76,7 +76,7 @@ func _dream_show(m *ice.Message, name string) { m.Option(cli.CMD_DIR, p) m.Optionv(cli.CMD_ENV, kit.Simple( "ctx_dev", "http://:"+m.Cmd(SERVE).Append(tcp.PORT), - cli.PATH, kit.Path(path.Join(p, kit.SSH_BIN))+":"+kit.Path(kit.SSH_BIN)+":"+os.Getenv(cli.PATH), + cli.PATH, kit.Path(path.Join(p, ice.BIN))+":"+kit.Path(ice.BIN)+":"+os.Getenv(cli.PATH), "USER", ice.Info.UserName, m.Confv(DREAM, kit.Keym(cli.ENV)), )) // 启动任务 @@ -140,7 +140,7 @@ func init() { Configs: map[string]*ice.Config{ DREAM: {Name: DREAM, Help: "梦想家", Value: kit.Data(kit.MDB_PATH, ice.USR_LOCAL_WORK, cli.CMD, []interface{}{"ice.bin", SPACE, tcp.DIAL}, - cli.ENV, kit.Dict(cli.CTX_LOG, ice.BIN_BOOTLOG), + cli.ENV, kit.Dict(cli.CTX_LOG, ice.BIN_BOOT_LOG), "miss", `#!/bin/bash if [ "$ISH_CONF_PRE" = "" ]; then [ -f $PWD/.ish/plug.sh ] || [ -f $HOME/.ish/plug.sh ] || git clone ${ISH_CONF_HUB_PROXY:="https://"}shylinux.com/x/intshell $PWD/.ish diff --git a/base/web/serve.go b/base/web/serve.go index cb1cd052..556e1aa2 100644 --- a/base/web/serve.go +++ b/base/web/serve.go @@ -67,7 +67,7 @@ func _serve_main(m *ice.Message, w http.ResponseWriter, r *http.Request) bool { msg := m.Spawn() msg.W, msg.R = w, r repos := kit.Select(ice.INTSHELL, ice.VOLCANOS, strings.Contains(r.Header.Get("User-Agent"), "Mozilla/5.0")) - Render(msg, ice.RENDER_DOWNLOAD, path.Join(m.Conf(SERVE, kit.Keym(repos, kit.SSH_PATH)), m.Conf(SERVE, kit.Keym(repos, kit.SSH_INDEX)))) + Render(msg, ice.RENDER_DOWNLOAD, path.Join(m.Conf(SERVE, kit.Keym(repos, kit.MDB_PATH)), m.Conf(SERVE, kit.Keym(repos, kit.MDB_INDEX)))) return false } @@ -246,12 +246,12 @@ func init() { "x", true, ice.PUBLISH, true, ), LOGHEADERS, false, - kit.SSH_STATIC, kit.Dict("/", ice.USR_VOLCANOS), - ice.VOLCANOS, kit.Dict(kit.MDB_PATH, ice.USR_VOLCANOS, kit.SSH_INDEX, "page/index.html", + "static", kit.Dict("/", ice.USR_VOLCANOS), + ice.VOLCANOS, kit.Dict(kit.MDB_PATH, ice.USR_VOLCANOS, kit.MDB_INDEX, "page/index.html", kit.SSH_REPOS, "https://shylinux.com/x/volcanos", kit.SSH_BRANCH, kit.SSH_MASTER, ), ice.PUBLISH, ice.USR_PUBLISH, - ice.INTSHELL, kit.Dict(kit.MDB_PATH, ice.USR_INTSHELL, kit.SSH_INDEX, ice.INDEX_SH, + ice.INTSHELL, kit.Dict(kit.MDB_PATH, ice.USR_INTSHELL, kit.MDB_INDEX, ice.INDEX_SH, kit.SSH_REPOS, "https://shylinux.com/x/intshell", kit.SSH_BRANCH, kit.SSH_MASTER, ), ice.REQUIRE, ".ish/pluged", )}, diff --git a/base/web/share.go b/base/web/share.go index 9f776986..4067537b 100644 --- a/base/web/share.go +++ b/base/web/share.go @@ -37,7 +37,7 @@ func _share_cache(m *ice.Message, arg ...string) { func _share_local(m *ice.Message, arg ...string) { p := path.Join(arg...) switch ls := strings.Split(p, "/"); ls[0] { - case kit.SSH_ETC, kit.SSH_VAR: // 私有文件 + case ice.ETC, ice.VAR: // 私有文件 if m.Option(ice.MSG_USERROLE) == aaa.VOID { m.Render(STATUS, http.StatusUnauthorized, ice.ErrNotRight) return // 没有权限 diff --git a/conf.go b/conf.go index 38ad1ce4..274792a4 100644 --- a/conf.go +++ b/conf.go @@ -3,6 +3,7 @@ package ice const ( SP = " " NL = "\n" + PT = "." OK = "ok" TRUE = "true" @@ -11,15 +12,29 @@ const ( FAILURE = "failure" INIT = "init" - EXIT = "exit" - SAVE = "save" LOAD = "load" + AUTO = "auto" HELP = "help" + SAVE = "save" + EXIT = "exit" - ICE = "ice" SHY = "shy" DEV = "dev" WEB = "web" + ICE = "ice" + RUN = "run" + + POD = "pod" + CTX = "ctx" + CMD = "cmd" + ARG = "arg" + OPT = "opt" + + SRC = "src" + ETC = "etc" + BIN = "bin" + VAR = "var" + USR = "usr" ) const ( // MOD MOD_DIR = 0750 @@ -75,10 +90,11 @@ const ( // DIR VAR_TRASH = "var/trash" BIN_ICE_SH = "bin/ice.sh" BIN_ICE_BIN = "bin/ice.bin" - BIN_BOOTLOG = "bin/boot.log" + BIN_BOOT_LOG = "bin/boot.log" ETC_INIT_SHY = "etc/init.shy" ETC_EXIT_SHY = "etc/exit.shy" ETC_MISS_SH = "etc/miss.sh" + ETC_PATH = "etc/path" SRC_HELP = "src/help" SRC_MAIN_SHY = "src/main.shy" @@ -104,8 +120,8 @@ const ( // MSG MSG_OUTPUT = "_output" MSG_ARGS = "_args" - MSG_DAEMON = "_daemon" MSG_UPLOAD = "_upload" + MSG_DAEMON = "_daemon" MSG_ACTION = "_action" MSG_STATUS = "_status" @@ -126,11 +142,12 @@ const ( // MSG MSG_USERDATA = "user.data" MSG_USERNICK = "user.nick" MSG_USERNAME = "user.name" - MSG_USERZONE = "user.zone" MSG_USERROLE = "user.role" + MSG_USERZONE = "user.zone" MSG_LANGUAGE = "user.lang" MSG_TITLE = "sess.title" + MSG_TOPIC = "sess.topic" MSG_RIVER = "sess.river" MSG_STORM = "sess.storm" MSG_LOCAL = "sess.local" @@ -152,13 +169,13 @@ const ( // RENDER RENDER_IMAGES = "_images" RENDER_VIDEOS = "_videos" RENDER_TEMPLATE = "_template" - RENDER_DOWNLOAD = "_download" RENDER_REDIRECT = "_redirect" + RENDER_DOWNLOAD = "_download" ) const ( // PROCESS PROCESS_LOCATION = "_location" - PROCESS_REWRITE = "_rewrite" PROCESS_REFRESH = "_refresh" + PROCESS_REWRITE = "_rewrite" PROCESS_DISPLAY = "_display" PROCESS_FIELD = "_field" PROCESS_INNER = "_inner" @@ -173,8 +190,8 @@ const ( // PROCESS ) const ( // Err ErrWarn = "warn: " - ErrExpire = "expire: " ErrExists = "exists: " + ErrExpire = "expire: " ErrNotLogin = "not login: " ErrNotFound = "not found: " ErrNotRight = "not right: " diff --git a/core/chat/header.go b/core/chat/header.go index 42f4056e..4386aae8 100644 --- a/core/chat/header.go +++ b/core/chat/header.go @@ -89,9 +89,6 @@ func init() { SHARE: {Name: "share type", Help: "共享", Hand: func(m *ice.Message, arg ...string) { _header_share(m, arg...) }}, - GRANT: {Name: "grant space", Help: "授权", Hand: func(m *ice.Message, arg ...string) { - _header_grant(m, arg...) - }}, aaa.LOGIN: {Name: "login", Help: "密码登录", Hand: func(m *ice.Message, arg ...string) { if aaa.UserLogin(m, arg[0], arg[1]) { @@ -127,5 +124,11 @@ func init() { } m.Echo(m.Conf(HEADER, kit.Keym(TITLE))) }}, + HEADER: {Name: "header", Help: "标题栏", Action: map[string]*ice.Action{ + GRANT: {Name: "grant space", Help: "授权", Hand: func(m *ice.Message, arg ...string) { + _header_grant(m, arg...) + }}, + }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { + }}, }}) } diff --git a/core/code/autogen.go b/core/code/autogen.go index cdc1c4c2..a35b71c3 100644 --- a/core/code/autogen.go +++ b/core/code/autogen.go @@ -157,12 +157,12 @@ func init() { } m.Option("tag", kit.Format("`name:\"%s\" help:\"%s\"`", m.Option("list"), m.Option("help"))) - if p := path.Join(kit.SSH_SRC, m.Option(kit.MDB_ZONE), kit.Keys(m.Option(kit.MDB_NAME), SHY)); !kit.FileExists(p) { + if p := path.Join(ice.SRC, m.Option(kit.MDB_ZONE), kit.Keys(m.Option(kit.MDB_NAME), SHY)); !kit.FileExists(p) { _autogen_script(m, p) _autogen_source(m, m.Option(kit.MDB_ZONE), m.Option(kit.MDB_NAME)) } - if p := path.Join(kit.SSH_SRC, m.Option(kit.MDB_ZONE), kit.Keys(m.Option(kit.MDB_NAME), GO)); !kit.FileExists(p) { + if p := path.Join(ice.SRC, m.Option(kit.MDB_ZONE), kit.Keys(m.Option(kit.MDB_NAME), GO)); !kit.FileExists(p) { _autogen_module(m, p) _autogen_import(m, m.Option(kit.MDB_MAIN), m.Option(kit.MDB_ZONE), _autogen_mod(m, ice.GO_MOD)) } @@ -171,7 +171,7 @@ func init() { switch arg[0] { case kit.MDB_MAIN: m.Option(nfs.DIR_REG, `.*\.go`) - m.Cmdy(nfs.DIR, kit.SSH_SRC, "path,size,time") + m.Cmdy(nfs.DIR, ice.SRC, "path,size,time") m.RenameAppend(kit.MDB_PATH, arg[0]) } }}, @@ -183,7 +183,7 @@ func init() { _autogen_miss(m) }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - if m.Option(nfs.DIR_ROOT, kit.SSH_SRC); len(arg) == 0 || strings.HasSuffix(arg[0], "/") { + if m.Option(nfs.DIR_ROOT, ice.SRC); len(arg) == 0 || strings.HasSuffix(arg[0], "/") { m.Cmdy(nfs.DIR, kit.Select("./", arg, 0)) } else { m.Cmdy(nfs.CAT, arg[0]) diff --git a/core/code/install.go b/core/code/install.go index 7ddb4ade..cf8b819f 100644 --- a/core/code/install.go +++ b/core/code/install.go @@ -37,7 +37,7 @@ func _install_download(m *ice.Message) { p := 0 m.Optionv(kit.Keycb(web.DOWNLOAD), func(size int, total int) { if n := size * 100 / total; p != n { - value[kit.SSH_STEP], value[kit.MDB_SIZE], value[kit.MDB_TOTAL] = n, size, total + value[kit.MDB_STEP], value[kit.MDB_SIZE], value[kit.MDB_TOTAL] = n, size, total toast(name, size, total) p = n } diff --git a/core/code/webpack.go b/core/code/webpack.go index 7a61aaa8..5bc78c4a 100644 --- a/core/code/webpack.go +++ b/core/code/webpack.go @@ -24,7 +24,7 @@ func init() { Index.Merge(&ice.Context{Commands: map[string]*ice.Command{ WEBPACK: {Name: "webpack path auto create prunes", Help: "打包", Action: map[string]*ice.Action{ mdb.CREATE: {Name: "create name=demo", Help: "创建", Hand: func(m *ice.Message, arg ...string) { - dir := m.Conf(web.SERVE, kit.Keym(ice.VOLCANOS, kit.SSH_PATH)) + dir := m.Conf(web.SERVE, kit.Keym(ice.VOLCANOS, kit.MDB_PATH)) css, _, e := kit.Create(path.Join(dir, "page/cache.css")) m.Assert(e) defer css.Close() diff --git a/core/wiki/spark.go b/core/wiki/spark.go index f01e6b07..842d0325 100644 --- a/core/wiki/spark.go +++ b/core/wiki/spark.go @@ -35,6 +35,11 @@ const ( PROMPT = "prompt" ) +const ( + SSH_SHELL = "shell" + SSH_BREAK = "break" +) + const SPARK = "spark" func init() { @@ -43,13 +48,13 @@ func init() { ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { ice.AddRender(ice.RENDER_SCRIPT, func(m *ice.Message, cmd string, args ...interface{}) string { arg := kit.Simple(args...) - if len(arg) == 1 && arg[0] != kit.SSH_BREAK { - arg = []string{kit.SSH_SHELL, arg[0]} + if len(arg) == 1 && arg[0] != SSH_BREAK { + arg = []string{SSH_SHELL, arg[0]} } list := []string{kit.Format(`
`, arg[0])} for _, l := range strings.Split(strings.Join(arg[1:], "\n"), "\n") { switch list = append(list, "
"); arg[0] { - case kit.SSH_SHELL: + case SSH_SHELL: list = append(list, "") default: list = append(list, "") diff --git a/exec.go b/exec.go index 985754ae..e3097766 100644 --- a/exec.go +++ b/exec.go @@ -18,9 +18,9 @@ func (m *Message) TryCatch(msg *Message, silent bool, hand ...func(msg *Message) default: fileline := kit.FileLine(4, 5) m.Log(LOG_WARN, "catch: %s %s", e, fileline) - m.Log("chain", msg.FormatChain()) + m.Log(kit.MDB_CHAIN, msg.FormatChain()) m.Log(LOG_WARN, "catch: %s %s", e, fileline) - m.Log("stack", msg.FormatStack()) + m.Log(kit.MDB_STACK, msg.FormatStack()) m.Log(LOG_WARN, "catch: %s %s", e, fileline) if len(hand) > 1 { // 捕获异常 m.TryCatch(msg, silent, hand[1:]...) @@ -79,7 +79,7 @@ func (m *Message) Done(b bool) bool { func (m *Message) Call(sync bool, cb func(*Message) *Message) *Message { wait := make(chan bool, 2) - p := kit.Select("10s", m.Option("timeout")) + p := kit.Select("10s", m.Option(kit.MDB_TIMEOUT)) t := time.AfterFunc(kit.Duration(p), func() { m.Warn(true, "%s timeout %v", p, m.Detailv()) wait <- false @@ -126,9 +126,9 @@ func (m *Message) Go(cb interface{}, args ...interface{}) *Message { func (m *Message) Watch(key string, arg ...string) *Message { if len(arg) == 0 { - arg = append(arg, m.Prefix("auto")) + arg = append(arg, m.Prefix(AUTO)) } - m.Cmd("gdb.event", "action", "listen", "event", key, "cmd", strings.Join(arg, " ")) + m.Cmd("gdb.event", "action", "listen", "event", key, CMD, strings.Join(arg, SP)) return m } func (m *Message) Event(key string, arg ...string) *Message { @@ -137,8 +137,8 @@ func (m *Message) Event(key string, arg ...string) *Message { } func (m *Message) Right(arg ...interface{}) bool { return m.Option(MSG_USERROLE) == "root" || !m.Warn(m.Cmdx("aaa.role", "right", - m.Option(MSG_USERROLE), strings.ReplaceAll(kit.Keys(arg...), "/", ".")) != "ok", - ErrNotRight, m.Option(MSG_USERROLE), " of ", strings.Join(kit.Simple(arg), "."), " at ", kit.FileLine(2, 3)) + m.Option(MSG_USERROLE), strings.ReplaceAll(kit.Keys(arg...), "/", PT)) != OK, + ErrNotRight, m.Option(MSG_USERROLE), " of ", strings.Join(kit.Simple(arg), PT), " at ", kit.FileLine(2, 3)) } func (m *Message) Space(arg interface{}) []string { if arg == nil || arg == "" || kit.Format(arg) == m.Conf("cli.runtime", "node.name") { @@ -147,9 +147,9 @@ func (m *Message) Space(arg interface{}) []string { return []string{"web.space", kit.Format(arg)} } func (m *Message) PodCmd(arg ...interface{}) bool { - if pod := m.Option("pod"); pod != "" { - m.Option("pod", "") - if m.Option("_upload") != "" { + if pod := m.Option(POD); pod != "" { + m.Option(POD, "") + if m.Option(MSG_UPLOAD) != "" { msg := m.Cmd("cache", "upload") m.Option(MSG_UPLOAD, msg.Append(kit.MDB_HASH), msg.Append(kit.MDB_NAME), msg.Append(kit.MDB_SIZE)) } diff --git a/go.mod b/go.mod index 39cd3543..58865898 100644 --- a/go.mod +++ b/go.mod @@ -4,8 +4,6 @@ go 1.11 require ( github.com/gorilla/websocket v1.4.2 - github.com/kr/pty v1.1.8 github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e - golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 - shylinux.com/x/toolkits v0.3.4 + shylinux.com/x/toolkits v0.3.5 ) diff --git a/go.sum b/go.sum index 95cf1101..24e67076 100644 --- a/go.sum +++ b/go.sum @@ -1,19 +1,4 @@ -github.com/creack/pty v1.1.7 h1:6pwm8kMQKCmgUg0ZHTm5+/YvRK0s3THD/28+T6/kk4A= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= -github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/kr/pty v1.1.8 h1:AkaSdXYQOWeaO3neb8EM634ahkXXe3jYbVh/F9lq+GI= -github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= -github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e h1:MRM5ITcdelLK2j1vwZ3Je0FKVCfqOLp5zO6trqMLYs0= github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e/go.mod h1:XV66xRDqSt+GTGFMVlhk3ULuV0y9ZmzeVGR4mloJI3M= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 h1:It14KIkyBFYkHkwZ7k45minvA9aorojkyjGk9KJ5B/w= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 h1:nxC68pudNYkKU6jWhgrqdreuFiOQWj1Fs7T3VrH4Pjw= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -shylinux.com/x/toolkits v0.3.3 h1:yNH54CANAv7cPT264tpnDt9G2BVfGwLC9y3rxtU6pkg= -shylinux.com/x/toolkits v0.3.3/go.mod h1:8LbYHe7oxBIqb6s4MSOD+4d28QvPdvkyCVtwB/JW7AA= +shylinux.com/x/toolkits v0.3.5 h1:J0KlCuIPiJc074+5T0nUJawp3MJGH8VQKzqlpRsVQ70= +shylinux.com/x/toolkits v0.3.5/go.mod h1:8LbYHe7oxBIqb6s4MSOD+4d28QvPdvkyCVtwB/JW7AA= diff --git a/init.go b/init.go index 0037f8d6..3b37511f 100644 --- a/init.go +++ b/init.go @@ -17,7 +17,7 @@ func (f *Frame) Spawn(m *Message, c *Context, arg ...string) Server { return &Frame{} } func (f *Frame) Begin(m *Message, arg ...string) Server { - m.Log(LOG_BEGIN, "ice") + m.Log(LOG_BEGIN, ICE) defer m.Cost("begin ice") list := map[*Context]*Message{m.target: m} @@ -31,7 +31,7 @@ func (f *Frame) Begin(m *Message, arg ...string) Server { return f } func (f *Frame) Start(m *Message, arg ...string) bool { - m.Log(LOG_START, "ice") + m.Log(LOG_START, ICE) defer m.Cost("start ice") m.Cap(CTX_STATUS, CTX_START) @@ -41,11 +41,9 @@ func (f *Frame) Start(m *Message, arg ...string) bool { return true } func (f *Frame) Close(m *Message, arg ...string) bool { - m.TryCatch(m, true, func(m *Message) { - m.target.wg.Wait() - }) + m.TryCatch(m, true, func(m *Message) { m.target.wg.Wait() }) - m.Log(LOG_CLOSE, "ice") + m.Log(LOG_CLOSE, ICE) defer m.Cost("close ice") list := map[*Context]*Message{m.target: m} @@ -59,7 +57,7 @@ func (f *Frame) Close(m *Message, arg ...string) bool { } var Index = &Context{Name: "ice", Help: "冰山模块", Caches: map[string]*Cache{ - CTX_FOLLOW: {Value: "ice"}, CTX_STREAM: {Value: "shy"}, CTX_STATUS: {Value: CTX_BEGIN}, + CTX_FOLLOW: {Value: ICE}, CTX_STREAM: {Value: SHY}, CTX_STATUS: {Value: CTX_BEGIN}, }, Configs: map[string]*Config{ HELP: {Value: kit.Data("index", _help)}, }, Commands: map[string]*Command{ diff --git a/logs.go b/logs.go index d1c3bc09..1decacf9 100644 --- a/logs.go +++ b/logs.go @@ -2,7 +2,6 @@ package ice import ( "encoding/json" - "fmt" "runtime" "strings" "time" @@ -52,8 +51,8 @@ func (m *Message) log(level string, str string, arg ...interface{}) *Message { } // 输出日志 - log.Info(fmt.Sprintf("%02d %9s %s%s %s%s", m.code, - fmt.Sprintf("%4s->%-4s", m.source.Name, m.target.Name), prefix, level, str, suffix)) + log.Info(kit.Format("%02d %9s %s%s %s%s", m.code, + kit.Format("%4s->%-4s", m.source.Name, m.target.Name), prefix, level, str, suffix)) return m } func (m *Message) join(arg ...interface{}) string { @@ -146,7 +145,7 @@ func (m *Message) FormatStack() string { frame, more := frames.Next() file := strings.Split(frame.File, "/") name := strings.Split(frame.Function, "/") - meta = append(meta, fmt.Sprintf("\n%s:%d\t%s", file[len(file)-1], frame.Line, name[len(name)-1])) + meta = append(meta, kit.Format("\n%s:%d\t%s", file[len(file)-1], frame.Line, name[len(name)-1])) if !more { break } @@ -163,16 +162,16 @@ func (m *Message) FormatChain() string { for i := len(ms) - 1; i >= 0; i-- { msg := ms[i] - meta = append(meta, fmt.Sprintf("%s ", msg.Format("prefix"))) + meta = append(meta, kit.Format("%s ", msg.Format("prefix"))) if len(msg.meta[MSG_DETAIL]) > 0 { - meta = append(meta, fmt.Sprintf("detail:%d %v", len(msg.meta[MSG_DETAIL]), msg.meta[MSG_DETAIL])) + meta = append(meta, kit.Format("%s:%d %v", MSG_DETAIL, len(msg.meta[MSG_DETAIL]), msg.meta[MSG_DETAIL])) } if len(msg.meta[MSG_OPTION]) > 0 { - meta = append(meta, fmt.Sprintf("option:%d %v\n", len(msg.meta[MSG_OPTION]), msg.meta[MSG_OPTION])) + meta = append(meta, kit.Format("%s:%d %v\n", MSG_OPTION, len(msg.meta[MSG_OPTION]), msg.meta[MSG_OPTION])) for _, k := range msg.meta[MSG_OPTION] { if v, ok := msg.meta[k]; ok { - meta = append(meta, fmt.Sprintf(" %s: %d %v\n", k, len(v), v)) + meta = append(meta, kit.Format(" %s: %d %v\n", k, len(v), v)) } } } else { @@ -180,30 +179,30 @@ func (m *Message) FormatChain() string { } if len(msg.meta[MSG_APPEND]) > 0 { - meta = append(meta, fmt.Sprintf(" append:%d %v\n", len(msg.meta[MSG_APPEND]), msg.meta[MSG_APPEND])) + meta = append(meta, kit.Format(" %s:%d %v\n", MSG_APPEND, len(msg.meta[MSG_APPEND]), msg.meta[MSG_APPEND])) for _, k := range msg.meta[MSG_APPEND] { if v, ok := msg.meta[k]; ok { - meta = append(meta, fmt.Sprintf(" %s: %d %v\n", k, len(v), v)) + meta = append(meta, kit.Format(" %s: %d %v\n", k, len(v), v)) } } } if len(msg.meta[MSG_RESULT]) > 0 { - meta = append(meta, fmt.Sprintf(" result:%d %v\n", len(msg.meta[MSG_RESULT]), msg.meta[MSG_RESULT])) + meta = append(meta, kit.Format(" %s:%d %v\n", MSG_RESULT, len(msg.meta[MSG_RESULT]), msg.meta[MSG_RESULT])) } } return strings.Join(meta, "") } func (m *Message) FormatTime() string { - return m.Format("time") + return m.Format(kit.MDB_TIME) } func (m *Message) FormatMeta() string { - return m.Format("meta") + return m.Format(kit.MDB_META) } func (m *Message) FormatSize() string { - return m.Format("size") + return m.Format(kit.MDB_SIZE) } func (m *Message) FormatCost() string { - return m.Format("cost") + return m.Format(kit.MDB_COST) } func (m *Message) Format(key interface{}) string { switch key := key.(type) { @@ -211,33 +210,31 @@ func (m *Message) Format(key interface{}) string { json.Unmarshal(key, &m.meta) case string: switch key { - case "cost": + case kit.MDB_COST: return kit.FmtTime(kit.Int64(time.Since(m.time))) - case "meta": + case kit.MDB_SIZE: + if len(m.meta[MSG_APPEND]) == 0 { + return kit.Format("%dx%d", 0, 0) + } else { + return kit.Format("%dx%d", len(m.meta[m.meta[MSG_APPEND][0]]), len(m.meta[MSG_APPEND])) + } + case kit.MDB_META: return kit.Format(m.meta) - case "size": - if len(m.meta["append"]) == 0 { - return fmt.Sprintf("%dx%d", 0, 0) + case kit.MDB_SHIP: + return kit.Format("%s->%s", m.source.Name, m.target.Name) + case kit.MDB_PREFIX: + return kit.Format("%s %d %s->%s", m.Time(), m.code, m.source.Name, m.target.Name) + + case MSG_APPEND: + if len(m.meta[MSG_APPEND]) == 0 { + return kit.Format("%dx%d %s", 0, 0, "[]") } else { - return fmt.Sprintf("%dx%d", len(m.meta[m.meta["append"][0]]), len(m.meta["append"])) - } - case "append": - if len(m.meta["append"]) == 0 { - return fmt.Sprintf("%dx%d %s", 0, 0, "[]") - } else { - return fmt.Sprintf("%dx%d %s", len(m.meta[m.meta["append"][0]]), len(m.meta["append"]), kit.Format(m.meta["append"])) + return kit.Format("%dx%d %s", len(m.meta[m.meta[MSG_APPEND][0]]), len(m.meta[MSG_APPEND]), kit.Format(m.meta[MSG_APPEND])) } - case "time": - return m.Time() - case "ship": - return fmt.Sprintf("%s->%s", m.source.Name, m.target.Name) - case "prefix": - return fmt.Sprintf("%s %d %s->%s", m.Time(), m.code, m.source.Name, m.target.Name) - - case "chain": + case kit.MDB_CHAIN: return m.FormatChain() - case "stack": + case kit.MDB_STACK: return m.FormatStack() } } @@ -245,7 +242,7 @@ func (m *Message) Format(key interface{}) string { } func (m *Message) Formats(key string) string { switch key { - case "meta": + case kit.MDB_META: return kit.Formats(m.meta) } return m.Format(key) diff --git a/meta.go b/meta.go index 0bfd658f..fe2571ca 100644 --- a/meta.go +++ b/meta.go @@ -9,13 +9,6 @@ import ( kit "shylinux.com/x/toolkits" ) -func (m *Message) SetResult(arg ...interface{}) *Message { - m.Set(MSG_RESULT) - if len(arg) > 0 { - m.Echo(kit.Format(arg[0]), arg[1:]...) - } - return m -} func (m *Message) Set(key string, arg ...string) *Message { switch key { case MSG_DETAIL, MSG_RESULT: @@ -304,7 +297,7 @@ func (m *Message) Table(cbs ...func(index int, value map[string]string, head []s } //计算列宽 - space := kit.Select(" ", m.Option("table.space")) + space := kit.Select(SP, m.Option("table.space")) depth, width := 0, map[string]int{} for _, k := range m.meta[MSG_APPEND] { if len(m.meta[k]) > depth { @@ -319,8 +312,8 @@ func (m *Message) Table(cbs ...func(index int, value map[string]string, head []s } // 回调函数 - rows := kit.Select("\n", m.Option("table.row_sep")) - cols := kit.Select(" ", m.Option("table.col_sep")) + rows := kit.Select(NL, m.Option("table.row_sep")) + cols := kit.Select(SP, m.Option("table.col_sep")) compact := m.Option("table.compact") == TRUE cb := func(value map[string]string, field []string, index int) bool { for i, v := range field { @@ -374,8 +367,7 @@ func (m *Message) Detailv(arg ...interface{}) []string { } func (m *Message) Optionv(key string, arg ...interface{}) interface{} { if len(arg) > 0 { - // 写数据 - if kit.IndexOf(m.meta[MSG_OPTION], key) == -1 { + if kit.IndexOf(m.meta[MSG_OPTION], key) == -1 { // 写数据 m.meta[MSG_OPTION] = append(m.meta[MSG_OPTION], key) } @@ -391,7 +383,7 @@ func (m *Message) Optionv(key string, arg ...interface{}) interface{} { m.data[key] = str } if key == MSG_FIELDS { - for _, k := range kit.Split(strings.Join(m.meta[key], ",")) { + for _, k := range kit.Split(kit.Join(m.meta[key])) { delete(m.meta, k) } } @@ -399,12 +391,10 @@ func (m *Message) Optionv(key string, arg ...interface{}) interface{} { for msg := m; msg != nil; msg = msg.message { if list, ok := msg.data[key]; ok { - // 读数据 - return list + return list // 读数据 } if list, ok := msg.meta[key]; ok { - // 读选项 - return list + return list // 读选项 } } return nil diff --git a/misc.go b/misc.go index 5f867965..76ca4836 100644 --- a/misc.go +++ b/misc.go @@ -31,7 +31,7 @@ func (m *Message) CSV(text string, head ...string) *Message { } func (m *Message) Parse(meta string, key string, arg ...string) *Message { list := []string{} - for _, line := range kit.Split(strings.Join(arg, " "), "\n") { + for _, line := range kit.Split(strings.Join(arg, SP), NL) { ls := kit.Split(line) for i := 0; i < len(ls); i++ { if strings.HasPrefix(ls[i], "#") { @@ -157,11 +157,6 @@ func (m *Message) cmd(arg ...interface{}) *Message { case Option: opts[val.Name] = val.Value - case *Sort: - defer func() { m.Sort(val.Fields, val.Method) }() - case Sort: - defer func() { m.Sort(val.Fields, val.Method) }() - default: if reflect.Func == reflect.TypeOf(val).Kind() { cbs = val @@ -183,7 +178,7 @@ func (m *Message) cmd(arg ...interface{}) *Message { ok := false run := func(msg *Message, ctx *Context, cmd *Command, key string, arg ...string) { if ok = true; cbs != nil { - msg.Option(list[0]+".cb", cbs) + msg.Option(kit.Keycb(list[0]), cbs) } for k, v := range opts { msg.Option(k, v) @@ -242,7 +237,7 @@ func (c *Context) _cmd(m *Message, cmd *Command, key string, k string, h *Action return m } - if k == "run" && m.Warn(!m.Right(arg), ErrNotRight, arg) { + if k == RUN && m.Warn(!m.Right(arg), ErrNotRight, arg) { return m } @@ -250,8 +245,8 @@ func (c *Context) _cmd(m *Message, cmd *Command, key string, k string, h *Action if len(h.List) > 0 && k != "search" { order := false for i, v := range h.List { - name := kit.Format(kit.Value(v, "name")) - value := kit.Format(kit.Value(v, "value")) + name := kit.Format(kit.Value(v, kit.MDB_NAME)) + value := kit.Format(kit.Value(v, kit.MDB_VALUE)) if i == 0 && len(arg) > 0 && arg[0] != name { order = true @@ -285,13 +280,13 @@ func (c *Context) split(name string) (list []interface{}) { ) item, button := kit.Dict(), false - ls := kit.Split(name, " ", ":=@") + ls := kit.Split(name, SP, ":=@") for i := 1; i < len(ls); i++ { switch ls[i] { case "text": list = append(list, kit.List(kit.MDB_TYPE, TEXTAREA, kit.MDB_NAME, "text")...) case "auto": - list = append(list, kit.List(kit.MDB_TYPE, BUTTON, kit.MDB_NAME, "list", kit.MDB_VALUE, "auto")...) + list = append(list, kit.List(kit.MDB_TYPE, BUTTON, kit.MDB_NAME, "list", kit.MDB_VALUE, AUTO)...) list = append(list, kit.List(kit.MDB_TYPE, BUTTON, kit.MDB_NAME, "back")...) button = true case "page": @@ -307,7 +302,7 @@ func (c *Context) split(name string) (list []interface{}) { i++ case "=": if value := kit.Select("", ls, i+1); strings.Contains(value, ",") { - vs := strings.Split(value, ",") + vs := kit.Split(value) if strings.Count(value, vs[0]) > 1 { item["values"] = vs[1:] } else { @@ -320,7 +315,7 @@ func (c *Context) split(name string) (list []interface{}) { } i++ case "@": - item["action"] = kit.Select("", ls, i+1) + item[kit.MDB_ACTION] = kit.Select("", ls, i+1) i++ default: diff --git a/misc/chrome/cache.go b/misc/chrome/cache.go index 38ea0e70..1a027dc9 100644 --- a/misc/chrome/cache.go +++ b/misc/chrome/cache.go @@ -30,7 +30,7 @@ func init() { h := m.Cmdx(mdb.INSERT, m.Prefix(CACHE), "", mdb.HASH, m.OptionSimple("type,name,text,link")) value := kit.GetMeta(m.Confm(CACHE, kit.Keys(kit.MDB_HASH, h))) m.Option(kit.Keycb(web.DOWNLOAD), func(size, total int) { - value[kit.MDB_TOTAL], value[kit.MDB_SIZE], value[kit.SSH_STEP] = total, size, kit.Format(size*100/total) + value[kit.MDB_TOTAL], value[kit.MDB_SIZE], value[kit.MDB_STEP] = total, size, kit.Format(size*100/total) }) msg := m.Cmd("web.spide", web.SPIDE_DEV, web.SPIDE_CACHE, web.SPIDE_GET, m.Option(kit.MDB_LINK)) @@ -42,7 +42,7 @@ func init() { m.Cmdy(mdb.DELETE, m.Prefix(CACHE), "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH)) }}, mdb.PRUNES: {Name: "prunes", Help: "清理", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(mdb.PRUNES, m.Prefix(CACHE), "", mdb.HASH, kit.SSH_STEP, "100") + m.Cmdy(mdb.PRUNES, m.Prefix(CACHE), "", mdb.HASH, kit.MDB_STEP, "100") }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Fields(len(arg), m.Conf(CACHE, kit.META_FIELD)) diff --git a/misc/git/repos.go b/misc/git/repos.go index 266dfb0e..e90a6a90 100644 --- a/misc/git/repos.go +++ b/misc/git/repos.go @@ -16,7 +16,7 @@ func _repos_path(name string) string { if strings.Contains(name, ":\\") { return name } - return kit.Select(path.Join(kit.SSH_USR, name), "./", name == path.Base(kit.Pwd())) + return kit.Select(path.Join(ice.USR, name), "./", name == path.Base(kit.Pwd())) } func _repos_insert(m *ice.Message, name string, dir string) { if s, e := os.Stat(m.Option(cli.CMD_DIR, path.Join(dir, ".git"))); e == nil && s.IsDir() { @@ -52,14 +52,14 @@ func init() { ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Conf(REPOS, kit.MDB_HASH, "") _repos_insert(m, path.Base(kit.Pwd()), kit.Pwd()) - m.Cmd(nfs.DIR, kit.SSH_USR, "name,path").Table(func(index int, value map[string]string, head []string) { + m.Cmd(nfs.DIR, ice.USR, "name,path").Table(func(index int, value map[string]string, head []string) { _repos_insert(m, value[kit.MDB_NAME], value[kit.MDB_PATH]) }) }}, REPOS: {Name: "repos name path auto create", Help: "代码库", Action: map[string]*ice.Action{ mdb.CREATE: {Name: "create repos branch name path", Help: "添加", Hand: func(m *ice.Message, arg ...string) { m.Option(kit.MDB_NAME, kit.Select(strings.TrimSuffix(path.Base(m.Option(kit.SSH_REPOS)), ".git"), m.Option(kit.MDB_NAME))) - m.Option(kit.MDB_PATH, kit.Select(path.Join(kit.SSH_USR, m.Option(kit.MDB_NAME)), m.Option(kit.MDB_PATH))) + m.Option(kit.MDB_PATH, kit.Select(path.Join(ice.USR, m.Option(kit.MDB_NAME)), m.Option(kit.MDB_PATH))) m.Option(kit.SSH_REPOS, kit.Select(m.Conf(REPOS, kit.Keym(kit.SSH_REPOS))+"/"+m.Option(kit.MDB_NAME), m.Option(kit.SSH_REPOS))) if s, e := os.Stat(path.Join(m.Option(kit.MDB_PATH), ".git")); e == nil && s.IsDir() { diff --git a/misc/git/spide.go b/misc/git/spide.go index f79033a1..df1df04d 100644 --- a/misc/git/spide.go +++ b/misc/git/spide.go @@ -30,6 +30,8 @@ func _spide_go(m *ice.Message, file string) { case "w", "e": return ls[0] = "-" + ls[0] + ":" + strings.TrimPrefix(ls[len(ls)-1], "type:") + case "-": + return case "m": if strings.HasPrefix(ls[5], "ctype") { ls[0] = strings.TrimPrefix(ls[5], "ctype:") + ":" + ls[0] @@ -74,9 +76,9 @@ func init() { } if arg[0] == path.Base(kit.Pwd()) { - m.Option(nfs.DIR_ROOT, path.Join(kit.SSH_SRC)) + m.Option(nfs.DIR_ROOT, path.Join(ice.SRC)) } else { - m.Option(nfs.DIR_ROOT, path.Join(kit.SSH_USR, arg[0])) + m.Option(nfs.DIR_ROOT, path.Join(ice.USR, arg[0])) } if len(arg) == 1 { // 目录列表 diff --git a/base/ssh/channel.go b/misc/ssh/channel.go similarity index 93% rename from base/ssh/channel.go rename to misc/ssh/channel.go index c7a0076d..103ccab6 100644 --- a/base/ssh/channel.go +++ b/misc/ssh/channel.go @@ -6,13 +6,13 @@ import ( "os/exec" "strings" + "golang.org/x/crypto/ssh" ice "shylinux.com/x/icebergs" "shylinux.com/x/icebergs/base/aaa" "shylinux.com/x/icebergs/base/ctx" "shylinux.com/x/icebergs/base/mdb" "shylinux.com/x/icebergs/base/tcp" kit "shylinux.com/x/toolkits" - "golang.org/x/crypto/ssh" ) func _ssh_exec(m *ice.Message, cmd string, arg []string, env []string, input io.Reader, output io.Writer, done func()) { @@ -71,6 +71,11 @@ func init() { CHANNEL: {Name: "channel", Help: "通道", Value: kit.Data()}, }, Commands: map[string]*ice.Command{ + ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { + m.Richs(CHANNEL, "", kit.MDB_FOREACH, func(key string, value map[string]interface{}) { + kit.Value(value, kit.Keym(kit.MDB_STATUS), tcp.CLOSE) + }) + }}, CHANNEL: {Name: "channel hash id auto command 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)) diff --git a/base/ssh/connect.go b/misc/ssh/connect.go similarity index 100% rename from base/ssh/connect.go rename to misc/ssh/connect.go diff --git a/base/ssh/service.go b/misc/ssh/service.go similarity index 100% rename from base/ssh/service.go rename to misc/ssh/service.go diff --git a/base/ssh/service_darwin.go b/misc/ssh/service_darwin.go similarity index 100% rename from base/ssh/service_darwin.go rename to misc/ssh/service_darwin.go diff --git a/base/ssh/service_linux.go b/misc/ssh/service_linux.go similarity index 100% rename from base/ssh/service_linux.go rename to misc/ssh/service_linux.go diff --git a/base/ssh/service_windows.go b/misc/ssh/service_windows.go similarity index 100% rename from base/ssh/service_windows.go rename to misc/ssh/service_windows.go diff --git a/base/ssh/session.go b/misc/ssh/session.go similarity index 92% rename from base/ssh/session.go rename to misc/ssh/session.go index 0da3090a..ab130ea7 100644 --- a/base/ssh/session.go +++ b/misc/ssh/session.go @@ -3,12 +3,12 @@ package ssh import ( "io" + "golang.org/x/crypto/ssh" ice "shylinux.com/x/icebergs" "shylinux.com/x/icebergs/base/ctx" "shylinux.com/x/icebergs/base/mdb" "shylinux.com/x/icebergs/base/tcp" kit "shylinux.com/x/toolkits" - "golang.org/x/crypto/ssh" ) func _ssh_session(m *ice.Message, h string, client *ssh.Client) (*ssh.Session, error) { @@ -62,6 +62,11 @@ func init() { SESSION: {Name: SESSION, Help: "会话", Value: kit.Data()}, }, Commands: map[string]*ice.Command{ + ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { + m.Richs(SESSION, "", kit.MDB_FOREACH, func(key string, value map[string]interface{}) { + kit.Value(value, kit.Keym(kit.MDB_STATUS), tcp.CLOSE) + }) + }}, SESSION: {Name: "session hash id auto command prunes", Help: "会话", Action: map[string]*ice.Action{ 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)) diff --git a/option.go b/option.go index 1b80b879..394b0413 100644 --- a/option.go +++ b/option.go @@ -10,11 +10,6 @@ import ( kit "shylinux.com/x/toolkits" ) -type Sort struct { - Fields string - Method string -} - type Option struct { Name string Value interface{} @@ -61,7 +56,7 @@ func (m *Message) OptionSimple(key ...string) (res []string) { } func (m *Message) OptionTemplate() string { res := []string{`class="story"`} - for _, key := range kit.Split("style") { + for _, key := range kit.Split(kit.MDB_STYLE) { if m.Option(key) != "" { res = append(res, kit.Format(`s="%s"`, key, m.Option(key))) } @@ -71,12 +66,12 @@ func (m *Message) OptionTemplate() string { res = append(res, kit.Format(`data-%s="%s"`, key, m.Option(key))) } } - kit.Fetch(m.Optionv("extra"), func(key string, value string) { + kit.Fetch(m.Optionv(kit.MDB_EXTRA), func(key string, value string) { if value != "" { res = append(res, kit.Format(`data-%s="%s"`, key, value)) } }) - return strings.Join(res, " ") + return kit.Join(res, SP) } func (m *Message) Fields(length int, fields ...string) string { @@ -89,7 +84,7 @@ func (m *Message) Upload(dir string) { m.Cmdy("web.cache", "watch", up[0], p) } else { // 下拉文件 - m.Cmdy("web.spide", "dev", "save", p, "GET", + m.Cmdy("web.spide", DEV, SAVE, p, "GET", kit.MergeURL2(m.Option(MSG_USERWEB), path.Join("/share/cache", up[0]))) } } @@ -164,25 +159,25 @@ func (m *Message) ProcessRefresh300ms() { m.ProcessRefresh("300ms") } func (m *Message) ProcessRefresh3s() { m.ProcessRefresh("3s") } func (m *Message) ProcessDisplay(arg ...interface{}) { m.Process(PROCESS_DISPLAY) - m.Option("_display", arg...) + m.Option(MSG_DISPLAY, arg...) } func (m *Message) ProcessCommand(cmd string, val []string, arg ...string) { - if len(arg) > 0 && arg[0] == "run" { + if len(arg) > 0 && arg[0] == RUN { m.Cmdy(cmd, arg[1:]) return } m.Cmdy("command", cmd) - m.ProcessField(cmd, "run") - m.Push("arg", kit.Format(val)) + m.ProcessField(cmd, RUN) + m.Push(ARG, kit.Format(val)) } func (m *Message) ProcessCommandOpt(arg ...string) { - m.Push("opt", kit.Format(m.OptionSimple(arg...))) + m.Push(OPT, kit.Format(m.OptionSimple(arg...))) } func (m *Message) ProcessField(arg ...interface{}) { m.Process(PROCESS_FIELD) - m.Option("_prefix", arg...) + m.Option(FIELD_PREFIX, arg...) } func (m *Message) ProcessInner() { m.Process(PROCESS_INNER) } func (m *Message) ProcessAgain() { m.Process(PROCESS_AGAIN) } diff --git a/render.go b/render.go index b70746b7..f5dfff46 100644 --- a/render.go +++ b/render.go @@ -32,7 +32,7 @@ func Render(m *Message, cmd string, args ...interface{}) string { list = append(list, kit.Format(``, k, kit.Select(k, kit.Value(m._cmd.Meta, kit.Keys("_trans", k)), m.Option(MSG_LANGUAGE) != "en"))) } - return kit.Join(list, " ") + return kit.Join(list, SP) case RENDER_IMAGES: // src [size] return kit.Format(``, arg[0], kit.Select("120", arg, 1)) @@ -94,9 +94,9 @@ func (m *Message) PushAction(list ...interface{}) { }) } func (m *Message) PushPodCmd(cmd string, arg ...string) { - if strings.Contains(m.OptionFields(), "pod") { + if strings.Contains(m.OptionFields(), POD) { m.Table(func(index int, value map[string]string, head []string) { - m.Push("pod", m.Option(MSG_USERPOD)) + m.Push(POD, m.Option(MSG_USERPOD)) }) } @@ -107,7 +107,7 @@ func (m *Message) PushPodCmd(cmd string, arg ...string) { break } m.Cmd("web.space", value[kit.MDB_NAME], m.Prefix(cmd), arg).Table(func(index int, val map[string]string, head []string) { - val["pod"] = kit.Keys(value[kit.MDB_NAME], val["pod"]) + val[POD] = kit.Keys(value[kit.MDB_NAME], val[POD]) m.Push("", val, head) }) } @@ -117,13 +117,13 @@ func (m *Message) PushSearch(args ...interface{}) { data := kit.Dict(args...) for _, k := range kit.Split(m.OptionFields()) { switch k { - case "pod": + case POD: m.Push(k, "") // m.Push(k, kit.Select(m.Option(MSG_USERPOD), data[kit.SSH_POD])) - case "ctx": + case CTX: m.Push(k, m.Prefix()) - case "cmd": - m.Push(k, kit.Format(data["cmd"])) + case CMD: + m.Push(k, kit.Format(data[CMD])) case kit.MDB_TIME: m.Push(k, kit.Select(m.Time(), data[k])) default: @@ -139,7 +139,7 @@ func (m *Message) PushSearchWeb(cmd string, name string) { if value[kit.MDB_NAME] == "" { text = kit.MergeURL(value[kit.MDB_TEXT] + url.QueryEscape(name)) } - m.PushSearch("cmd", cmd, kit.MDB_TYPE, kit.Select("", value[kit.MDB_TYPE]), kit.MDB_NAME, name, kit.MDB_TEXT, text) + m.PushSearch(CMD, cmd, kit.MDB_TYPE, kit.Select("", value[kit.MDB_TYPE]), kit.MDB_NAME, name, kit.MDB_TEXT, text) }) } @@ -193,5 +193,5 @@ func (m *Message) RenderDownload(args ...interface{}) *Message { return m.Render(RENDER_DOWNLOAD, args...) } func (m *Message) RenderIndex(serve, repos string, file ...string) *Message { - return m.RenderDownload(path.Join(m.Conf(serve, kit.Keym(repos, kit.SSH_PATH)), kit.Select(m.Conf(serve, kit.Keym(repos, kit.SSH_INDEX)), path.Join(file...)))) + return m.RenderDownload(path.Join(m.Conf(serve, kit.Keym(repos, kit.MDB_PATH)), kit.Select(m.Conf(serve, kit.Keym(repos, kit.MDB_INDEX)), path.Join(file...)))) } diff --git a/type.go b/type.go index f5325841..32e9b873 100644 --- a/type.go +++ b/type.go @@ -140,7 +140,7 @@ func (c *Context) Merge(s *Context) *Context { } kit.Value(v.Meta, kit.Keys("_trans", k), help[0]) if len(help) > 1 { - kit.Value(v.Meta, kit.Keys("title", k), help[1]) + kit.Value(v.Meta, kit.Keys(kit.MDB_TITLE, k), help[1]) } if a.Hand == nil { continue