mirror of
https://shylinux.com/x/icebergs
synced 2025-04-26 01:24:05 +08:00
opt wx
This commit is contained in:
parent
0b863d1eeb
commit
ab79903523
@ -203,9 +203,9 @@ func init() {
|
||||
Configs: map[string]*ice.Config{
|
||||
SERVE: {Name: SERVE, Help: "服务器", Value: kit.Data(kit.MDB_SHORT, kit.MDB_NAME,
|
||||
tcp.LOCALHOST, true, aaa.BLACK, kit.Dict(), aaa.WHITE, kit.Dict(
|
||||
"intshell", true, "volcanos", true,
|
||||
"publish", true, "require", true,
|
||||
SPACE, true, SHARE, true,
|
||||
LOGIN, true, SPACE, true, SHARE, true,
|
||||
"volcanos", true, "intshell", true,
|
||||
"require", true, "publish", true,
|
||||
), "logheaders", false,
|
||||
|
||||
"static", kit.Dict("/", "usr/volcanos/"),
|
||||
|
@ -25,13 +25,17 @@ func init() {
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Option(mdb.FIELDS, kit.Select("time,hash,name,data", mdb.DETAIL, len(arg) > 0))
|
||||
m.Cmdy(mdb.SELECT, FILES, "", mdb.HASH, "hash", arg)
|
||||
m.Cmdy(mdb.SELECT, cmd, "", mdb.HASH, kit.MDB_HASH, arg)
|
||||
|
||||
m.Table(func(index int, value map[string]string, head []string) {
|
||||
m.PushDownload(value[kit.MDB_NAME], "/share/cache/"+value["data"])
|
||||
if len(arg) > 0 {
|
||||
switch kit.Ext(value["name"]) {
|
||||
case "png":
|
||||
m.PushImages("image", "/share/cache/"+value["data"])
|
||||
}
|
||||
}
|
||||
})
|
||||
if len(arg) == 0 {
|
||||
m.SortTimeR(kit.MDB_TIME)
|
||||
}
|
||||
m.PushAction(mdb.REMOVE)
|
||||
}},
|
||||
},
|
||||
|
@ -22,9 +22,14 @@ func _trans(arg []string, tr map[string]string) {
|
||||
}
|
||||
|
||||
const (
|
||||
ADDRESS = "address"
|
||||
LATITUDE = "latitude"
|
||||
LONGITUDE = "longitude"
|
||||
)
|
||||
const (
|
||||
GETLOCATION = "getLocation"
|
||||
OPENLOCATION = "openLocation"
|
||||
)
|
||||
|
||||
const LOCATION = "location"
|
||||
|
||||
@ -34,9 +39,15 @@ func init() {
|
||||
LOCATION: {Name: LOCATION, Help: "地理位置", Value: kit.Data(kit.MDB_SHORT, kit.MDB_TEXT)},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
LOCATION: {Name: "location text auto create@getLocation", Help: "地理位置", Action: map[string]*ice.Action{
|
||||
LOCATION: {Name: "location text auto getLocation", Help: "地理位置", Action: map[string]*ice.Action{
|
||||
OPENLOCATION: {Name: "create type=text name address latitude longitude", Help: "地图", Hand: func(m *ice.Message, arg ...string) {
|
||||
}},
|
||||
GETLOCATION: {Name: "create type=text name address latitude longitude", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
_trans(arg, map[string]string{ADDRESS: "text"})
|
||||
m.Cmdy(mdb.INSERT, LOCATION, "", mdb.HASH, arg)
|
||||
}},
|
||||
mdb.CREATE: {Name: "create type=text name address latitude longitude", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
_trans(arg, map[string]string{"address": "text"})
|
||||
_trans(arg, map[string]string{ADDRESS: "text"})
|
||||
m.Cmdy(mdb.INSERT, LOCATION, "", mdb.HASH, arg)
|
||||
}},
|
||||
mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||
@ -56,8 +67,8 @@ func init() {
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Option(mdb.FIELDS, kit.Select("time,type,name,text,longitude,latitude", mdb.DETAIL, len(arg) > 0))
|
||||
m.Cmdy(mdb.SELECT, LOCATION, "", mdb.HASH, kit.MDB_TEXT, arg)
|
||||
m.PushAction("openLocation", mdb.REMOVE)
|
||||
m.Cmdy(mdb.SELECT, cmd, "", mdb.HASH, kit.MDB_TEXT, arg)
|
||||
m.PushAction(OPENLOCATION, mdb.REMOVE)
|
||||
}},
|
||||
},
|
||||
})
|
||||
|
@ -3,7 +3,6 @@ package chat
|
||||
import (
|
||||
ice "github.com/shylinux/icebergs"
|
||||
"github.com/shylinux/icebergs/base/mdb"
|
||||
"github.com/shylinux/icebergs/core/wiki"
|
||||
kit "github.com/shylinux/toolkits"
|
||||
)
|
||||
|
||||
@ -15,7 +14,11 @@ func init() {
|
||||
PASTE: {Name: PASTE, Help: "粘贴板", Value: kit.Data(kit.MDB_SHORT, kit.MDB_TEXT)},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
PASTE: {Name: "paste hash auto create@paste", Help: "粘贴板", Action: map[string]*ice.Action{
|
||||
PASTE: {Name: "paste hash auto getClipboardData", Help: "粘贴板", Action: map[string]*ice.Action{
|
||||
"getClipboardData": {Name: "getClipboardData", Help: "粘贴", Hand: func(m *ice.Message, arg ...string) {
|
||||
_trans(arg, map[string]string{"data": "text"})
|
||||
m.Cmdy(mdb.INSERT, PASTE, "", mdb.HASH, arg)
|
||||
}},
|
||||
mdb.CREATE: {Name: "create type=text name=hi data:textarea=hi", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
_trans(arg, map[string]string{"data": "text"})
|
||||
m.Cmdy(mdb.INSERT, PASTE, "", mdb.HASH, arg)
|
||||
@ -36,16 +39,11 @@ func init() {
|
||||
m.Cmdy(mdb.INPUTS, PASTE, "", mdb.HASH, arg)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if len(arg) > 0 {
|
||||
text := m.Cmd(mdb.SELECT, PASTE, "", mdb.HASH, kit.MDB_HASH, arg[0]).Append(kit.MDB_TEXT)
|
||||
m.Cmdy(wiki.IMAGE, "qrcode", text)
|
||||
m.Cmdy(wiki.SPARK, "inner", text)
|
||||
m.Render("")
|
||||
return
|
||||
m.Option(mdb.FIELDS, kit.Select("time,hash,type,name,text", mdb.DETAIL, len(arg) > 0))
|
||||
if m.Cmdy(mdb.SELECT, cmd, "", mdb.HASH, kit.MDB_HASH, arg); len(arg) > 0 {
|
||||
m.PushScript("script", m.Append(kit.MDB_TEXT))
|
||||
m.PushQRCode("qrcode", m.Append(kit.MDB_TEXT))
|
||||
}
|
||||
|
||||
m.Cmdy(mdb.SELECT, PASTE, "", mdb.HASH)
|
||||
m.SortTimeR(kit.MDB_TIME)
|
||||
m.PushAction(mdb.REMOVE)
|
||||
}},
|
||||
},
|
||||
|
@ -3,7 +3,6 @@ package chat
|
||||
import (
|
||||
ice "github.com/shylinux/icebergs"
|
||||
"github.com/shylinux/icebergs/base/mdb"
|
||||
"github.com/shylinux/icebergs/core/wiki"
|
||||
kit "github.com/shylinux/toolkits"
|
||||
)
|
||||
|
||||
@ -15,10 +14,17 @@ func init() {
|
||||
SCAN: {Name: SCAN, Help: "扫码", Value: kit.Data(kit.MDB_SHORT, kit.MDB_TEXT)},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
SCAN: {Name: "scan hash auto create@scanQRCode scanQRCode0=应用扫码", Help: "扫码", Action: map[string]*ice.Action{
|
||||
mdb.CREATE: {Name: "create type=text name=hi text:textarea=hi", Help: "扫码", Hand: func(m *ice.Message, arg ...string) {
|
||||
SCAN: {Name: "scan hash auto scanQRCode scanQRCode0", Help: "扫码", Action: map[string]*ice.Action{
|
||||
"scanQRCode0": {Name: "create", Help: "本机扫码", Hand: func(m *ice.Message, arg ...string) {}},
|
||||
"scanQRCode": {Name: "create", Help: "扫码", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.INSERT, SCAN, "", mdb.HASH, arg)
|
||||
}},
|
||||
mdb.CREATE: {Name: "create type=text name=hi text:textarea=hi", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.INSERT, SCAN, "", mdb.HASH, arg)
|
||||
}},
|
||||
mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.MODIFY, SCAN, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH), arg)
|
||||
}},
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.DELETE, SCAN, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH))
|
||||
}},
|
||||
@ -32,16 +38,11 @@ func init() {
|
||||
m.Cmdy(mdb.INPUTS, SCAN, "", mdb.HASH, arg)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if len(arg) > 0 {
|
||||
text := m.Cmd(mdb.SELECT, SCAN, "", mdb.HASH, kit.MDB_HASH, arg[0]).Append(kit.MDB_TEXT)
|
||||
m.Cmdy(wiki.IMAGE, "qrcode", text)
|
||||
m.Cmdy(wiki.SPARK, "inner", text)
|
||||
m.Render("")
|
||||
return
|
||||
m.Option(mdb.FIELDS, kit.Select("time,hash,type,name,text", mdb.DETAIL, len(arg) > 0))
|
||||
if m.Cmdy(mdb.SELECT, cmd, "", mdb.HASH, kit.MDB_HASH, arg); len(arg) > 0 {
|
||||
m.PushScript("script", m.Append(kit.MDB_TEXT))
|
||||
m.PushQRCode("qrcode", m.Append(kit.MDB_TEXT))
|
||||
}
|
||||
|
||||
m.Cmdy(mdb.SELECT, SCAN, "", mdb.HASH)
|
||||
m.SortTimeR(kit.MDB_TIME)
|
||||
m.PushAction(mdb.REMOVE)
|
||||
}},
|
||||
},
|
||||
|
5
misc.go
5
misc.go
@ -6,10 +6,11 @@ import (
|
||||
"bytes"
|
||||
"encoding/base64"
|
||||
"fmt"
|
||||
"github.com/skip2/go-qrcode"
|
||||
"net/url"
|
||||
"path"
|
||||
"strings"
|
||||
|
||||
"github.com/skip2/go-qrcode"
|
||||
)
|
||||
|
||||
func (m *Message) Prefix(arg ...string) string {
|
||||
@ -160,7 +161,7 @@ func _render(m *Message, cmd string, args ...interface{}) string {
|
||||
case kit.SSH_SHELL:
|
||||
list = append(list, "<label>", "$ ", "</label>")
|
||||
default:
|
||||
list = append(list, "<label>", "< ", "</label>")
|
||||
list = append(list, "<label>", "> ", "</label>")
|
||||
}
|
||||
list = append(list, "<span>", l, "</span>")
|
||||
list = append(list, "</div>")
|
||||
|
108
misc/wx/wx.go
108
misc/wx/wx.go
@ -1,14 +1,14 @@
|
||||
package wx
|
||||
|
||||
import (
|
||||
"github.com/shylinux/icebergs"
|
||||
ice "github.com/shylinux/icebergs"
|
||||
"github.com/shylinux/icebergs/base/aaa"
|
||||
"github.com/shylinux/icebergs/base/cli"
|
||||
"github.com/shylinux/icebergs/base/mdb"
|
||||
"github.com/shylinux/icebergs/base/web"
|
||||
"github.com/shylinux/icebergs/core/chat"
|
||||
"github.com/shylinux/icebergs/core/wiki"
|
||||
"github.com/shylinux/toolkits"
|
||||
kit "github.com/shylinux/toolkits"
|
||||
|
||||
"crypto/sha1"
|
||||
"encoding/hex"
|
||||
@ -31,6 +31,7 @@ func _wx_config(m *ice.Message, nonce string) {
|
||||
m.Option(APPID, m.Conf(LOGIN, kit.Keys(kit.MDB_META, APPID)))
|
||||
m.Option("signature", _wx_sign(m, m.Option("noncestr", nonce), m.Option("timestamp", kit.Format(time.Now().Unix()))))
|
||||
}
|
||||
|
||||
func _wx_parse(m *ice.Message) {
|
||||
data := struct {
|
||||
FromUserName string
|
||||
@ -54,10 +55,11 @@ func _wx_parse(m *ice.Message) {
|
||||
m.Option("Event", data.Event)
|
||||
}
|
||||
func _wx_reply(m *ice.Message, tmpl string) {
|
||||
m.Render(m.Conf(LOGIN, kit.Keys("meta.template", tmpl)))
|
||||
m.Render(m.Conf(LOGIN, kit.Keym(kit.MDB_TEMPLATE, tmpl)))
|
||||
}
|
||||
func _wx_action(m *ice.Message) {
|
||||
m.Option(ice.MSG_OUTPUT, ice.RENDER_RESULT)
|
||||
m.Set(ice.MSG_RESULT)
|
||||
|
||||
m.Echo(`<xml>
|
||||
<FromUserName><![CDATA[%s]]></FromUserName>
|
||||
@ -87,14 +89,19 @@ func _wx_action(m *ice.Message) {
|
||||
}
|
||||
|
||||
const (
|
||||
LOGIN = "login"
|
||||
APPID = "appid"
|
||||
APPMM = "appmm"
|
||||
TOKEN = "token"
|
||||
TICKET = "ticket"
|
||||
LOGIN = "login"
|
||||
APPID = "appid"
|
||||
APPMM = "appmm"
|
||||
TOKEN = "token"
|
||||
EXPIRE = "expire"
|
||||
TICKET = "ticket"
|
||||
EXPIRES = "expires"
|
||||
CONFIG = "config"
|
||||
WEIXIN = "weixin"
|
||||
)
|
||||
const (
|
||||
MENU = "menu"
|
||||
ACCESS = "access"
|
||||
CONFIG = "config"
|
||||
WEIXIN = "weixin"
|
||||
)
|
||||
const WX = "wx"
|
||||
|
||||
@ -102,14 +109,7 @@ var Index = &ice.Context{Name: WX, Help: "公众号",
|
||||
Configs: map[string]*ice.Config{
|
||||
LOGIN: {Name: LOGIN, Help: "认证", Value: kit.Data(
|
||||
WEIXIN, "https://api.weixin.qq.com", APPID, "", APPMM, "", TOKEN, "",
|
||||
"template", kit.Dict("text", `<xml>
|
||||
<FromUserName><![CDATA[{{.Option "ToUserName"}}]]></FromUserName>
|
||||
<ToUserName><![CDATA[{{.Option "FromUserName"}}]]></ToUserName>
|
||||
<CreateTime>{{.Option "CreateTime"}}</CreateTime>
|
||||
<MsgType><![CDATA[text]]></MsgType>
|
||||
<Content><![CDATA[{{.Result}}]]></Content>
|
||||
</xml>`),
|
||||
"menu", []interface{}{
|
||||
kit.MDB_TEMPLATE, kit.Dict(kit.MDB_TEXT, text), MENU, []interface{}{
|
||||
kit.Dict(wiki.TITLE, "主页", wiki.SPARK, "点击进入", wiki.IMAGE, "https://shylinux.com/static/volcanos/favicon.ico", wiki.REFER, "https://shylinux.com"),
|
||||
kit.Dict(wiki.TITLE, "产品", wiki.SPARK, "工具", wiki.IMAGE, "https://shylinux.com/static/volcanos/favicon.ico", wiki.REFER, "https://shylinux.com?river=product"),
|
||||
kit.Dict(wiki.TITLE, "研发", wiki.SPARK, "工具", wiki.IMAGE, "https://shylinux.com/static/volcanos/favicon.ico", wiki.REFER, "https://shylinux.com?river=project"),
|
||||
@ -118,12 +118,11 @@ var Index = &ice.Context{Name: WX, Help: "公众号",
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Load()
|
||||
m.Cmd(web.SPIDE, mdb.CREATE, WEIXIN, m.Conf(LOGIN, kit.Keys(kit.MDB_META, WEIXIN)))
|
||||
m.Load()
|
||||
}},
|
||||
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Save()
|
||||
}},
|
||||
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Save() }},
|
||||
|
||||
ACCESS: {Name: "access appid auto ticket token login", Help: "认证", Action: map[string]*ice.Action{
|
||||
LOGIN: {Name: "login appid appmm token", Help: "登录", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Conf(LOGIN, kit.Keys(kit.MDB_META, APPID), m.Option(APPID))
|
||||
@ -131,48 +130,56 @@ var Index = &ice.Context{Name: WX, Help: "公众号",
|
||||
m.Conf(LOGIN, kit.Keys(kit.MDB_META, TOKEN), m.Option(TOKEN))
|
||||
}},
|
||||
TOKEN: {Name: "token", Help: "令牌", Hand: func(m *ice.Message, arg ...string) {
|
||||
if now := time.Now().Unix(); m.Conf(LOGIN, "meta.access.token") == "" || now > kit.Int64(m.Conf(LOGIN, "meta.access.expire")) {
|
||||
msg := m.Cmd(web.SPIDE, "weixin", web.SPIDE_GET, "/cgi-bin/token?grant_type=client_credential",
|
||||
if now := time.Now().Unix(); m.Conf(LOGIN, kit.Keym(ACCESS, TOKEN)) == "" || now > kit.Int64(m.Conf(LOGIN, kit.Keym(ACCESS, EXPIRE))) {
|
||||
msg := m.Cmd(web.SPIDE, WEIXIN, web.SPIDE_GET, "/cgi-bin/token?grant_type=client_credential",
|
||||
APPID, m.Conf(LOGIN, kit.Keys(kit.MDB_META, APPID)), "secret", m.Conf(LOGIN, kit.Keys(kit.MDB_META, APPMM)))
|
||||
if m.Warn(msg.Append("errcode") != "", "%v: %v", msg.Append("errcode"), msg.Append("errmsg")) {
|
||||
return
|
||||
}
|
||||
|
||||
m.Conf(LOGIN, "meta.access.token", msg.Append("access_token"))
|
||||
m.Conf(LOGIN, "meta.access.expire", now+kit.Int64(msg.Append("expires_in")))
|
||||
m.Conf(LOGIN, kit.Keym(ACCESS, EXPIRE), now+kit.Int64(msg.Append("expires_in")))
|
||||
m.Conf(LOGIN, kit.Keym(ACCESS, TOKEN), msg.Append("access_token"))
|
||||
}
|
||||
m.Echo(m.Conf(LOGIN, "meta.access.token"))
|
||||
m.Echo(m.Conf(LOGIN, kit.Keym(ACCESS, TOKEN)))
|
||||
}},
|
||||
TICKET: {Name: "ticket", Help: "票据", Hand: func(m *ice.Message, arg ...string) {
|
||||
if now := time.Now().Unix(); m.Conf(LOGIN, "meta.access.ticket") == "" || now > kit.Int64(m.Conf(LOGIN, "meta.access.expires")) {
|
||||
msg := m.Cmd(web.SPIDE, "weixin", web.SPIDE_GET, "/cgi-bin/ticket/getticket?type=jsapi",
|
||||
if now := time.Now().Unix(); m.Conf(LOGIN, kit.Keym(ACCESS, TICKET)) == "" || now > kit.Int64(m.Conf(LOGIN, kit.Keym(ACCESS, EXPIRES))) {
|
||||
msg := m.Cmd(web.SPIDE, WEIXIN, web.SPIDE_GET, "/cgi-bin/ticket/getticket?type=jsapi",
|
||||
"access_token", m.Cmdx(ACCESS, TOKEN))
|
||||
if m.Warn(msg.Append("errcode") != "0", msg.Append("errcode"), msg.Append("errmsg")) {
|
||||
return
|
||||
}
|
||||
|
||||
m.Conf(LOGIN, "meta.access.ticket", msg.Append(TICKET))
|
||||
m.Conf(LOGIN, "meta.access.expires", now+kit.Int64(msg.Append("expires_in")))
|
||||
m.Conf(LOGIN, kit.Keym(ACCESS, EXPIRES), now+kit.Int64(msg.Append("expires_in")))
|
||||
m.Conf(LOGIN, kit.Keym(ACCESS, TICKET), msg.Append(TICKET))
|
||||
}
|
||||
m.Echo(m.Conf(LOGIN, "meta.access.ticket"))
|
||||
m.Echo(m.Conf(LOGIN, kit.Keym(ACCESS, TICKET)))
|
||||
}},
|
||||
CONFIG: {Name: "config", Help: "配置", Hand: func(m *ice.Message, arg ...string) {
|
||||
_wx_config(m, "some")
|
||||
}},
|
||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Push(APPID, m.Conf(LOGIN, kit.Keys(kit.MDB_META, APPID)))
|
||||
m.Echo(m.Conf(LOGIN, kit.Keys(kit.MDB_META, APPID)))
|
||||
}},
|
||||
|
||||
"menu": {Name: "menu name auto", Help: "菜单", Action: map[string]*ice.Action{
|
||||
MENU: {Name: "menu name auto", Help: "菜单", Action: map[string]*ice.Action{
|
||||
mdb.CREATE: {Name: "create", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
share := m.Cmdx(web.SHARE, mdb.CREATE, kit.MDB_TYPE, "login")
|
||||
kit.Fetch(m.Confv(LOGIN, "meta.menu"), func(index int, value map[string]interface{}) {
|
||||
share := m.Cmdx(web.SHARE, mdb.CREATE, kit.MDB_TYPE, web.LOGIN)
|
||||
kit.Fetch(m.Confv(LOGIN, kit.Keym(MENU)), func(index int, value map[string]interface{}) {
|
||||
m.Push("", value, kit.Split("title,spark,image"))
|
||||
m.Push(wiki.REFER, kit.MergeURL(kit.Format(value[wiki.REFER]), web.SHARE, share))
|
||||
})
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
kit.Fetch(m.Confv(LOGIN, "meta.menu"), func(index int, value map[string]interface{}) {
|
||||
kit.Fetch(m.Confv(LOGIN, kit.Keym(MENU)), func(index int, value map[string]interface{}) {
|
||||
m.Push("", value, kit.Split("title,spark,image,refer"))
|
||||
})
|
||||
}},
|
||||
|
||||
"/login/": {Name: "/login/", Help: "认证", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
check := kit.Sort([]string{m.Conf(LOGIN, "meta.token"), m.Option("timestamp"), m.Option("nonce")})
|
||||
check := kit.Sort([]string{m.Conf(LOGIN, kit.Keym(TOKEN)), m.Option("timestamp"), m.Option("nonce")})
|
||||
if b := sha1.Sum([]byte(strings.Join(check, ""))); m.Warn(m.Option("signature") != hex.EncodeToString(b[:]), ice.ErrNotRight) {
|
||||
return // 验证失败
|
||||
}
|
||||
@ -191,21 +198,20 @@ var Index = &ice.Context{Name: WX, Help: "公众号",
|
||||
switch m.Option("MsgType") {
|
||||
case "event":
|
||||
switch m.Option("Event") {
|
||||
case "subscribe":
|
||||
// 应用列表
|
||||
_wx_action(m.Cmdy("menu", mdb.CREATE))
|
||||
case "unsubscribe":
|
||||
case "subscribe": // 关注事件
|
||||
_wx_action(m.Cmdy(MENU, mdb.CREATE))
|
||||
case "unsubscribe": // 取关事件
|
||||
}
|
||||
|
||||
case "text":
|
||||
case kit.MDB_TEXT:
|
||||
if cmds := kit.Split(m.Option("Content")); m.Warn(!m.Right(cmds), ice.ErrNotRight) {
|
||||
_wx_action(m.Cmdy("menu", mdb.CREATE))
|
||||
_wx_action(m.Cmdy(MENU, mdb.CREATE))
|
||||
break // 没有权限
|
||||
} else {
|
||||
switch cmds[0] {
|
||||
case "menu":
|
||||
case MENU:
|
||||
// 应用列表
|
||||
_wx_action(m.Cmdy("menu", mdb.CREATE))
|
||||
_wx_action(m.Cmdy(MENU, mdb.CREATE))
|
||||
|
||||
default:
|
||||
// 执行命令
|
||||
@ -216,7 +222,7 @@ var Index = &ice.Context{Name: WX, Help: "公众号",
|
||||
}
|
||||
|
||||
// 返回结果
|
||||
_wx_reply(m, "text")
|
||||
_wx_reply(m, kit.MDB_TEXT)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -225,3 +231,11 @@ var Index = &ice.Context{Name: WX, Help: "公众号",
|
||||
}
|
||||
|
||||
func init() { chat.Index.Register(Index, &web.Frame{}) }
|
||||
|
||||
var text = `<xml>
|
||||
<FromUserName><![CDATA[{{.Option "ToUserName"}}]]></FromUserName>
|
||||
<ToUserName><![CDATA[{{.Option "FromUserName"}}]]></ToUserName>
|
||||
<CreateTime>{{.Option "CreateTime"}}</CreateTime>
|
||||
<MsgType><![CDATA[text]]></MsgType>
|
||||
<Content><![CDATA[{{.Result}}]]></Content>
|
||||
</xml>`
|
||||
|
@ -6,7 +6,6 @@ refer `
|
||||
源码 https://github.com/shylinux/icebergs/blob/master/misc/wx/wx.go
|
||||
`
|
||||
image qrcode `https://weixin.qq.com`
|
||||
spark
|
||||
|
||||
chapter "应用"
|
||||
field scan web.chat.scan
|
||||
|
Loading…
x
Reference in New Issue
Block a user