1
0
forked from x/icebergs
This commit is contained in:
IT 老营长 @云轩领航-创始人 2023-10-02 09:53:45 +08:00
parent 43af99a59b
commit b68b76e9ec
8 changed files with 43 additions and 39 deletions

View File

@ -30,12 +30,19 @@ func init() {
) )
Index.MergeCommands(ice.Commands{ Index.MergeCommands(ice.Commands{
EMAIL: {Help: "邮件", Actions: ice.MergeActions(ice.Actions{ 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) { 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) { if m.Warn(msg.Append(SERVICE) == "", ice.ErrNotValid, SERVICE) {
return 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)) 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]) 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)) m.Logs(EMAIL, SEND, string(content)).Warn(smtp.SendMail(msg.Append(SERVICE), auth, msg.Append(USERNAME), kit.Split(m.Option(TO)), content))

View File

@ -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))) return kit.Format(kit.Format("%%0%dd", num), res%int64(math.Pow10(num)))
} }
const (
TOKEN = "token"
)
const TOTP = "totp" const TOTP = "totp"
func init() { func init() {

View File

@ -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.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 { func _parse_cli_color(str string) string {
res := 0 res := 0

View File

@ -157,15 +157,15 @@ func Opens(m *ice.Message, arg ...string) {
switch runtime.GOOS { switch runtime.GOOS {
case DARWIN: case DARWIN:
if kit.Ext(arg[0]) == "app" { if kit.Ext(arg[0]) == "app" {
m.Cmd(SYSTEM, OPEN, "-a", arg[0]) m.Cmdy(SYSTEM, OPEN, "-a", arg[0])
} else { } else {
m.Cmd(SYSTEM, OPEN, arg[0]) m.Cmdy(SYSTEM, OPEN, arg[0])
} }
case WINDOWS: case WINDOWS:
if kit.Ext(arg[0]) == "exe" { if kit.Ext(arg[0]) == "exe" {
m.Cmd(SYSTEM, arg[0]) m.Cmdy(SYSTEM, arg[0])
} else { } else {
m.Cmd(SYSTEM, "explorer", arg[0]) m.Cmdy(SYSTEM, "explorer", arg[0])
} }
} }
} }

View File

@ -60,13 +60,13 @@ func init() {
} }
}}, }},
}, Hand: func(m *ice.Message, arg ...string) { }, 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) { switch m.Option(ice.MSG_THEME) {
case LIGHT, WHITE: case LIGHT, WHITE:
m.Option(FG, kit.Select(BLACK, arg, 1)) m.OptionDefault(FG, BLACK, BG, WHITE)
m.Option(BG, kit.Select(WHITE, arg, 2))
default: default:
m.Option(FG, kit.Select(kit.Select(BLACK, m.Option("--plugin-fg-color")), arg, 1)) m.OptionDefault(FG, WHITE, BG, BLACK)
m.Option(BG, kit.Select(kit.Select(WHITE, m.Option("--plugin-bg-color")), arg, 2))
} }
if m.IsCliUA() { if m.IsCliUA() {
_qrcode_cli(m, kit.Select(kit.Select(ice.Info.Make.Domain, ice.Info.Domain), arg, 0)) _qrcode_cli(m, kit.Select(kit.Select(ice.Info.Make.Domain, ice.Info.Domain), arg, 0))

View File

@ -266,7 +266,7 @@ func init() {
m.Cmdy(ctx.CONFIG, RUNTIME, arg).Status(mdb.TIME, ice.Info.Make.Time, 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.HASH, kit.Cut(ice.Info.Hash, 6), nfs.SIZE, ice.Info.Size,
mdb.NAME, ice.Info.NodeName, nfs.VERSION, ice.Info.Make.Versions(), mdb.NAME, ice.Info.NodeName, nfs.VERSION, ice.Info.Make.Versions(),
) ).Option(ice.MSG_ACTION, "")
ctx.DisplayStoryJSON(m) ctx.DisplayStoryJSON(m)
}}, }},
}) })

