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]))