diff --git a/base/aaa/sess.go b/base/aaa/sess.go index faa0240e..2b33531a 100644 --- a/base/aaa/sess.go +++ b/base/aaa/sess.go @@ -66,7 +66,6 @@ func init() { }}, CHECK: {Name: "check sessid", Help: "检查", Hand: func(m *ice.Message, arg ...string) { _sess_check(m, m.Option(SESSID)) - m.Debug("what %v", m.FormatsMeta()) }}, }, mdb.HashAction(mdb.SHORT, mdb.UNIQ, mdb.FIELD, "time,hash,userrole,username,usernick,ip,ua", mdb.EXPIRE, "720h"))}, }) diff --git a/base/aaa/user.go b/base/aaa/user.go index f1ac5556..c223e097 100644 --- a/base/aaa/user.go +++ b/base/aaa/user.go @@ -25,12 +25,13 @@ func _user_login(m *ice.Message, name, word string) { if m.Warn(name == "", ice.ErrNotValid, name) { return } - if !mdb.HashSelectDetail(m, name, nil) { - _user_create(m, VOID, name, word) + if !mdb.HashSelectDetail(m.Spawn(), name, nil) { + _user_create(m.Spawn(), name, word) } + m.Debug("what %v", m.FormatMeta()) _source := logs.FileLineMeta(logs.FileLine(-1, 3)) - mdb.HashSelectDetail(m, name, func(value ice.Map) { + mdb.HashSelectDetail(m.Spawn(), name, func(value ice.Map) { if m.Warn(word != "" && word != kit.Format(kit.Value(value, kit.Keys(mdb.EXTRA, PASSWORD))), ice.ErrNotRight) { return } @@ -41,6 +42,7 @@ func _user_login(m *ice.Message, name, word string) { _source, ) }) + m.Debug("what %v", m.FormatMeta()) } const ( diff --git a/base/log/log.go b/base/log/log.go index 72556123..ce77be52 100644 --- a/base/log/log.go +++ b/base/log/log.go @@ -38,7 +38,8 @@ func (f *Frame) Start(m *ice.Message, arg ...string) bool { return true } - file := kit.Select(BENCH, m.Conf(SHOW, kit.Keys(l.l, FILE))) + // file := kit.Select(BENCH, m.Conf(SHOW, kit.Keys(l.l, FILE))) + file := BENCH view := m.Confm(VIEW, m.Conf(SHOW, kit.Keys(l.l, VIEW))) bio := m.Confv(FILE, kit.Keys(file, FILE)).(*bufio.Writer) if bio == nil { diff --git a/base/web/serve.go b/base/web/serve.go index 586e9e82..3f2ddac4 100644 --- a/base/web/serve.go +++ b/base/web/serve.go @@ -279,12 +279,14 @@ func _serve_handle(key string, cmd *ice.Command, msg *ice.Message, w http.Respon } } func _serve_login(msg *ice.Message, key string, cmds []string, w http.ResponseWriter, r *http.Request) ([]string, bool) { + msg.Debug("what %v", msg.Append("extra.password")) aaa.SessCheck(msg, msg.Option(ice.MSG_SESSID)) // 会话认证 - msg.Debug("what %v", msg.FormatsMeta()) + msg.Debug("what %v", msg.Append("extra.password")) if msg.Config("staffname") != "" { aaa.UserLogin(msg, r.Header.Get("Staffname"), "") } + msg.Debug("what %v", msg.Append("extra.password")) if msg.Option(ice.MSG_USERNAME) == "" && msg.Config(tcp.LOCALHOST) == ice.TRUE && tcp.IsLocalHost(msg, msg.Option(ice.MSG_USERIP)) { aaa.UserRoot(msg) // 本机认证 diff --git a/core/chat/action.go b/core/chat/action.go index e0370b39..f6c80b91 100644 --- a/core/chat/action.go +++ b/core/chat/action.go @@ -99,6 +99,9 @@ const ACTION = "action" func init() { Index.MergeCommands(ice.Commands{ web.P(ACTION): {Name: "/action river storm action arg...", Help: "工作台", Actions: ice.MergeActions(ice.Actions{ + ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { + m.Cmd(aaa.ROLE, aaa.WHITE, aaa.VOID, m.CommandKey()) + }}, mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) { m.Cmdy(mdb.MODIFY, RIVER, _action_key(m), mdb.LIST, m.OptionSimple(mdb.ID), arg) }}, diff --git a/core/chat/cmd.go b/core/chat/cmd.go index dafaef85..83d55643 100644 --- a/core/chat/cmd.go +++ b/core/chat/cmd.go @@ -55,7 +55,7 @@ func init() { Index.MergeCommands(ice.Commands{ CMD: {Name: "cmd path auto upload up home", Help: "命令", Actions: ice.MergeActions(ice.Actions{ ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { - m.Cmd(aaa.ROLE, aaa.WHITE, CMD) + m.Cmd(aaa.ROLE, aaa.WHITE, aaa.VOID, CMD) m.Cmdy(CMD, mdb.CREATE, mdb.TYPE, nfs.SHY, mdb.NAME, "web.wiki.word") m.Cmdy(CMD, mdb.CREATE, mdb.TYPE, nfs.SVG, mdb.NAME, "web.wiki.draw") m.Cmdy(CMD, mdb.CREATE, mdb.TYPE, nfs.CSV, mdb.NAME, "web.wiki.data") diff --git a/core/chat/footer.go b/core/chat/footer.go index c2b57ee1..59be1447 100644 --- a/core/chat/footer.go +++ b/core/chat/footer.go @@ -16,6 +16,9 @@ const FOOTER = "footer" func init() { Index.MergeCommands(ice.Commands{ FOOTER: {Name: "footer", Help: "状态栏", Actions: ice.MergeActions(ice.Actions{ + ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { + m.Cmd(aaa.ROLE, aaa.WHITE, aaa.VOID, m.CommandKey()) + }}, ice.RUN: {Name: "run", Help: "执行", Hand: func(m *ice.Message, arg ...string) { if aaa.Right(m, arg) { if m.Cmdy(arg); m.IsErrNotFound() { diff --git a/core/chat/header.go b/core/chat/header.go index f6a8e11a..cde7f1ea 100644 --- a/core/chat/header.go +++ b/core/chat/header.go @@ -60,7 +60,7 @@ const HEADER = "header" func init() { Index.MergeCommands(ice.Commands{ web.WEB_LOGIN: {Hand: func(m *ice.Message, arg ...string) { - switch arg[0] { + switch kit.Select("", arg, 0) { case web.P(HEADER): switch kit.Select("", arg, 1) { case "", aaa.LOGIN: @@ -74,6 +74,9 @@ func init() { m.Warn(m.Option(ice.MSG_USERNAME) == "", ice.ErrNotLogin, arg) }}, HEADER: {Name: "header", Help: "标题栏", Actions: ice.MergeActions(ice.Actions{ + ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { + m.Cmd(aaa.ROLE, aaa.WHITE, aaa.VOID, m.CommandKey()) + }}, aaa.LOGIN: {Name: "login", Help: "密码登录", Hand: func(m *ice.Message, arg ...string) { if aaa.UserLogin(m, arg[0], arg[1]) { web.RenderCookie(m, aaa.SessCreate(m, arg[0])) @@ -116,7 +119,9 @@ func init() { m.Option(k, msg.Append(k)) } for _, k := range []string{aaa.AVATAR, aaa.BACKGROUND} { - m.Option(k, kit.Select(web.SHARE_LOCAL+k, kit.Select("void", msg.Append(k)), aaa.Right(m, msg.Append(k)))) + if msg.Append(k) != "" && aaa.Right(m.Spawn(), msg.Append(k)) { + m.Option(k, web.SHARE_LOCAL+k) + } } if m.Option(aaa.AVATAR) == "" && m.R.Header.Get("Staffname") != "" { m.Option(aaa.AVATAR, kit.Format("https://dayu.oa.com/avatars/%s/profile.jpg", m.R.Header.Get("Staffname"))) diff --git a/core/chat/pod.go b/core/chat/pod.go index d7ffb392..c3a05d22 100644 --- a/core/chat/pod.go +++ b/core/chat/pod.go @@ -18,7 +18,7 @@ const POD = "pod" func init() { Index.MergeCommands(ice.Commands{ POD: {Name: "pod", Help: "节点", Actions: ice.MergeActions(ice.Actions{ - ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { m.Cmd(aaa.ROLE, aaa.WHITE, POD) }}, + ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { m.Cmd(aaa.ROLE, aaa.WHITE, aaa.VOID, POD) }}, }, ctx.CmdAction(), web.ApiAction("/pod/")), Hand: func(m *ice.Message, arg ...string) { if web.OptionAgentIs(m, "curl", "Wget") { aaa.UserRoot(m) diff --git a/core/chat/river.go b/core/chat/river.go index b34d3063..b9f3bfb6 100644 --- a/core/chat/river.go +++ b/core/chat/river.go @@ -43,9 +43,9 @@ func _river_list(m *ice.Message) { } } - mdb.Richs(m, RIVER, nil, mdb.FOREACH, func(key string, value ice.Map) { - mdb.Richs(m, RIVER, kit.Keys(mdb.HASH, key, OCEAN), m.Option(ice.MSG_USERNAME), func(k string, val ice.Map) { - m.Push(key, kit.GetMeta(value), []string{mdb.HASH, mdb.NAME}, kit.GetMeta(val)) + m.Cmd(mdb.SELECT, m.PrefixKey(), "", mdb.HASH, ice.OptionFields(mdb.HASH, mdb.NAME)).Tables(func(value ice.Maps) { + m.Cmd(mdb.SELECT, m.PrefixKey(), kit.Keys(mdb.HASH, value[mdb.HASH], OCEAN), mdb.HASH, m.Option(ice.MSG_USERNAME)).Tables(func(value ice.Maps) { + m.Push("", value, []string{mdb.HASH, mdb.NAME}, value) }) }) } @@ -58,6 +58,9 @@ const RIVER = "river" func init() { Index.MergeCommands(ice.Commands{ RIVER: {Name: "river hash auto create", Help: "群组", Actions: ice.MergeActions(ice.Actions{ + ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { + m.Cmd(aaa.ROLE, aaa.WHITE, aaa.VOID, m.CommandKey()) + }}, mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) { switch m.Option(ctx.ACTION) { case cli.START, "创建空间": diff --git a/core/chat/sso.go b/core/chat/sso.go index 5142673d..e082344c 100644 --- a/core/chat/sso.go +++ b/core/chat/sso.go @@ -14,7 +14,7 @@ const SSO = "sso" func init() { Index.MergeCommands(ice.Commands{ "/sso": {Name: "/sso", Help: "登录", Actions: ice.Actions{ - ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { m.Cmd(aaa.ROLE, aaa.WHITE, SSO) }}, + ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { m.Cmd(aaa.ROLE, aaa.WHITE, aaa.VOID, SSO) }}, }, Hand: func(m *ice.Message, arg ...string) { if m.Option(ice.MSG_USERNAME) == "" { web.RenderIndex(m, ice.VOLCANOS) diff --git a/core/chat/storm.go b/core/chat/storm.go index 8a0239b6..f383242c 100644 --- a/core/chat/storm.go +++ b/core/chat/storm.go @@ -2,6 +2,7 @@ package chat import ( 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/web" @@ -53,17 +54,23 @@ func init() { m.OptionFields("time,id,space,index,args,style,display") msg := m.Cmd(mdb.SELECT, RIVER, _storm_key(m, arg[0]), mdb.LIST, mdb.ID, kit.Select("", arg, 1)) if msg.Length() == 0 && len(arg) > 1 { // 虚拟群组 - msg.Push(ctx.INDEX, arg[1]) + if aaa.Right(m, arg[1]) { + msg.Push(ctx.INDEX, arg[1]) + } } if len(arg) > 2 && arg[2] == ice.RUN { // 执行命令 - m.Cmdy(web.Space(m, kit.Select(m.Option(ice.POD), msg.Append(web.SPACE))), msg.Append(ctx.INDEX), arg[3:]) + if !m.Warn(aaa.Right(m, msg.Append(ctx.INDEX))) { + m.Cmdy(web.Space(m, kit.Select(m.Option(ice.POD), msg.Append(web.SPACE))), msg.Append(ctx.INDEX), arg[3:]) + } return } if m.Copy(msg); len(arg) > 1 { // 命令插件 m.Tables(func(value ice.Maps) { m.Cmdy(web.Space(m, value[web.SPACE]), ctx.COMMAND, value[ctx.INDEX]) }) - m.ProcessField(arg[0], arg[1], ice.RUN) + if m.Length() > 0 { + m.ProcessField(arg[0], arg[1], ice.RUN) + } } }}, }) diff --git a/core/chat/topic.go b/core/chat/topic.go index 98978f6f..ee41d93a 100644 --- a/core/chat/topic.go +++ b/core/chat/topic.go @@ -26,7 +26,7 @@ func init() { Index.MergeCommands(ice.Commands{ TOPIC: {Name: "topic zone id auto create insert", Help: "主题", Actions: ice.MergeActions(ice.Actions{ ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { - m.Cmd(aaa.ROLE, aaa.WHITE, TOPIC) + m.Cmd(aaa.ROLE, aaa.WHITE, aaa.VOID, TOPIC) }}, mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) { switch arg[0] { diff --git a/core/wiki/word.go b/core/wiki/word.go index 57275ef5..e055dce7 100644 --- a/core/wiki/word.go +++ b/core/wiki/word.go @@ -43,7 +43,8 @@ func init() { }, Commands: ice.Commands{ WORD: {Name: "word path=src/main.shy@key list play", Help: "语言文字", Actions: ice.MergeActions(ice.Actions{ ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { - m.Cmd(aaa.ROLE, aaa.WHITE, aaa.VOID, m.PrefixKey("src/main.shy")) + m.Cmd(aaa.ROLE, aaa.WHITE, aaa.VOID, m.PrefixKey()) + m.Cmd(aaa.ROLE, aaa.WHITE, aaa.VOID, "src/main.shy") }}, mdb.SEARCH: {Name: "search", Help: "搜索", Hand: func(m *ice.Message, arg ...string) { if arg[0] == mdb.FOREACH && arg[1] == "" { diff --git a/meta.go b/meta.go index a2ac1562..64d7aef7 100644 --- a/meta.go +++ b/meta.go @@ -518,7 +518,13 @@ func (m *Message) Appendv(key string, arg ...Any) []string { if len(arg) > 0 { m.meta[key] = kit.Simple(arg...) } - return m.meta[key] + if v, ok := m.meta[key]; ok { + return v + } + if v, ok := m.meta[kit.Keys(EXTRA, key)]; ok { + return v + } + return nil } func (m *Message) Resultv(arg ...Any) []string { if len(arg) > 0 { diff --git a/misc/ssh/channel.go b/misc/ssh/channel.go index 8aad9ae2..516a7ace 100644 --- a/misc/ssh/channel.go +++ b/misc/ssh/channel.go @@ -17,7 +17,7 @@ import ( ) func _ssh_exec(m *ice.Message, cmd string, arg []string, env []string, input io.Reader, output io.Writer, done func()) { - m.Log_IMPORT(CMD, cmd, ARG, arg, ENV, env) + m.Logs(mdb.IMPORT, CMD, cmd, ARG, arg, ENV, env) c := exec.Command(cmd, arg...) // c.Env = env @@ -52,7 +52,7 @@ func _ssh_watch(m *ice.Message, meta ice.Maps, h string, input io.Reader, output switch buf[i] { case '\r', '\n': cmd := strings.TrimSpace(string(buf[:i])) - m.Log_IMPORT(tcp.HOSTNAME, meta[tcp.HOSTNAME], aaa.USERNAME, meta[aaa.USERNAME], CMD, cmd) + m.Logs(mdb.IMPORT, tcp.HOSTNAME, meta[tcp.HOSTNAME], aaa.USERNAME, meta[aaa.USERNAME], CMD, cmd) m.Cmdy(mdb.INSERT, CHANNEL, kit.Keys(mdb.HASH, h), mdb.LIST, mdb.TYPE, CMD, mdb.TEXT, cmd) i = 0 default: @@ -70,7 +70,7 @@ func init() { psh.Index.MergeCommands(ice.Commands{ CHANNEL: {Name: "channel hash id auto", Help: "通道", Actions: ice.MergeActions(ice.Actions{ ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { - m.Richs(CHANNEL, "", mdb.FOREACH, func(key string, value ice.Map) { + mdb.Richs(m, CHANNEL, "", mdb.FOREACH, func(key string, value ice.Map) { kit.Value(value, kit.Keym(mdb.STATUS), tcp.CLOSE) }) }}, @@ -85,7 +85,7 @@ func init() { ctx.COMMAND: {Name: "command cmd=pwd", Help: "命令", Hand: func(m *ice.Message, arg ...string) { m.Cmdy(mdb.INSERT, CHANNEL, kit.Keys(mdb.HASH, m.Option(mdb.HASH)), mdb.LIST, mdb.TYPE, CMD, mdb.TEXT, m.Option(CMD)) - m.Richs(CHANNEL, "", m.Option(mdb.HASH), func(key string, value ice.Map) { + mdb.Richs(m, CHANNEL, "", m.Option(mdb.HASH), func(key string, value ice.Map) { if w, ok := kit.Value(value, kit.Keym(INPUT)).(io.Writer); ok { w.Write([]byte(m.Option(CMD) + ice.NL)) } diff --git a/misc/ssh/connect.go b/misc/ssh/connect.go index b5e564b4..8c198790 100644 --- a/misc/ssh/connect.go +++ b/misc/ssh/connect.go @@ -159,13 +159,13 @@ func init() { CONNECT: {Name: "connect name auto", Help: "连接", Actions: ice.MergeActions(ice.Actions{ tcp.OPEN: {Name: "open authfile username=shy password verfiy host=shylinux.com port=22 private=.ssh/id_rsa", Help: "终端", Hand: func(m *ice.Message, arg ...string) { aaa.UserRoot(m) - _ssh_open(m.OptionLoad(m.Option("authfile")), arg...) + _ssh_open(nfs.OptionLoad(m, m.Option("authfile")), arg...) m.Echo("exit %v@%v:%v\n", m.Option(aaa.USERNAME), m.Option(tcp.HOST), m.Option(tcp.PORT)) }}, tcp.DIAL: {Name: "dial name=shylinux username=shy host=shylinux.com port=22 private=.ssh/id_rsa", Help: "添加", Hand: func(m *ice.Message, arg ...string) { m.Go(func() { _ssh_conn(m, func(client *ssh.Client) { - m.Rich(CONNECT, "", kit.Dict( + mdb.Rich(m, CONNECT, "", kit.Dict( mdb.NAME, m.Option(mdb.NAME), aaa.USERNAME, m.Option(aaa.USERNAME), tcp.HOST, m.Option(tcp.HOST), tcp.PORT, m.Option(tcp.PORT), @@ -178,11 +178,11 @@ func init() { }}, SESSION: {Name: "session name", Help: "会话", Hand: func(m *ice.Message, arg ...string) { var client *ssh.Client - m.Richs(CONNECT, "", m.Option(mdb.NAME), func(key string, value ice.Map) { + mdb.Richs(m, CONNECT, "", m.Option(mdb.NAME), func(key string, value ice.Map) { client, _ = value[CONNECT].(*ssh.Client) }) - h := m.Rich(SESSION, "", kit.Data(mdb.NAME, m.Option(mdb.NAME), mdb.STATUS, tcp.OPEN, CONNECT, m.Option(mdb.NAME))) + h := mdb.Rich(m, SESSION, "", kit.Data(mdb.NAME, m.Option(mdb.NAME), mdb.STATUS, tcp.OPEN, CONNECT, m.Option(mdb.NAME))) if session, e := _ssh_session(m, h, client); m.Assert(e) { session.Shell() session.Wait() @@ -190,7 +190,7 @@ func init() { m.Echo(h) }}, "command": {Name: "command cmd=pwd", Help: "命令", Hand: func(m *ice.Message, arg ...string) { - m.Richs(CONNECT, "", m.Option(mdb.NAME), func(key string, value ice.Map) { + mdb.Richs(m, CONNECT, "", m.Option(mdb.NAME), func(key string, value ice.Map) { if client, ok := value[CONNECT].(*ssh.Client); ok { if session, e := client.NewSession(); m.Assert(e) { defer session.Close() @@ -201,7 +201,7 @@ func init() { } }) }}, - }, mdb.HashActionStatus(mdb.SHORT, "name", mdb.FIELD, "time,name,status,username,host,port")), Hand: func(m *ice.Message, arg ...string) { + }, mdb.HashStatusAction(mdb.SHORT, "name", mdb.FIELD, "time,name,status,username,host,port")), Hand: func(m *ice.Message, arg ...string) { mdb.HashSelect(m, arg...).Tables(func(value ice.Maps) { m.PushButton(kit.Select("", "command,session", value[mdb.STATUS] == tcp.OPEN), mdb.REMOVE) }) diff --git a/misc/ssh/service.go b/misc/ssh/service.go index 1e5c41cc..470ecf0a 100644 --- a/misc/ssh/service.go +++ b/misc/ssh/service.go @@ -28,7 +28,7 @@ func _ssh_config(m *ice.Message, h string) *ssh.ServerConfig { PublicKeyCallback: func(conn ssh.ConnMetadata, key ssh.PublicKey) (*ssh.Permissions, error) { meta, err := _ssh_meta(conn), errors.New(ice.ErrNotRight) if tcp.IsLocalHost(m, strings.Split(conn.RemoteAddr().String(), ":")[0]) { - m.Log_AUTH(tcp.HOSTPORT, conn.RemoteAddr(), aaa.USERNAME, conn.User()) + m.Logs(ice.LOG_AUTH, tcp.HOSTPORT, conn.RemoteAddr(), aaa.USERNAME, conn.User()) err = nil // 本机用户 } else { m.Cmd(mdb.SELECT, SERVICE, kit.Keys(mdb.HASH, h), mdb.LIST).Tables(func(value ice.Maps) { @@ -39,7 +39,7 @@ func _ssh_config(m *ice.Message, h string) *ssh.ServerConfig { if pub, e := ssh.ParsePublicKey([]byte(s)); !m.Warn(e) { if bytes.Compare(pub.Marshal(), key.Marshal()) == 0 { - m.Log_AUTH(tcp.HOSTPORT, conn.RemoteAddr(), aaa.USERNAME, conn.User(), tcp.HOSTNAME, value[mdb.NAME]) + m.Logs(ice.LOG_AUTH, tcp.HOSTPORT, conn.RemoteAddr(), aaa.USERNAME, conn.User(), tcp.HOSTNAME, value[mdb.NAME]) meta[tcp.HOSTNAME] = kit.Select("", kit.Split(value[mdb.NAME], "@"), 1) err = nil // 认证成功 } @@ -52,14 +52,14 @@ func _ssh_config(m *ice.Message, h string) *ssh.ServerConfig { PasswordCallback: func(conn ssh.ConnMetadata, password []byte) (*ssh.Permissions, error) { meta, err := _ssh_meta(conn), errors.New(ice.ErrNotRight) if aaa.UserLogin(m, conn.User(), string(password)) { - m.Log_AUTH(tcp.HOSTPORT, conn.RemoteAddr(), aaa.USERNAME, conn.User(), aaa.PASSWORD, strings.Repeat("*", len(string(password)))) + m.Logs(ice.LOG_AUTH, tcp.HOSTPORT, conn.RemoteAddr(), aaa.USERNAME, conn.User(), aaa.PASSWORD, strings.Repeat("*", len(string(password)))) err = nil // 密码登录 } return &ssh.Permissions{Extensions: meta}, err }, BannerCallback: func(conn ssh.ConnMetadata) string { - m.Log_IMPORT(tcp.HOSTPORT, conn.RemoteAddr(), aaa.USERNAME, conn.User()) + m.Logs(ice.LOG_AUTH, tcp.HOSTPORT, conn.RemoteAddr(), aaa.USERNAME, conn.User()) return m.Conf(SERVICE, kit.Keym(WELCOME)) }, } @@ -106,14 +106,14 @@ func init() { }, Commands: ice.Commands{ SERVICE: {Name: "service port id auto listen prunes", Help: "服务", Actions: ice.MergeActions(ice.Actions{ ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { - m.Richs(SERVICE, "", mdb.FOREACH, func(key string, value ice.Map) { + mdb.Richs(m, SERVICE, "", mdb.FOREACH, func(key string, value ice.Map) { if value = kit.GetMeta(value); kit.Value(value, mdb.STATUS) == tcp.OPEN { m.Cmd(SERVICE, tcp.LISTEN, tcp.PORT, value[tcp.PORT], value) } }) }}, tcp.LISTEN: {Name: "listen port=9030 private=.ssh/id_rsa authkey=.ssh/authorized_keys", Help: "添加", Hand: func(m *ice.Message, arg ...string) { - if m.Richs(SERVICE, "", m.Option(tcp.PORT), func(key string, value ice.Map) { + if mdb.Richs(m, SERVICE, "", m.Option(tcp.PORT), func(key string, value ice.Map) { kit.Value(value, kit.Keym(mdb.STATUS), tcp.OPEN) }) == nil { m.Cmd(mdb.INSERT, SERVICE, "", mdb.HASH, tcp.PORT, m.Option(tcp.PORT), @@ -159,7 +159,7 @@ func init() { m.EchoScript(string(buf)) } }}, - }, mdb.HashActionStatus()), Hand: func(m *ice.Message, arg ...string) { + }, mdb.HashStatusAction()), Hand: func(m *ice.Message, arg ...string) { if len(arg) == 0 { // 服务列表 mdb.HashSelect(m, arg...) m.PushAction(mdb.IMPORT, mdb.INSERT, mdb.EXPORT, aaa.INVITE) diff --git a/misc/ssh/service_linux.go b/misc/ssh/service_linux.go index 7732db26..69ce4c93 100644 --- a/misc/ssh/service_linux.go +++ b/misc/ssh/service_linux.go @@ -42,7 +42,7 @@ func _ssh_handle(m *ice.Message, meta ice.Maps, c net.Conn, channel ssh.Channel, } defer tty.Close() - h := m.Rich(CHANNEL, "", kit.Data(mdb.STATUS, tcp.OPEN, TTY, tty.Name(), INPUT, pty, OUTPUT, tty, meta)) + h := mdb.Rich(m, CHANNEL, "", kit.Data(mdb.STATUS, tcp.OPEN, TTY, tty.Name(), INPUT, pty, OUTPUT, tty, meta)) meta[CHANNEL] = h for request := range requests { diff --git a/misc/ssh/session.go b/misc/ssh/session.go index 38bac3fa..532a62bf 100644 --- a/misc/ssh/session.go +++ b/misc/ssh/session.go @@ -30,13 +30,13 @@ func _ssh_session(m *ice.Message, h string, client *ssh.Client) (*ssh.Session, e break } - m.Grow(SESSION, kit.Keys(mdb.HASH, h), kit.Dict( + mdb.Grow(m, SESSION, kit.Keys(mdb.HASH, h), kit.Dict( mdb.TYPE, RES, mdb.TEXT, string(buf[:n]), )) } }) - m.Richs(SESSION, "", h, func(key string, value ice.Map) { + mdb.Richs(m, SESSION, "", h, func(key string, value ice.Map) { kit.Value(value, kit.Keym(OUTPUT), out, kit.Keym(INPUT), in) }) @@ -64,9 +64,9 @@ func init() { m.Cmdy(SESSION, ctx.ACTION, ctx.COMMAND, CMD, m.Option(mdb.TEXT)) }}, ctx.COMMAND: {Name: "command cmd=pwd", Help: "命令", Hand: func(m *ice.Message, arg ...string) { - m.Richs(SESSION, "", m.Option(mdb.NAME), func(key string, value ice.Map) { + mdb.Richs(m, SESSION, "", m.Option(mdb.NAME), func(key string, value ice.Map) { if w, ok := kit.Value(value, kit.Keym(INPUT)).(io.Writer); ok { - m.Grow(SESSION, kit.Keys(mdb.HASH, key), kit.Dict(mdb.TYPE, CMD, mdb.TEXT, m.Option(CMD))) + mdb.Grow(m, SESSION, kit.Keys(mdb.HASH, key), kit.Dict(mdb.TYPE, CMD, mdb.TEXT, m.Option(CMD))) w.Write([]byte(m.Option(CMD) + ice.NL)) } }) @@ -81,7 +81,7 @@ func init() { } m.Action(ctx.COMMAND, mdb.PAGE) - m.OptionPage(kit.Slice(arg, 2)...) + mdb.OptionPage(m, kit.Slice(arg, 2)...) m.Fields(len(kit.Slice(arg, 1, 2)), "time,id,type,text") mdb.ZoneSelect(m, kit.Slice(arg, 0, 2)...).Tables(func(value ice.Maps) { m.PushButton(kit.Select("", mdb.REPEAT, value[mdb.TYPE] == CMD))