diff --git a/base/aaa/sess.go b/base/aaa/sess.go index 29d19f24..4a9ddf14 100644 --- a/base/aaa/sess.go +++ b/base/aaa/sess.go @@ -69,9 +69,6 @@ func init() { }, Commands: map[string]*ice.Command{ SESS: {Name: "sess hash auto", Help: "会话", Action: map[string]*ice.Action{ - mdb.CREATE: {Name: "create", Help: "创建", Hand: func(m *ice.Message, arg ...string) { - m.EchoQRCode(kit.MergeURL(m.Conf("web.serve", "meta.share"), "share", m.Cmdx("web.share", mdb.CREATE, kit.MDB_TYPE, "login", USERNAME, ice.Info.UserName))) - }}, mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) { m.Cmdy(mdb.DELETE, SESS, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH)) }}, diff --git a/base/aaa/user.go b/base/aaa/user.go index 079c234b..71f3a33a 100644 --- a/base/aaa/user.go +++ b/base/aaa/user.go @@ -131,7 +131,7 @@ func init() { mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) { m.Cmdy(mdb.MODIFY, USER, "", mdb.HASH, USERNAME, m.Option(USERNAME), arg) }}, - mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) { + mdb.REMOVE: {Name: "remove username", Help: "删除", Hand: func(m *ice.Message, arg ...string) { _user_remove(m, m.Option(USERNAME)) }}, mdb.SEARCH: {Name: "search type name text", Help: "搜索", Hand: func(m *ice.Message, arg ...string) { diff --git a/base/cli/qrcode.go b/base/cli/qrcode.go index 9f6a0aff..b8eb7638 100644 --- a/base/cli/qrcode.go +++ b/base/cli/qrcode.go @@ -40,8 +40,9 @@ func _qrcode_web(m *ice.Message, arg ...string) { if qr, e := qrcode.New(arg[0], qrcode.Medium); m.Assert(e) { m.Assert(qr.Write(kit.Int(kit.Select("240", arg, 1)), buf)) } - src := "data:image/png;base64," + base64.StdEncoding.EncodeToString(buf.Bytes()) - m.Echo(``, src, arg[0], kit.Select("240", arg, 1)) + m.Option("byte", buf.Bytes()) + data := base64.StdEncoding.EncodeToString(buf.Bytes()) + m.Echo(``, data, arg[0], kit.Select("240", arg, 1)) } const QRCODE = "qrcode" diff --git a/base/web/render.go b/base/web/render.go index fd819f62..69fbc9fb 100644 --- a/base/web/render.go +++ b/base/web/render.go @@ -3,6 +3,7 @@ package web import ( ice "github.com/shylinux/icebergs" "github.com/shylinux/icebergs/base/aaa" + "github.com/shylinux/icebergs/base/cli" kit "github.com/shylinux/toolkits" "fmt" @@ -47,8 +48,10 @@ func Render(msg *ice.Message, cmd string, args ...interface{}) { } case ice.RENDER_QRCODE: // text [size] - msg.W.Header().Set(ContentType, ContentPNG) - fmt.Fprint(msg.W, msg.Cmdx("cli.qrcode", arg)) + if data, ok := msg.Cmd(cli.QRCODE, arg).Optionv("byte").([]byte); ok { + msg.W.Header().Set(ContentType, ContentPNG) + msg.W.Write(data) + } case ice.RENDER_RESULT: if len(arg) > 0 { // [str [arg...]] diff --git a/base/web/serve.go b/base/web/serve.go index 5cda9946..927a8522 100644 --- a/base/web/serve.go +++ b/base/web/serve.go @@ -242,12 +242,6 @@ func init() { for _, k := range kit.Split(m.Option(SPIDE_DEV)) { m.Cmd(SPACE, tcp.DIAL, SPIDE_DEV, k, kit.MDB_NAME, ice.Info.NodeName) } - - if m.Conf(SERVE, kit.Keym(SHARE)) == "" { - share := kit.Format("%s://%s:%s", m.Option("proto"), m.Cmd(tcp.HOST).Append(tcp.IP), m.Option(tcp.PORT)) - m.Debug("share: %v", share) - m.Conf(SERVE, kit.Keym(SHARE), share) - } }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Option(mdb.FIELDS, kit.Select("time,status,name,port,dev", mdb.DETAIL, len(arg) > 0)) diff --git a/base/web/share.go b/base/web/share.go index 20889b5d..507d2857 100644 --- a/base/web/share.go +++ b/base/web/share.go @@ -78,6 +78,7 @@ const ( LOGIN = "login" RIVER = "river" STORM = "storm" + APPLY = "apply" ) const SHARE = "share" @@ -100,6 +101,18 @@ func init() { m.Option(mdb.FIELDS, "time,userrole,username,river,storm,type,name,text") m.Cmdy(mdb.SELECT, SHARE, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH)) }}, + + LOGIN: {Name: "login", Help: "登录", Hand: func(m *ice.Message, arg ...string) { + m.EchoQRCode(kit.MergeURL(m.Conf(SHARE, kit.Keym(kit.MDB_DOMAIN)), + SHARE, m.Cmdx(SHARE, mdb.CREATE, kit.MDB_TYPE, LOGIN, aaa.USERNAME, ice.Info.UserName))) + }}, + APPLY: {Name: "apply", Help: "申请", Hand: func(m *ice.Message, arg ...string) { + m.EchoQRCode(kit.MergeURL(m.Conf(SHARE, kit.Keym(kit.MDB_DOMAIN)), + SHARE, m.Cmdx(SHARE, mdb.CREATE, kit.MDB_TYPE, APPLY))) + }}, + "auth": {Name: "auth", Help: "授权", Hand: func(m *ice.Message, arg ...string) { + m.Cmdy(mdb.MODIFY, SHARE, "", mdb.HASH, kit.MDB_HASH, arg) + }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Option(mdb.FIELDS, kit.Select("time,hash,userrole,username,river,storm,type,name,text", mdb.DETAIL, len(arg) > 0)) m.Cmdy(mdb.SELECT, SHARE, "", mdb.HASH, kit.MDB_HASH, arg) @@ -123,7 +136,7 @@ func init() { } switch msg.Append(kit.MDB_TYPE) { - case LOGIN, RIVER: + case LOGIN, APPLY, RIVER: switch kit.Select("", arg, 1) { case SHARE: m.Render(ice.RENDER_QRCODE, kit.MergeURL2(m.Option(ice.MSG_USERWEB), "/", list)) diff --git a/base/web/space.go b/base/web/space.go index 21d8c535..806b5c7e 100644 --- a/base/web/space.go +++ b/base/web/space.go @@ -247,6 +247,10 @@ func init() { m.Event(SPACE_START, args...) defer m.Event(SPACE_STOP, args...) } + switch kind { + case "chrome": + m.Cmd(SPACE, name, "pwd", name) + } frame := m.Target().Server().(*Frame) _space_handle(m, false, frame.send, s, name) diff --git a/core/chat/header.go b/core/chat/header.go index 6658ca4e..392a9608 100644 --- a/core/chat/header.go +++ b/core/chat/header.go @@ -11,17 +11,24 @@ import ( func _header_check(m *ice.Message) { if m.Option(web.SHARE) != "" { - switch msg := m.Cmd(web.SHARE, m.Option(web.SHARE)); msg.Append(kit.MDB_TYPE) { + msg := m.Cmd(web.SHARE, m.Option(web.SHARE)) + switch msg.Append(kit.MDB_TYPE) { case web.LOGIN: if m.Option(ice.MSG_SESSID) == "" { web.Render(m, web.COOKIE, aaa.SessCreate(m, msg.Append(aaa.USERNAME))) } + case web.APPLY: } + + m.Option(kit.MDB_TYPE, msg.Append(kit.MDB_TYPE)) + m.Option(kit.MDB_NAME, msg.Append(kit.MDB_NAME)) + m.Option(kit.MDB_TEXT, msg.Append(kit.MDB_TEXT)) } m.Option(web.SSO, m.Conf(web.SERVE, kit.Keym(web.SSO))) } const ( + APPLY = "apply" LOGIN = "login" CHECK = "check" TITLE = "title" @@ -44,6 +51,15 @@ func init() { }}, P_HEADER: {Name: "/header", Help: "标题栏", Action: map[string]*ice.Action{ + "auth": {Name: "auth share", Help: "用户授权", Hand: func(m *ice.Message, arg ...string) { + m.Cmd(web.SHARE, "auth", m.Option(web.SHARE), kit.MDB_NAME, m.Option(ice.MSG_USERNAME)) + + space := m.Cmdy(web.SHARE, m.Option(web.SHARE)).Append(kit.MDB_TEXT) + m.Cmd(web.SPACE, space, ice.MSG_SESSID, aaa.SessCreate(m, m.Option(ice.MSG_USERNAME))) + }}, + APPLY: {Name: "apply", Help: "用户登录", Hand: func(m *ice.Message, arg ...string) { + m.Cmdy(web.SHARE, mdb.CREATE, kit.MDB_TYPE, web.APPLY, kit.MDB_TEXT, m.Option(kit.MDB_TEXT)) + }}, LOGIN: {Name: "login", Help: "用户登录", Hand: func(m *ice.Message, arg ...string) { if aaa.UserLogin(m, arg[0], arg[1]) { web.Render(m, web.COOKIE, aaa.SessCreate(m, arg[0]))