forked from x/icebergs
opt mp
This commit is contained in:
parent
b0f8396853
commit
d8451b0060
@ -28,6 +28,17 @@ var Index = &ice.Context{Name: "aaa", Help: "认证模块",
|
||||
}},
|
||||
|
||||
ice.AAA_ROLE: {Name: "role check|black|white|right", Help: "角色", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
kit.Fetch(m.Confv("role", "meta.root"), func(key string, value string) {
|
||||
m.Push("userrole", "root")
|
||||
m.Push("username", key)
|
||||
})
|
||||
kit.Fetch(m.Confv("role", "meta.tech"), func(key string, value string) {
|
||||
m.Push("userrole", "tech")
|
||||
m.Push("username", key)
|
||||
})
|
||||
return
|
||||
}
|
||||
switch arg[0] {
|
||||
case "check":
|
||||
// 用户角色
|
||||
@ -90,9 +101,17 @@ var Index = &ice.Context{Name: "aaa", Help: "认证模块",
|
||||
}
|
||||
}},
|
||||
ice.AAA_USER: {Name: "user first|login", Help: "用户", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
// 用户列表
|
||||
m.Richs(ice.AAA_USER, nil, "*", func(key string, value map[string]interface{}) {
|
||||
m.Push(key, value, []string{"time", "username", "usernode"})
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
switch arg[0] {
|
||||
case "first":
|
||||
// 初始用户
|
||||
// 超级用户
|
||||
if m.Richs(ice.AAA_USER, nil, "%", nil) == nil {
|
||||
m.Rich(ice.AAA_USER, nil, kit.Dict("username", arg[1],
|
||||
"usernode", m.Conf(ice.CLI_RUNTIME, "boot.hostname"),
|
||||
@ -133,18 +152,13 @@ var Index = &ice.Context{Name: "aaa", Help: "认证模块",
|
||||
}
|
||||
|
||||
// 创建会话
|
||||
role := m.Cmdx(ice.AAA_ROLE, "check", arg[1])
|
||||
sessid := m.Rich(ice.AAA_SESS, nil, kit.Dict(
|
||||
"username", arg[1], "userrole", role,
|
||||
))
|
||||
m.Info("user: %s role: %s sess: %s", arg[1], role, sessid)
|
||||
m.Echo(sessid)
|
||||
m.Echo(m.Cmdx(ice.AAA_SESS, "create", arg[1]))
|
||||
}
|
||||
}},
|
||||
ice.AAA_SESS: {Name: "sess check|login", Help: "会话", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
// 会话列表
|
||||
m.Richs(ice.AAA_SESS, nil, "", func(key string, value map[string]interface{}) {
|
||||
m.Richs(ice.AAA_SESS, nil, "*", func(key string, value map[string]interface{}) {
|
||||
m.Push(key, value, []string{"key", "time", "username", "userrole"})
|
||||
})
|
||||
return
|
||||
@ -162,6 +176,7 @@ var Index = &ice.Context{Name: "aaa", Help: "认证模块",
|
||||
// 创建会话
|
||||
h := m.Rich(ice.AAA_SESS, nil, kit.Dict(
|
||||
"username", arg[1], "userrole", m.Cmdx(ice.AAA_ROLE, "check", arg[1]),
|
||||
"from", m.Option(ice.MSG_SESSID),
|
||||
))
|
||||
m.Log(ice.LOG_CREATE, "sessid: %s username: %s", h, arg[1])
|
||||
m.Echo(h)
|
||||
|
@ -5,11 +5,10 @@ import (
|
||||
)
|
||||
|
||||
var share_template = kit.Dict(
|
||||
"value", `<img src="/share/%s/value">`,
|
||||
"share", `<img src="/share/%s/share">`,
|
||||
"text", `<img src="/share/%s/text">`,
|
||||
|
||||
"link", `<a href="/share/%s" target="_blank">%s</a>`,
|
||||
"text", `<img src="%s/share/%s/text">`,
|
||||
"value", `<img src="%s/share/%s/value">`,
|
||||
"share", `<img src="%s/share/%s/share">`,
|
||||
"link", `<a href="%s/share/%s" target="_blank">%s</a>`,
|
||||
"simple", `<!DOCTYPE html>
|
||||
<head>
|
||||
<meta charset='utf-8'>
|
||||
|
@ -117,6 +117,7 @@ func (web *Frame) Login(msg *ice.Message, w http.ResponseWriter, r *http.Request
|
||||
msg.Target().Run(msg, s, ice.WEB_LOGIN, kit.Simple(msg.Optionv("cmds"))...)
|
||||
} else if strings.HasPrefix(msg.Option(ice.MSG_USERURL), "/static/") {
|
||||
} else if strings.HasPrefix(msg.Option(ice.MSG_USERURL), "/plugin/") {
|
||||
} else if strings.HasPrefix(msg.Option(ice.MSG_USERURL), "/login/") {
|
||||
} else if strings.HasPrefix(msg.Option(ice.MSG_USERURL), "/space/") {
|
||||
} else if strings.HasPrefix(msg.Option(ice.MSG_USERURL), "/route/") {
|
||||
} else if strings.HasPrefix(msg.Option(ice.MSG_USERURL), "/share/") {
|
||||
@ -305,6 +306,7 @@ func (web *Frame) HandleCmd(m *ice.Message, key string, cmd *ice.Command) {
|
||||
case "result":
|
||||
fmt.Fprint(w, msg.Result())
|
||||
default:
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
fmt.Fprint(w, msg.Formats("meta"))
|
||||
}
|
||||
})
|
||||
@ -521,7 +523,7 @@ var Index = &ice.Context{Name: "web", Help: "网络模块",
|
||||
m.Push("detail", value)
|
||||
if kit.Value(value, "client.share") != nil {
|
||||
m.Push("key", "share")
|
||||
m.Push("value", fmt.Sprintf(m.Conf(ice.WEB_SHARE, "meta.template.text"), kit.Value(value, "client.share")))
|
||||
m.Push("value", fmt.Sprintf(m.Conf(ice.WEB_SHARE, "meta.template.text"), m.Conf(ice.WEB_SHARE, "meta.domain"), kit.Value(value, "client.share")))
|
||||
}
|
||||
})
|
||||
return
|
||||
@ -769,17 +771,12 @@ var Index = &ice.Context{Name: "web", Help: "网络模块",
|
||||
// }
|
||||
// m.Cmd(ice.WEB_SPACE, arg[1], "sessid", sessid)
|
||||
// })
|
||||
//
|
||||
|
||||
case "share":
|
||||
switch arg[1] {
|
||||
case "add":
|
||||
m.Cmdy(ice.WEB_SPIDE, "self", path.Join("/space/share/add", path.Join(arg[2:]...)))
|
||||
default:
|
||||
m.Richs(ice.WEB_SPIDE, nil, m.Option("_dev"), func(key string, value map[string]interface{}) {
|
||||
m.Log(ice.LOG_CREATE, "dev: %s share: %s", m.Option("_dev"), arg[1])
|
||||
value["share"] = arg[1]
|
||||
})
|
||||
}
|
||||
m.Richs(ice.WEB_SPIDE, nil, m.Option("_dev"), func(key string, value map[string]interface{}) {
|
||||
m.Log(ice.LOG_CREATE, "dev: %s share: %s", m.Option("_dev"), arg[1])
|
||||
value["share"] = arg[1]
|
||||
})
|
||||
|
||||
case "connect":
|
||||
// 基本信息
|
||||
@ -812,7 +809,7 @@ var Index = &ice.Context{Name: "web", Help: "网络模块",
|
||||
}
|
||||
|
||||
// 断线重连
|
||||
sleep := time.Duration(rand.Intn(kit.Int(msg.Conf(ice.WEB_SPACE, "meta.redial.a"))*i)+kit.Int(msg.Conf(ice.WEB_SPACE, "meta.redial.b"))) * time.Millisecond
|
||||
sleep := time.Duration(rand.Intn(kit.Int(msg.Conf(ice.WEB_SPACE, "meta.redial.a"))*i+2)+kit.Int(msg.Conf(ice.WEB_SPACE, "meta.redial.b"))) * time.Millisecond
|
||||
msg.Info("%d sleep: %s reconnect: %s", i, sleep, u)
|
||||
time.Sleep(sleep)
|
||||
}
|
||||
@ -1590,11 +1587,11 @@ var Index = &ice.Context{Name: "web", Help: "网络模块",
|
||||
m.Richs(ice.WEB_SHARE, nil, arg[0], func(key string, value map[string]interface{}) {
|
||||
m.Push("detail", value)
|
||||
m.Push("key", "link")
|
||||
m.Push("value", fmt.Sprintf(m.Conf(ice.WEB_SHARE, "meta.template.link"), key, key))
|
||||
m.Push("value", fmt.Sprintf(m.Conf(ice.WEB_SHARE, "meta.template.link"), m.Conf(ice.WEB_SHARE, "meta.domain"), key, key))
|
||||
m.Push("key", "share")
|
||||
m.Push("value", fmt.Sprintf(m.Conf(ice.WEB_SHARE, "meta.template.share"), key))
|
||||
m.Push("value", fmt.Sprintf(m.Conf(ice.WEB_SHARE, "meta.template.share"), m.Conf(ice.WEB_SHARE, "meta.domain"), key))
|
||||
m.Push("key", "value")
|
||||
m.Push("value", fmt.Sprintf(m.Conf(ice.WEB_SHARE, "meta.template.value"), key))
|
||||
m.Push("value", fmt.Sprintf(m.Conf(ice.WEB_SHARE, "meta.template.value"), m.Conf(ice.WEB_SHARE, "meta.domain"), key))
|
||||
})
|
||||
return
|
||||
}
|
||||
@ -1602,13 +1599,10 @@ var Index = &ice.Context{Name: "web", Help: "网络模块",
|
||||
switch arg[0] {
|
||||
case "auth":
|
||||
m.Richs(ice.WEB_SHARE, nil, arg[1], func(key string, value map[string]interface{}) {
|
||||
if value["type"] == "login" {
|
||||
m.Richs(ice.AAA_SESS, nil, value["text"], func(key string, value map[string]interface{}) {
|
||||
value["userrole"] = m.Cmdx(ice.AAA_ROLE, "check", arg[2])
|
||||
m.Echo("%s", value["userrole"])
|
||||
value["username"] = arg[2]
|
||||
})
|
||||
}
|
||||
m.Richs(ice.AAA_SESS, nil, value["text"], func(key string, value map[string]interface{}) {
|
||||
value["username"], value["userrole"] = arg[2], m.Cmdx(ice.AAA_ROLE, "check", arg[2])
|
||||
m.Echo("%s", value["userrole"])
|
||||
})
|
||||
})
|
||||
|
||||
case "add":
|
||||
@ -1670,6 +1664,12 @@ var Index = &ice.Context{Name: "web", Help: "网络模块",
|
||||
}},
|
||||
|
||||
"/share/": {Name: "/share/", Help: "共享链", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
switch arg[0] {
|
||||
case "local":
|
||||
Render(m, "download", m.Cmdx(arg[1], path.Join(arg[2:]...)))
|
||||
return
|
||||
}
|
||||
|
||||
m.Richs(ice.WEB_SHARE, nil, arg[0], func(key string, value map[string]interface{}) {
|
||||
m.Log(ice.LOG_EXPORT, "%s: %v", arg, kit.Format(value))
|
||||
|
||||
|
@ -457,9 +457,10 @@ var Index = &ice.Context{Name: "chat", Help: "聊天中心",
|
||||
m.Cmdy(ice.WEB_FAVOR, arg[5:])
|
||||
return
|
||||
|
||||
case "location":
|
||||
case "device":
|
||||
// 记录位置
|
||||
m.Cmdy("aaa.location", arg[5:])
|
||||
m.Cmd(ice.WEB_FAVOR, kit.Select("device", m.Option("hot")), arg[5], arg[6],
|
||||
kit.Select("", arg, 7), kit.KeyValue(map[string]interface{}{}, "", kit.UnMarshal(kit.Select("{}", arg, 8))))
|
||||
return
|
||||
|
||||
case "upload":
|
||||
@ -483,7 +484,6 @@ var Index = &ice.Context{Name: "chat", Help: "聊天中心",
|
||||
})
|
||||
|
||||
if len(cmds) == 0 {
|
||||
web.Render(m, "status", 404, "not found")
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -76,7 +76,7 @@ var Index = &ice.Context{Name: "wiki", Help: "文档中心",
|
||||
},
|
||||
)},
|
||||
"walk": {Name: "walk", Help: "走遍世界", Value: kit.Data(kit.MDB_SHORT, "name", "path", "", "regs", ".*\\.csv")},
|
||||
"feel": {Name: "feel", Help: "影音媒体", Value: kit.Data(kit.MDB_SHORT, "name", "path", "", "regs", ".*\\.(png|JPG|MOV|m4v)")},
|
||||
"feel": {Name: "feel", Help: "影音媒体", Value: kit.Data(kit.MDB_SHORT, "name", "path", "", "regs", ".*\\.(png|jpg|JPG|MOV|m4v)")},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
ice.ICE_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
|
@ -5,6 +5,8 @@ import (
|
||||
"github.com/shylinux/icebergs/base/web"
|
||||
"github.com/shylinux/icebergs/core/chat"
|
||||
"github.com/shylinux/toolkits"
|
||||
|
||||
"path"
|
||||
)
|
||||
|
||||
var Index = &ice.Context{Name: "mp", Help: "小程序",
|
||||
@ -20,25 +22,45 @@ var Index = &ice.Context{Name: "mp", Help: "小程序",
|
||||
Commands: map[string]*ice.Command{
|
||||
ice.ICE_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Load()
|
||||
m.Cmd(ice.WEB_SPIDE, "add", "weixin", m.Conf("login", "meta.weixin"))
|
||||
m.Confm("login", "meta.userrole", func(key string, value string) {
|
||||
m.Cmd(ice.AAA_ROLE, value, key)
|
||||
})
|
||||
m.Cmd(ice.WEB_SPIDE, "add", "weixin", m.Conf("login", "meta.weixin"))
|
||||
}},
|
||||
ice.ICE_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Save("login")
|
||||
}},
|
||||
|
||||
"scan": {Name: "scan", Help: "扫码", List: kit.List(
|
||||
kit.MDB_INPUT, "text", "name", "location", "cb", "location",
|
||||
kit.MDB_INPUT, "text", "name", "battery", "cb", "battery",
|
||||
kit.MDB_INPUT, "text", "name", "paste", "cb", "paste",
|
||||
kit.MDB_INPUT, "text", "name", "scan", "cb", "scan",
|
||||
kit.MDB_INPUT, "text", "name", "wifi", "cb", "wifi",
|
||||
|
||||
kit.MDB_INPUT, "text", "name", "album", "cb", "album",
|
||||
kit.MDB_INPUT, "text", "name", "finger", "cb", "finger",
|
||||
kit.MDB_INPUT, "text", "name", "vibrate", "cb", "vibrate",
|
||||
kit.MDB_INPUT, "text", "name", "wifiList", "cb", "wifiList",
|
||||
kit.MDB_INPUT, "text", "name", "wifiConn", "cb", "wifiConn",
|
||||
|
||||
kit.MDB_INPUT, "textarea", "name", "scan", "cb", "scan",
|
||||
kit.MDB_INPUT, "textarea", "name", "location", "cb", "location",
|
||||
kit.MDB_INPUT, "button", "name", "scan", "cb", "scan",
|
||||
kit.MDB_INPUT, "button", "name", "location", "cb", "location",
|
||||
kit.MDB_INPUT, "button", "name", "text",
|
||||
kit.MDB_INPUT, "button", "name", "share",
|
||||
), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Echo(arg[0])
|
||||
}},
|
||||
"/login/": {Name: "/login/", Help: "登录", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
switch arg[0] {
|
||||
case "code":
|
||||
msg := m.Cmd(ice.WEB_SPIDE, "weixin", "GET", m.Conf("login", "meta.auth"),
|
||||
"js_code", m.Option("code"), "appid", m.Conf("login", "meta.appid"), "secret", m.Conf("login", "meta.appmm"))
|
||||
msg := m.Cmd(ice.WEB_SPIDE, "weixin", "GET", m.Conf("login", "meta.auth"), "js_code", m.Option("code"),
|
||||
"appid", m.Conf("login", "meta.appid"), "secret", m.Conf("login", "meta.appmm"))
|
||||
|
||||
// 用户登录
|
||||
m.Option(ice.MSG_USERNAME, msg.Append("openid"))
|
||||
m.Option(ice.MSG_USERROLE, m.Cmdx(ice.AAA_ROLE, "check", m.Option("FromUserName")))
|
||||
m.Info("%s: %s", m.Option(ice.MSG_USERROLE), m.Option(ice.MSG_USERNAME))
|
||||
m.Echo(m.Option(ice.MSG_SESSID, m.Cmdx(ice.AAA_USER, "login", m.Option(ice.MSG_USERNAME))))
|
||||
m.Echo(m.Option(ice.MSG_SESSID, m.Cmdx(ice.AAA_USER, "login", msg.Append("openid"))))
|
||||
|
||||
case "info":
|
||||
// 用户信息
|
||||
@ -58,26 +80,35 @@ var Index = &ice.Context{Name: "mp", Help: "小程序",
|
||||
web.Render(m, "qrcode", m.Option("scan"))
|
||||
|
||||
case "auth":
|
||||
if !m.Options(ice.MSG_USERNAME) || !m.Options(ice.MSG_SESSID) {
|
||||
if !m.Options(ice.MSG_USERNAME) {
|
||||
web.Render(m, "status", 401, "not login")
|
||||
break
|
||||
}
|
||||
|
||||
switch kit.Select("active", m.Option("type")) {
|
||||
case "active":
|
||||
// 授权登录
|
||||
m.Cmd(ice.WEB_SPACE, "auth", m.Option("auth"), m.Option(ice.MSG_USERNAME), m.Option(ice.MSG_USERROLE))
|
||||
m.Cmd(ice.WEB_SPACE, m.Option("auth"), "sessid", m.Cmdx(ice.AAA_SESS, "create", m.Option(ice.MSG_USERNAME)))
|
||||
}
|
||||
|
||||
case "upload":
|
||||
msg := m.Cmd(ice.WEB_CACHE, "upload")
|
||||
m.Cmdy(ice.WEB_STORY, ice.STORY_WATCH, msg.Append("data"), path.Join("usr/local/mp/", path.Base(msg.Append("name"))))
|
||||
web.Render(m, msg.Append("data"))
|
||||
m.Cmdy(ice.WEB_FAVOR, "device", "file", msg.Append("name"), msg.Append("data"))
|
||||
|
||||
case "cmds":
|
||||
if !m.Options(ice.MSG_USERNAME) {
|
||||
web.Render(m, "status", 401, "not login")
|
||||
break
|
||||
}
|
||||
if arg = kit.Split(arg[1]); !m.Right(arg) {
|
||||
return
|
||||
web.Render(m, "status", 403, "not auth")
|
||||
break
|
||||
}
|
||||
|
||||
// 执行命令
|
||||
msg := m.Cmd(arg)
|
||||
if m.Hand = false; !msg.Hand {
|
||||
msg = m.Cmd(ice.CLI_SYSTEM, arg)
|
||||
}
|
||||
m.Cmdy(arg)
|
||||
}
|
||||
}},
|
||||
},
|
||||
|
Loading…
x
Reference in New Issue
Block a user