From b68b76e9ecf266c579bda6a0ec4c9e0d236bf33d Mon Sep 17 00:00:00 2001 From: shy Date: Mon, 2 Oct 2023 09:53:45 +0800 Subject: [PATCH] add some --- base/aaa/email.go | 11 +++++++++-- base/aaa/totp.go | 3 --- base/cli/color.go | 5 ++++- base/cli/daemon.go | 8 ++++---- base/cli/qrcode.go | 8 ++++---- base/cli/runtime.go | 2 +- base/mdb/mdb.go | 38 +++++++++++++++++--------------------- core/chat/location.go | 7 ++++--- 8 files changed, 43 insertions(+), 39 deletions(-) diff --git a/base/aaa/email.go b/base/aaa/email.go index 03c7d9ae..55cb4aa8 100644 --- a/base/aaa/email.go +++ b/base/aaa/email.go @@ -30,12 +30,19 @@ func init() { ) Index.MergeCommands(ice.Commands{ EMAIL: {Help: "邮件", Actions: ice.MergeActions(ice.Actions{ - MAILBOX: {Help: "邮箱", Hand: func(m *ice.Message, arg ...string) { m.EchoIFrame(mdb.Config(m, MAILBOX)).ProcessInner() }}, + mdb.CREATE: {Name: "create name*=admin service*='mail.shylinux.com:25' username*='shy@shylinux.com' password*"}, + MAILBOX: {Help: "邮箱", Hand: func(m *ice.Message, arg ...string) { + if p := mdb.Config(m, MAILBOX); !m.Warn(p == "", ice.ErrNotValid, MAILBOX) { + m.EchoIFrame(p).ProcessInner() + } + }}, SEND: {Name: "send to*='shy@shylinux.com' cc subject*=hi content*:textarea=hello", Help: "发送", Hand: func(m *ice.Message, arg ...string) { - msg := m.Cmd("", m.OptionDefault(mdb.NAME, ADMIN)) + msg := mdb.HashSelect(m.Spawn(), m.OptionDefault(mdb.NAME, ADMIN)) if m.Warn(msg.Append(SERVICE) == "", ice.ErrNotValid, SERVICE) { return } + m.Toast(ice.PROCESS, "", "-1") + defer m.Toast(ice.SUCCESS) content := []byte(kit.JoinKV(DF, NL, kit.Simple(FROM, msg.Append(USERNAME), m.OptionSimple(TO, CC, SUBJECT), DATE, time.Now().Format(time.RFC1123Z), "Content-Type", "text/html; charset=UTF-8")...) + NL + NL + m.Option(CONTENT)) auth := smtp.PlainAuth("", msg.Append(USERNAME), msg.Append(PASSWORD), kit.Split(msg.Append(SERVICE), ice.DF)[0]) m.Logs(EMAIL, SEND, string(content)).Warn(smtp.SendMail(msg.Append(SERVICE), auth, msg.Append(USERNAME), kit.Split(m.Option(TO)), content)) diff --git a/base/aaa/totp.go b/base/aaa/totp.go index 6d540b82..fd104a79 100644 --- a/base/aaa/totp.go +++ b/base/aaa/totp.go @@ -34,9 +34,6 @@ func _totp_get(key string, per int64, num int) string { return kit.Format(kit.Format("%%0%dd", num), res%int64(math.Pow10(num))) } -const ( - TOKEN = "token" -) const TOTP = "totp" func init() { diff --git a/base/cli/color.go b/base/cli/color.go index e7b6ed7c..b6f3f6bc 100644 --- a/base/cli/color.go +++ b/base/cli/color.go @@ -39,7 +39,10 @@ func _parse_color(str string) color.Color { return color.RGBA{uint8((u & 0xFF000000) >> 24), uint8((u & 0x00FF0000) >> 16), uint8((u & 0x0000FF00) >> 8), uint8((u & 0x000000FF) >> 0)} } } - return _color_map[str] + if color, ok := _color_map[str]; ok { + return color + } + return _color_map[WHITE] } func _parse_cli_color(str string) string { res := 0 diff --git a/base/cli/daemon.go b/base/cli/daemon.go index cfd3002e..d51e3898 100644 --- a/base/cli/daemon.go +++ b/base/cli/daemon.go @@ -157,15 +157,15 @@ func Opens(m *ice.Message, arg ...string) { switch runtime.GOOS { case DARWIN: if kit.Ext(arg[0]) == "app" { - m.Cmd(SYSTEM, OPEN, "-a", arg[0]) + m.Cmdy(SYSTEM, OPEN, "-a", arg[0]) } else { - m.Cmd(SYSTEM, OPEN, arg[0]) + m.Cmdy(SYSTEM, OPEN, arg[0]) } case WINDOWS: if kit.Ext(arg[0]) == "exe" { - m.Cmd(SYSTEM, arg[0]) + m.Cmdy(SYSTEM, arg[0]) } else { - m.Cmd(SYSTEM, "explorer", arg[0]) + m.Cmdy(SYSTEM, "explorer", arg[0]) } } } diff --git a/base/cli/qrcode.go b/base/cli/qrcode.go index 99ecd4e6..fd8d6745 100644 --- a/base/cli/qrcode.go +++ b/base/cli/qrcode.go @@ -60,13 +60,13 @@ func init() { } }}, }, Hand: func(m *ice.Message, arg ...string) { + m.Option(FG, kit.Select(m.Option("--plugin-fg-color"), arg, 1)) + m.Option(BG, kit.Select(m.Option("--plugin-bg-color"), arg, 2)) switch m.Option(ice.MSG_THEME) { case LIGHT, WHITE: - m.Option(FG, kit.Select(BLACK, arg, 1)) - m.Option(BG, kit.Select(WHITE, arg, 2)) + m.OptionDefault(FG, BLACK, BG, WHITE) default: - m.Option(FG, kit.Select(kit.Select(BLACK, m.Option("--plugin-fg-color")), arg, 1)) - m.Option(BG, kit.Select(kit.Select(WHITE, m.Option("--plugin-bg-color")), arg, 2)) + m.OptionDefault(FG, WHITE, BG, BLACK) } if m.IsCliUA() { _qrcode_cli(m, kit.Select(kit.Select(ice.Info.Make.Domain, ice.Info.Domain), arg, 0)) diff --git a/base/cli/runtime.go b/base/cli/runtime.go index dc27c79a..64f2a842 100644 --- a/base/cli/runtime.go +++ b/base/cli/runtime.go @@ -266,7 +266,7 @@ func init() { m.Cmdy(ctx.CONFIG, RUNTIME, arg).Status(mdb.TIME, ice.Info.Make.Time, mdb.HASH, kit.Cut(ice.Info.Hash, 6), nfs.SIZE, ice.Info.Size, mdb.NAME, ice.Info.NodeName, nfs.VERSION, ice.Info.Make.Versions(), - ) + ).Option(ice.MSG_ACTION, "") ctx.DisplayStoryJSON(m) }}, }) diff --git a/base/mdb/mdb.go b/base/mdb/mdb.go index dd57a668..3b9982cc 100644 --- a/base/mdb/mdb.go +++ b/base/mdb/mdb.go @@ -240,34 +240,30 @@ func AutoConfig(arg ...Any) *ice.Action { if cmd := m.Target().Commands[m.CommandKey()]; cmd == nil { return } else { + s := Config(m, SHORT) + kit.If(s == "" || s == UNIQ || strings.Contains(s, ","), func() { s = HASH }) if cmd.Name == "" { - kit.If(Config(m, SHORT), func(s string) { - kit.If(s == UNIQ || strings.Contains(s, ","), func() { s = HASH }) - cmd.Name = kit.Format("%s %s auto", m.CommandKey(), s) - }, func() { - cmd.Name = kit.Format("%s %s auto", m.CommandKey(), HASH) - }) + cmd.Name = kit.Format("%s %s auto", m.CommandKey(), s) cmd.List = ice.SplitCmd(cmd.Name, cmd.Actions) } + add := func(list []string) (inputs []Any) { + kit.For(list, func(k string) { + kit.If(!kit.IsIn(k, TIME, HASH, COUNT, ID), func() { + inputs = append(inputs, k+kit.Select("", "*", strings.Contains(s, k))) + }) + }) + return + } if cmd.Actions[INSERT] != nil { - if inputs := []Any{}; cmd.Meta[INSERT] == nil { - kit.For(kit.Filters(kit.Simple(Config(m, SHORT), kit.Split(ListField(m))), "", TIME, ID), func(k string) { inputs = append(inputs, k) }) - m.Design(INSERT, "添加", inputs...) + if cmd.Meta[INSERT] == nil { + m.Design(INSERT, "", add(kit.Simple(Config(m, SHORT), kit.Split(ListField(m))))...) } - if inputs := []Any{}; cmd.Meta[CREATE] == nil { - kit.For(kit.Filters(kit.Split(Config(m, SHORT)), TIME, HASH, COUNT), func(k string) { inputs = append(inputs, k) }) - m.Design(CREATE, "创建", inputs...) + if cmd.Meta[CREATE] == nil { + m.Design(CREATE, "", add(kit.Split(Config(m, SHORT)))...) } } else if cmd.Actions[CREATE] != nil { - if inputs := []Any{}; cmd.Meta[CREATE] == nil { - kit.For(kit.Filters(kit.Split(HashField(m)), TIME, HASH), func(k string) { - if kit.IsIn(k, kit.Split(Config(m, SHORT))...) { - inputs = append(inputs, k+"*") - } else { - inputs = append(inputs, k) - } - }) - m.Design(CREATE, "创建", inputs...) + if cmd.Meta[CREATE] == nil { + m.Design(CREATE, "", add(kit.Split(HashField(m)))...) } } } diff --git a/core/chat/location.go b/core/chat/location.go index b8eefc95..b982be07 100644 --- a/core/chat/location.go +++ b/core/chat/location.go @@ -8,6 +8,7 @@ import ( "shylinux.com/x/icebergs/base/ctx" "shylinux.com/x/icebergs/base/mdb" "shylinux.com/x/icebergs/base/nfs" + "shylinux.com/x/icebergs/base/web" kit "shylinux.com/x/toolkits" ) @@ -21,7 +22,7 @@ const LOCATION = "location" func init() { get := func(m *ice.Message, api string, arg ...ice.Any) string { return kit.Format(mdb.Cache(m, kit.Join(kit.Simple(api, arg)), func() ice.Any { - res := kit.UnMarshal(m.Cmdx(http.MethodGet, "https://apis.map.qq.com/ws/"+api, mdb.KEY, mdb.Config(m, aaa.TOKEN), arg)) + res := kit.UnMarshal(m.Cmdx(http.MethodGet, "https://apis.map.qq.com/ws/"+api, mdb.KEY, mdb.Config(m, web.TOKEN), arg)) m.Warn(kit.Format(kit.Value(res, "status")) != "0", kit.Format(res)) m.Debug("what %v %v", api, kit.Format(res)) return kit.Format(res) @@ -52,10 +53,10 @@ func init() { }}, }, FavorAction(), mdb.HashAction(mdb.FIELD, "time,hash,type,name,text,latitude,longitude,extra", nfs.SCRIPT, "https://map.qq.com/api/gljs?v=1.exp")), Hand: func(m *ice.Message, arg ...string) { mdb.HashSelect(m, kit.Slice(arg, 0, 1)...) - ctx.DisplayLocal(m, "", ctx.ConfigSimple(m, aaa.TOKEN)) + ctx.DisplayLocal(m, "", ctx.ConfigSimple(m, web.TOKEN)) // m.Option(LOCATION, m.Cmdx(web.SERVE, tcp.HOST)) m.Option(LOCATION, get(m, "location/v1/ip", aaa.IP, m.Option(ice.MSG_USERIP))) - m.Option(nfs.SCRIPT, kit.MergeURL(mdb.Config(m, nfs.SCRIPT), "key", mdb.Config(m, aaa.TOKEN))) + m.Option(nfs.SCRIPT, kit.MergeURL(mdb.Config(m, nfs.SCRIPT), "key", mdb.Config(m, web.TOKEN))) }}, }) }