View File

@ -240,34 +240,30 @@ func AutoConfig(arg ...Any) *ice.Action {
if cmd := m.Target().Commands[m.CommandKey()]; cmd == nil { if cmd := m.Target().Commands[m.CommandKey()]; cmd == nil {
return return
} else { } else {
s := Config(m, SHORT)
kit.If(s == "" || s == UNIQ || strings.Contains(s, ","), func() { s = HASH })
if cmd.Name == "" { 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) cmd.Name = kit.Format("%s %s auto", m.CommandKey(), s)
}, func() {
cmd.Name = kit.Format("%s %s auto", m.CommandKey(), HASH)
})
cmd.List = ice.SplitCmd(cmd.Name, cmd.Actions) cmd.List = ice.SplitCmd(cmd.Name, cmd.Actions)
} }
if cmd.Actions[INSERT] != nil { add := func(list []string) (inputs []Any) {
if inputs := []Any{}; cmd.Meta[INSERT] == nil { kit.For(list, func(k string) {
kit.For(kit.Filters(kit.Simple(Config(m, SHORT), kit.Split(ListField(m))), "", TIME, ID), func(k string) { inputs = append(inputs, k) }) kit.If(!kit.IsIn(k, TIME, HASH, COUNT, ID), func() {
m.Design(INSERT, "添加", inputs...) inputs = append(inputs, k+kit.Select("", "*", strings.Contains(s, k)))
})
})
return
} }
if inputs := []Any{}; cmd.Meta[CREATE] == nil { if cmd.Actions[INSERT] != nil {
kit.For(kit.Filters(kit.Split(Config(m, SHORT)), TIME, HASH, COUNT), func(k string) { inputs = append(inputs, k) }) if cmd.Meta[INSERT] == nil {
m.Design(CREATE, "创建", inputs...) m.Design(INSERT, "", add(kit.Simple(Config(m, SHORT), kit.Split(ListField(m))))...)
}
if cmd.Meta[CREATE] == nil {
m.Design(CREATE, "", add(kit.Split(Config(m, SHORT)))...)
} }
} else if cmd.Actions[CREATE] != nil { } else if cmd.Actions[CREATE] != nil {
if inputs := []Any{}; cmd.Meta[CREATE] == nil { if cmd.Meta[CREATE] == nil {
kit.For(kit.Filters(kit.Split(HashField(m)), TIME, HASH), func(k string) { m.Design(CREATE, "", add(kit.Split(HashField(m)))...)
if kit.IsIn(k, kit.Split(Config(m, SHORT))...) {
inputs = append(inputs, k+"*")
} else {
inputs = append(inputs, k)
}
})
m.Design(CREATE, "创建", inputs...)
} }
} }
} }

View File

@ -8,6 +8,7 @@ import (
"shylinux.com/x/icebergs/base/ctx" "shylinux.com/x/icebergs/base/ctx"
"shylinux.com/x/icebergs/base/mdb" "shylinux.com/x/icebergs/base/mdb"
"shylinux.com/x/icebergs/base/nfs" "shylinux.com/x/icebergs/base/nfs"
"shylinux.com/x/icebergs/base/web"
kit "shylinux.com/x/toolkits" kit "shylinux.com/x/toolkits"
) )
@ -21,7 +22,7 @@ const LOCATION = "location"
func init() { func init() {
get := func(m *ice.Message, api string, arg ...ice.Any) string { 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 { 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.Warn(kit.Format(kit.Value(res, "status")) != "0", kit.Format(res))
m.Debug("what %v %v", api, kit.Format(res)) m.Debug("what %v %v", api, kit.Format(res))
return 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) { }, 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)...) 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, m.Cmdx(web.SERVE, tcp.HOST))
m.Option(LOCATION, get(m, "location/v1/ip", aaa.IP, m.Option(ice.MSG_USERIP))) 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)))
}}, }},
}) })
} }