From e052bc16e2013989212b87ee7f914086082249fd Mon Sep 17 00:00:00 2001 From: shylinux Date: Sun, 19 Aug 2018 23:57:18 +0800 Subject: [PATCH] vps use aaa.login.save --- etc/init.shy | 6 ++++-- src/contexts/aaa/aaa.go | 25 +++++++++++++++++-------- src/contexts/ctx.go | 2 -- src/contexts/nfs/nfs.go | 9 +++++---- 4 files changed, 26 insertions(+), 16 deletions(-) diff --git a/etc/init.shy b/etc/init.shy index 1d90d4dc..7277f5b8 100644 --- a/etc/init.shy +++ b/etc/init.shy @@ -1,9 +1,11 @@ login root root -source etc/local.shy - +~aaa + login load etc/login.txt ~file1 history load etc/history.txt +source etc/local.shy + ~shell1 alias import nfs alias send send diff --git a/src/contexts/aaa/aaa.go b/src/contexts/aaa/aaa.go index ca7c4916..c0a27128 100644 --- a/src/contexts/aaa/aaa.go +++ b/src/contexts/aaa/aaa.go @@ -113,12 +113,14 @@ func (aaa *AAA) Start(m *ctx.Message, arg ...string) bool { // {{{ from := msg.Option("username") m.Log("lark", "%v", msg.Meta["detail"]) m.Travel(func(m *ctx.Message, n int) bool { + m.Log("fuck", "why-%v=%v", m.Cap("username"), msg.Detail(1)) if m.Cap("username") == msg.Detail(1) { + m.Log("fuck", "why-%v=%v", m.Cap("username"), msg.Detail(1)) m.Confv("lark", strings.Join([]string{from, "-2"}, "."), map[string]interface{}{"time": msg.Time(), "type": "recv", "text": msg.Detail(2)}) } return true - }) + }, aaa.Context) } return true } @@ -165,7 +167,7 @@ var Index = &ctx.Context{Name: "aaa", Help: "认证中心", "login": &ctx.Command{ Name: "login [sessid]|[username password]|[cert certfile]|[pub pubfile]|[key keyfile]|[ip ipstr]|[load|save filename]", Help: "用户登录, sessid: 会话ID, username: 用户名, password: 密码, load: 加载用户信息, save: 保存用户信息, filename: 文件名", - Form: map[string]int{"cert": 1, "pub": 1, "key": 1, "ip": 1, "load": 1, "save": 1}, + Form: map[string]int{"cert": 1, "pub": 1, "key": 1, "ip": 1}, Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) { if aaa, ok := m.Target().Server.(*AAA); m.Assert(ok) { // {{{ stream := "" @@ -213,7 +215,7 @@ var Index = &ctx.Context{Name: "aaa", Help: "认证中心", } if stream != "" { - m.Start(m.Confx("aaa_name"), m.Confx("aaa_help"), arg[0], "", aaa.Session(arg[0])) + m.Start(arg[0], m.Confx("aaa_help"), arg[0], "", aaa.Session(arg[0])) m.Cap("stream", stream) return } @@ -245,14 +247,17 @@ var Index = &ctx.Context{Name: "aaa", Help: "认证中心", if f, e := os.Open(arg[1]); m.Assert(e) { for bio := bufio.NewScanner(f); bio.Scan(); { word := strings.SplitN(bio.Text(), ":", 3) - m.Spawn().Start(word[0], "用户", word[0], word[1], word[2]) + msg := m.Spawn() + msg.Start(word[0], "用户", word[0], word[1], word[2]) + msg.Spawn().Cmd("config", "load", fmt.Sprintf("etc/%s.json", word[0]), "lark") } } case "save": if f, e := os.Create(arg[1]); m.Assert(e) { m.Travel(func(m *ctx.Message, i int) bool { - if i > 0 { + if i > 0 && m.Cap("username") != "root" { f.WriteString(fmt.Sprintf("%s:%s:%s\n", m.Cap("username"), m.Cap("password"), m.Cap("sessid"))) + m.Spawn().Cmd("config", "save", fmt.Sprintf("etc/%s.json", m.Cap("username")), "lark") } return true }) @@ -276,7 +281,7 @@ var Index = &ctx.Context{Name: "aaa", Help: "认证中心", }, c) if !find { - m.Start(m.Confx("aaa_name"), m.Confx("aaa_help"), arg[0], aaa.Password(arg[1]), aaa.Session(arg[0])) + m.Start(arg[0], m.Confx("aaa_help"), arg[0], aaa.Password(arg[1]), aaa.Session(arg[0])) m.Cap("stream", arg[0]) m.Echo(m.Cap("sessid")) m.Appendv("aaa", m) @@ -669,7 +674,11 @@ var Index = &ctx.Context{Name: "aaa", Help: "认证中心", m.Add("append", "friend", k) m.Add("append", "time", val["time"]) m.Add("append", "type", val["type"]) - m.Add("append", "text", val["text"]) + if val["type"].(string) == "send" { + m.Add("append", "text", fmt.Sprintf("<< %v", val["text"])) + } else { + m.Add("append", "text", fmt.Sprintf(">> %v", val["text"])) + } } } case 1: @@ -687,7 +696,7 @@ var Index = &ctx.Context{Name: "aaa", Help: "认证中心", return false } return true - }) + }, c) } // }}} }}, diff --git a/src/contexts/ctx.go b/src/contexts/ctx.go index 61785f59..a67ca883 100644 --- a/src/contexts/ctx.go +++ b/src/contexts/ctx.go @@ -1628,11 +1628,9 @@ func (m *Message) Confv(key string, args ...interface{}) interface{} { // {{{ x.Value = args[0] default: for i := 0; i < len(args); i += 2 { - m.Log("fuck", "b %v", x.Value) if i < len(args)-1 { x.Value = Chain(m, x.Value, args[i], args[i+1]) } - m.Log("fuck", "b %v", x.Value) if i == len(args)-2 { return Chain(m, x.Value, args[len(args)-2]) } diff --git a/src/contexts/nfs/nfs.go b/src/contexts/nfs/nfs.go index 0f577577..1c7234ec 100644 --- a/src/contexts/nfs/nfs.go +++ b/src/contexts/nfs/nfs.go @@ -1105,8 +1105,8 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心", } // }}} }}, "json": &ctx.Command{Name: "json [key value]...", Help: "生成格式化内容, key: 参数名, value: 参数值", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) { - if len(arg) == 1 { - data := map[string]interface{}{} + if len(arg) == 1 { // {{{ + var data interface{} e := json.Unmarshal([]byte(arg[0]), &data) m.Assert(e) @@ -1119,7 +1119,7 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心", } if len(arg) > 1 && arg[0] == "file" { - data := map[string]interface{}{} + var data interface{} f, e := os.Open(arg[1]) m.Assert(e) d := json.NewDecoder(f) @@ -1130,7 +1130,8 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心", m.Echo(string(buf)) return } - data := map[string]interface{}{} // {{{ + + data := map[string]interface{}{} for _, k := range m.Meta["option"] { if v, ok := m.Data[k]; ok { data[k] = v