diff --git a/base/aaa/email.go b/base/aaa/email.go index c223bc29..39ec0cc0 100644 --- a/base/aaa/email.go +++ b/base/aaa/email.go @@ -10,6 +10,7 @@ import ( ) const ( + ADMIN = "admin" SEND = "send" DATE = "date" FROM = "from" @@ -36,8 +37,8 @@ func init() { 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 := mdb.HashSelects(m.Spawn(), ADMIN) + SEND: {Name: "send from=admin to*='shy@shylinux.com' cc subject*=hi content*:textarea=hello", Help: "发送", Hand: func(m *ice.Message, arg ...string) { + msg := mdb.HashSelects(m.Spawn(), m.OptionDefault(FROM, ADMIN)) if m.Warn(msg.Append(SERVICE) == "", ice.ErrNotValid, SERVICE) { return } diff --git a/base/aaa/offer.go b/base/aaa/offer.go index b91f5eec..eed2db0e 100644 --- a/base/aaa/offer.go +++ b/base/aaa/offer.go @@ -18,7 +18,7 @@ func init() { OFFER: {Help: "邀请", Role: VOID, Actions: ice.MergeActions(ice.Actions{ mdb.CREATE: {Name: "create email*='shy@shylinux.com' subject content", Help: "邀请", Hand: func(m *ice.Message, arg ...string) { h := mdb.HashCreate(m.Spawn(), m.OptionSimple(EMAIL, SUBJECT, CONTENT), INVITE, m.Option(ice.MSG_USERNAME), mdb.STATUS, INVITE) - m.Cmd(EMAIL, SEND, m.Option(EMAIL), "", m.OptionDefault(SUBJECT, "welcome to contexts, please continue"), + m.Cmd(EMAIL, SEND, mdb.Config(m, EMAIL), m.Option(EMAIL), "", m.OptionDefault(SUBJECT, "welcome to contexts, please continue"), m.OptionDefault(CONTENT, ice.Render(m, ice.RENDER_ANCHOR, m.Cmdx("host", "publish", m.MergePodCmd("", "", mdb.HASH, h)))), ) }}, @@ -33,12 +33,12 @@ func init() { mdb.HashModify(m, m.OptionSimple(mdb.HASH), mdb.STATUS, ACCEPT) } }}, - }, mdb.ImportantHashAction(mdb.SHORT, mdb.UNIQ, mdb.FIELD, "time,hash,status,invite,email,title,content")), Hand: func(m *ice.Message, arg ...string) { - if !m.Warn(len(arg) == 0 && m.Option(ice.MSG_USERROLE) == VOID, ice.ErrNotRight) { + }, mdb.ImportantHashAction(EMAIL, ADMIN, mdb.SHORT, mdb.UNIQ, mdb.FIELD, "time,hash,status,invite,email,title,content")), Hand: func(m *ice.Message, arg ...string) { + if m.Cmd(EMAIL, mdb.Config(m, EMAIL)).Length() == 0 { + m.Echo("please add admin email") + } else if !m.Warn(len(arg) == 0 && m.Option(ice.MSG_USERROLE) == VOID, ice.ErrNotRight) { kit.If(mdb.HashSelect(m, arg...).FieldsIsDetail(), func() { - m.SetAppend() - m.EchoInfoButton("welcome to contexts, please continue", ACCEPT) - // m.PushAction(ACCEPT) + m.SetAppend().EchoInfoButton("welcome to contexts, please continue", ACCEPT) }) } }}, diff --git a/base/aaa/portal/apply.go b/base/aaa/portal/apply.go index 60c1310d..5fefe184 100644 --- a/base/aaa/portal/apply.go +++ b/base/aaa/portal/apply.go @@ -14,6 +14,7 @@ import ( type apply struct { ice.Hash + email string `data:"admin"` field string `data:"time,hash,mobile,email,usernick,username,userrole,status"` sso string `name:"sso" help:"登录"` input string `name:"input" help:"注册" role:"void"` @@ -61,7 +62,7 @@ func (s apply) Login(m *ice.Message, arg ...string) { m.Options(ice.MSG_USERNAME, m.Option(aaa.EMAIL)) space := kit.Keys(kit.Slice(kit.Split(m.Option(ice.MSG_DAEMON), nfs.PT), 0, -1)) share := m.Cmd(web.SHARE, mdb.CREATE, mdb.TYPE, web.FIELD, mdb.NAME, web.CHAT_GRANT, mdb.TEXT, space).Append(mdb.LINK) - m.Cmdy(aaa.EMAIL, aaa.SEND, m.Option(aaa.EMAIL), "", "login contexts, please grant", html.FormatA(share)) + m.Cmdy(aaa.EMAIL, aaa.SEND, mdb.Config(m.Message, aaa.EMAIL), m.Option(aaa.EMAIL), "", "login contexts, please grant", html.FormatA(share)) m.ProcessHold() } } @@ -69,6 +70,10 @@ func (s apply) Email(m *ice.Message, arg ...string) { ctx.DisplayStoryForm(m.Message, "email*", s.Login).Echo("please auth login in mailbox, after email sent") } func (s apply) List(m *ice.Message, arg ...string) *ice.Message { + if m.Cmd(aaa.EMAIL, mdb.Config(m.Message, aaa.EMAIL)).Length() == 0 { + m.Echo("please add admin email") + return m + } kit.If(m.Option(_cookie_key(m)), func(p string) { arg = []string{p} }) s.Hash.List(m, arg...).Table(func(value ice.Maps) { switch value[mdb.STATUS] { diff --git a/base/cli/runtime.go b/base/cli/runtime.go index 785e7be5..db22d053 100644 --- a/base/cli/runtime.go +++ b/base/cli/runtime.go @@ -39,11 +39,14 @@ func _runtime_init(m *ice.Message) { if name, e := os.Hostname(); e == nil && name != "" { m.Conf(RUNTIME, kit.Keys(BOOT, HOSTNAME), name) } - m.Conf(RUNTIME, kit.Keys(BOOT, PATHNAME), path.Base(kit.Path(""))) m.Conf(RUNTIME, kit.Keys(BOOT, USERNAME), kit.UserName()) + m.Conf(RUNTIME, kit.Keys(BOOT, PATHNAME), path.Base(kit.Path(""))) ice.Info.Hostname = m.Conf(RUNTIME, kit.Keys(BOOT, HOSTNAME)) - ice.Info.Pathname = m.Conf(RUNTIME, kit.Keys(BOOT, PATHNAME)) ice.Info.Username = m.Conf(RUNTIME, kit.Keys(BOOT, USERNAME)) + ice.Info.Pathname = m.Conf(RUNTIME, kit.Keys(BOOT, PATHNAME)) + kit.HashSeed = append(kit.HashSeed, ice.Info.Hostname) + kit.HashSeed = append(kit.HashSeed, ice.Info.Username) + kit.HashSeed = append(kit.HashSeed, ice.Info.Pathname) ice.Info.System = m.Conf(RUNTIME, kit.Keys(HOST, OSID)) aaa.UserRoot(ice.Pulse, "", ice.Info.Make.Username, aaa.TECH, ice.DEV) aaa.UserRoot(ice.Pulse, "", ice.Info.Username, aaa.ROOT, ice.OPS) diff --git a/base/web/share.go b/base/web/share.go index 9dcc939e..6fe08284 100644 --- a/base/web/share.go +++ b/base/web/share.go @@ -105,6 +105,9 @@ func init() { case LOGIN: RenderCookie(m, aaa.SessCreate(m, msg.Append(aaa.USERNAME))) m.RenderRedirect(msg.Append(mdb.TEXT)) + case STORM: + RenderCookie(m, aaa.SessCreate(m, msg.Append(aaa.USERNAME))) + m.RenderRedirect(kit.MergeURL(kit.Select(nfs.PS, msg.Append(mdb.TEXT)), msg.AppendSimple(RIVER, STORM))) case FIELD: RenderPodCmd(m, msg.Append(SPACE), msg.Append(mdb.NAME), kit.UnMarshal(msg.Append(mdb.TEXT))) case DOWNLOAD: diff --git a/base/web/space.go b/base/web/space.go index f1d7ba8e..5ec1642d 100644 --- a/base/web/space.go +++ b/base/web/space.go @@ -250,16 +250,12 @@ func init() { m.Cmd(SPACE, func(value ice.Maps) { kit.If(kit.IsIn(value[mdb.TYPE], WORKER, SERVER), func() { m.Push(arg[0], value[mdb.NAME]) }) }) - case tcp.WIFI: - m.Cmdy(tcp.WIFI).CutTo(tcp.SSID, arg[0]) case mdb.ICONS: m.Options(nfs.DIR_REG, kit.ExtReg(nfs.PNG, nfs.JPG, nfs.JPEG), nfs.DIR_DEEP, ice.TRUE) m.Cmdy(nfs.DIR, nfs.SRC, nfs.PATH) m.Cmdy(nfs.DIR, ice.USR_LOCAL_IMAGE, nfs.PATH) m.Cmdy(nfs.DIR, ice.USR_ICONS, nfs.PATH) m.CutTo(nfs.PATH, arg[0]) - case aaa.PASSWORD: - m.SetAppend() case ctx.INDEX, ice.CMD: if space := m.Option(SPACE); space != "" { m.Options(SPACE, []string{}).Cmdy(SPACE, space, ctx.COMMAND) @@ -273,6 +269,18 @@ func init() { } else { m.Cmdy(ctx.COMMAND, mdb.INPUTS, m.Option(ctx.INDEX)) } + case tcp.WIFI: + m.Cmdy(tcp.WIFI).CutTo(tcp.SSID, arg[0]) + case aaa.TO: + if m.Option(ctx.ACTION) != aaa.EMAIL { + break + } + fallthrough + case aaa.EMAIL: + m.Push(arg[0], "shy@shylinux.com") + m.Push(arg[0], "shylinux@163.com") + case aaa.PASSWORD: + m.SetAppend() } }) ctx.PodCmd = func(m *ice.Message, arg ...ice.Any) bool { diff --git a/core/chat/header.go b/core/chat/header.go index e38cb4f9..e4674f49 100644 --- a/core/chat/header.go +++ b/core/chat/header.go @@ -84,14 +84,13 @@ func init() { kit.Select(ice.TRUE, ice.FALSE, kit.IsIn(kit.Select(html.LIGHT, arg, 0), html.LIGHT, html.WHITE))) } }}, - aaa.EMAIL: {Name: "email to subject content", Hand: func(m *ice.Message, arg ...string) { + aaa.EMAIL: {Name: "email to='shy@shylinux.com' subject content", Hand: func(m *ice.Message, arg ...string) { if m.Option(nfs.TO) != aaa.UserEmail(m, "") && !aaa.Right(m, aaa.EMAIL, m.Option(nfs.TO)) { return } m.Options("volcano", web.UserHost(m), nfs.VERSION, web.RenderVersion(m)) - m.Options(ice.MSG_USERWEB, tcp.PublishLocalhost(m, m.Option(ice.MSG_USERWEB))) - m.Options(ice.MSG_USERWEB, kit.MergeURL(m.Option(ice.MSG_USERWEB), web.SHARE, m.Cmdx(web.SHARE, mdb.CREATE, mdb.TYPE, web.LOGIN))) - m.Cmdy(aaa.EMAIL, aaa.SEND, arg, aaa.CONTENT, nfs.Template(m, "email.html")) + m.Cmdy(web.SHARE, mdb.CREATE, mdb.TYPE, web.LOGIN, mdb.TEXT, tcp.PublishLocalhost(m, m.Option(ice.MSG_USERWEB))) + m.Cmdy(aaa.EMAIL, aaa.SEND, aaa.FROM, aaa.ADMIN, arg, aaa.CONTENT, nfs.Template(m, "email.html")) }}, aaa.LOGOUT: {Hand: aaa.SessLogout}, mdb.CREATE: {Name: "create type*=plugin,qrcode,oauth name* icons link order space index args", Hand: func(m *ice.Message, arg ...string) { mdb.HashCreate(m, m.OptionSimple()) }},