forked from x/icebergs
opt chat.user
This commit is contained in:
parent
40b4e1756a
commit
0302e97674
@ -17,13 +17,11 @@ func _user_list(m *ice.Message) {
|
||||
m.Sort(USERNAME)
|
||||
}
|
||||
func _user_login(m *ice.Message, name, word string) (ok bool) {
|
||||
m.Debug("what %v %v", name, word)
|
||||
if m.Richs(USER, nil, name, nil) == nil {
|
||||
_user_create(m, name, "")
|
||||
}
|
||||
|
||||
m.Richs(USER, nil, name, func(key string, value map[string]interface{}) {
|
||||
m.Debug("what %v %v", name, word)
|
||||
if kit.Format(value[PASSWORD]) == "" {
|
||||
ok, value[PASSWORD] = true, word
|
||||
} else if value[PASSWORD] == word {
|
||||
|
@ -51,7 +51,9 @@ var Index = &ice.Context{Name: "ctx", Help: "配置模块",
|
||||
} else {
|
||||
m.Search(arg[0]+".", func(p *ice.Context, s *ice.Context, key string) {
|
||||
msg := m.Spawn(s)
|
||||
switch arg[1] {
|
||||
switch kit.Select(CONTEXT, arg, 1) {
|
||||
case CONTEXT:
|
||||
_context_list(msg, true)
|
||||
case COMMAND:
|
||||
msg.Cmdy(COMMAND, arg[0], arg[2:])
|
||||
case CONFIG:
|
||||
|
@ -29,12 +29,12 @@ func _serve_login(msg *ice.Message, cmds []string, w http.ResponseWriter, r *htt
|
||||
|
||||
if !msg.Options(ice.MSG_USERNAME) && tcp.IPIsLocal(msg, msg.Option(ice.MSG_USERIP)) {
|
||||
// 自动认证
|
||||
if aaa.UserLogin(msg, cli.UserName, cli.PassWord) {
|
||||
if strings.HasPrefix(msg.Option(ice.MSG_USERUA), "Mozilla/5.0") {
|
||||
// msg.Option(ice.MSG_SESSID, aaa.SessCreate(msg, msg.Option(ice.MSG_USERNAME), msg.Option(ice.MSG_USERROLE)))
|
||||
// Render(msg, "cookie", msg.Option(ice.MSG_SESSID))
|
||||
}
|
||||
}
|
||||
// if aaa.UserLogin(msg, cli.UserName, cli.PassWord) {
|
||||
// if strings.HasPrefix(msg.Option(ice.MSG_USERUA), "Mozilla/5.0") {
|
||||
// // msg.Option(ice.MSG_SESSID, aaa.SessCreate(msg, msg.Option(ice.MSG_USERNAME), msg.Option(ice.MSG_USERROLE)))
|
||||
// // Render(msg, "cookie", msg.Option(ice.MSG_SESSID))
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
if _, ok := msg.Target().Commands[LOGIN]; ok {
|
||||
@ -234,6 +234,10 @@ func init() {
|
||||
"black", kit.Dict(),
|
||||
"white", kit.Dict(
|
||||
"header", true,
|
||||
"river", true,
|
||||
"action", true,
|
||||
"footer", true,
|
||||
|
||||
"login", true,
|
||||
"share", true,
|
||||
"space", true,
|
||||
|
@ -253,32 +253,32 @@ func _trash(m *ice.Message, arg ...string) {
|
||||
}
|
||||
}
|
||||
|
||||
func ShareCreate(m *ice.Message, kind, name, text string, arg ...string) string {
|
||||
return _share_create(m, kind, name, text, arg...)
|
||||
}
|
||||
|
||||
const SHARE = "share"
|
||||
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{
|
||||
Configs: map[string]*ice.Config{
|
||||
SHARE: {Name: "share", Help: "共享链", Value: kit.Data(
|
||||
"template", share_template, "expire", "72h",
|
||||
"limit", 10,
|
||||
"expire", "72h", "template", share_template,
|
||||
)},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
SHARE: {Name: "share share=auto auto", Help: "共享链", Action: map[string]*ice.Action{
|
||||
mdb.CREATE: {Name: "create type name text arg...", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
|
||||
_share_create(m, arg[0], arg[1], arg[2], arg[3:]...)
|
||||
SHARE: {Name: "share hash auto", Help: "共享链", Action: map[string]*ice.Action{
|
||||
mdb.CREATE: {Name: "create type name text", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.INSERT, SHARE, "", mdb.HASH,
|
||||
aaa.USERROLE, m.Option(ice.MSG_USERROLE), aaa.USERNAME, m.Option(ice.MSG_USERNAME),
|
||||
"river", m.Option(ice.MSG_RIVER), "storm", m.Option(ice.MSG_STORM),
|
||||
kit.MDB_TIME, m.Time(m.Conf(SHARE, "meta.expire")), arg)
|
||||
}},
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.DELETE, SHARE, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if len(arg) < 2 {
|
||||
_share_list(m, kit.Select("", arg, 0))
|
||||
return
|
||||
}
|
||||
_share_create(m, arg[0], arg[1], arg[2], arg[3:]...)
|
||||
m.Option(mdb.FIELDS, "time,hash,userrole,username,river,storm,type,name,text")
|
||||
m.Cmdy(mdb.SELECT, SHARE, "", mdb.HASH, kit.MDB_HASH, arg)
|
||||
m.PushAction("删除")
|
||||
}},
|
||||
|
||||
"/share/local/": {Name: "/share/local/", Help: "共享链", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
_share_local(m, arg...)
|
||||
}},
|
||||
|
@ -5,7 +5,6 @@ import (
|
||||
ice "github.com/shylinux/icebergs"
|
||||
aaa "github.com/shylinux/icebergs/base/aaa"
|
||||
"github.com/shylinux/icebergs/base/cli"
|
||||
"github.com/shylinux/icebergs/base/gdb"
|
||||
"github.com/shylinux/icebergs/base/mdb"
|
||||
kit "github.com/shylinux/toolkits"
|
||||
"github.com/shylinux/toolkits/task"
|
||||
@ -13,6 +12,7 @@ import (
|
||||
"math/rand"
|
||||
"net"
|
||||
"net/url"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
@ -41,7 +41,7 @@ func _space_dial(m *ice.Message, dev, name string, arg ...string) {
|
||||
|
||||
host := kit.Format(client["hostname"])
|
||||
proto := kit.Select("ws", "wss", client["protocol"] == "https")
|
||||
uri := kit.MergeURL(proto+"://"+host+"/space/", "name", name, "type", cli.NodeType)
|
||||
uri := kit.MergeURL(proto+"://"+host+"/space/", "name", name, "type", cli.NodeType, "share", os.Getenv("ctx_share"), "river", os.Getenv("ctx_river"))
|
||||
if u, e := url.Parse(uri); m.Assert(e) {
|
||||
|
||||
task.Put(dev, func(task *task.Task) error {
|
||||
@ -206,6 +206,10 @@ const (
|
||||
WORKER = "worker"
|
||||
)
|
||||
|
||||
const (
|
||||
SPACE_START = "space.start"
|
||||
SPACE_CLOSE = "space.close"
|
||||
)
|
||||
const SPACE = "space"
|
||||
|
||||
func init() {
|
||||
@ -243,9 +247,11 @@ func init() {
|
||||
if s, e := websocket.Upgrade(m.W, m.R, nil, m.Confi(SPACE, "meta.buffer.r"), m.Confi(SPACE, "meta.buffer.w")); m.Assert(e) {
|
||||
name := m.Option(kit.MDB_NAME, strings.Replace(kit.Select(m.Option(ice.MSG_USERADDR), m.Option(kit.MDB_NAME)), ".", "_", -1))
|
||||
kind := kit.Select(WORKER, m.Option(kit.MDB_TYPE))
|
||||
share := m.Option("share")
|
||||
river := m.Option("river")
|
||||
|
||||
// 添加节点
|
||||
h := m.Rich(SPACE, nil, kit.Dict("socket", s,
|
||||
h := m.Rich(SPACE, nil, kit.Dict("socket", s, "share", share, "river", river,
|
||||
kit.MDB_TYPE, kind, kit.MDB_NAME, name, kit.MDB_TEXT, s.RemoteAddr().String(),
|
||||
))
|
||||
m.Log_CREATE(SPACE, name)
|
||||
@ -257,8 +263,8 @@ func init() {
|
||||
m.Event(DREAM_START, name)
|
||||
defer m.Event(DREAM_STOP, name)
|
||||
default:
|
||||
m.Event(gdb.SPACE_START, kind, name)
|
||||
defer m.Event(gdb.SPACE_CLOSE, kind, name)
|
||||
m.Event(SPACE_START, "type", kind, "name", name, "share", share, "river", river)
|
||||
defer m.Event(SPACE_CLOSE, "type", kind, "name", name, "share", share, "river", river)
|
||||
}
|
||||
_space_handle(m, false, m.Target().Server().(*Frame).send, s, name)
|
||||
m.Log(ice.LOG_CLOSE, "%s: %s", name, kit.Format(m.Confv(SPACE, kit.Keys(kit.MDB_HASH, h))))
|
||||
|
@ -72,7 +72,7 @@ func _spide_create(m *ice.Message, name, address string, arg ...string) {
|
||||
dir, file := path.Split(uri.EscapedPath())
|
||||
m.Rich(SPIDE, nil, kit.Dict(
|
||||
"cookie", kit.Dict(), "header", kit.Dict(), "client", kit.Dict(
|
||||
"share", ShareCreate(m.Spawn(), SPIDE, name, address),
|
||||
// "share", ShareCreate(m.Spawn(), SPIDE, name, address),
|
||||
"name", name, "url", address, "method", "POST",
|
||||
"protocol", uri.Scheme, "hostname", uri.Host,
|
||||
"path", dir, "file", file, "query", uri.RawQuery,
|
||||
|
@ -248,6 +248,9 @@ func init() {
|
||||
m.Cmdy(ctx.COMMAND, arg[0])
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if m.Warn(m.Option(ice.MSG_USERNAME) == "", ice.ErrNotLogin) {
|
||||
return
|
||||
}
|
||||
if m.Warn(!_action_right(m, m.Option(ice.MSG_RIVER, arg[0]), m.Option(ice.MSG_STORM, arg[1])), ice.ErrNotAuth) {
|
||||
return
|
||||
}
|
||||
|
@ -16,6 +16,7 @@ var Index = &ice.Context{Name: CHAT, Help: "聊天中心",
|
||||
"base", kit.Dict(
|
||||
"info", []interface{}{
|
||||
"web.chat.info",
|
||||
"web.chat.code",
|
||||
"web.chat.node",
|
||||
"web.chat.tool",
|
||||
"web.chat.user",
|
||||
@ -27,6 +28,8 @@ var Index = &ice.Context{Name: CHAT, Help: "聊天中心",
|
||||
},
|
||||
),
|
||||
))
|
||||
m.Watch(web.SPACE_START, m.Prefix(NODE))
|
||||
m.Watch(web.SPACE_CLOSE, m.Prefix(NODE))
|
||||
}},
|
||||
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Save(RIVER)
|
||||
|
@ -10,6 +10,15 @@ import (
|
||||
)
|
||||
|
||||
func _river_list(m *ice.Message) {
|
||||
if m.Option("share") != "" && m.Option("share") != "" {
|
||||
m.Option(ice.MSG_RIVER, m.Option("river"))
|
||||
if m.Cmd(CODE, m.Option("share")).Append(kit.MDB_TYPE) == USER {
|
||||
if m.Cmd(USER, m.Option(ice.MSG_USERNAME)).Append(ice.MSG_USERNAME) == "" {
|
||||
m.Cmd(USER, mdb.INSERT, aaa.USERNAME, m.Option(ice.MSG_USERNAME))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m.Set(ice.MSG_OPTION, kit.MDB_KEY)
|
||||
m.Set(ice.MSG_OPTION, kit.MDB_NAME)
|
||||
|
||||
@ -20,13 +29,14 @@ func _river_list(m *ice.Message) {
|
||||
}
|
||||
m.Richs(RIVER, nil, kit.MDB_FOREACH, func(key string, value map[string]interface{}) {
|
||||
m.Richs(RIVER, kit.Keys(kit.MDB_HASH, key, USER), m.Option(ice.MSG_USERNAME), func(k string, val map[string]interface{}) {
|
||||
m.Push(key, value[kit.MDB_META], []string{kit.MDB_KEY, kit.MDB_NAME}, val[kit.MDB_META])
|
||||
m.Push(key, value[kit.MDB_META], []string{kit.MDB_HASH, kit.MDB_NAME}, val[kit.MDB_META])
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
const (
|
||||
INFO = "info"
|
||||
CODE = "code"
|
||||
NODE = "node"
|
||||
TOOL = "tool"
|
||||
USER = "user"
|
||||
@ -41,96 +51,136 @@ func init() {
|
||||
Commands: map[string]*ice.Command{
|
||||
INFO: {Name: "info auto", Help: "信息", Action: map[string]*ice.Action{
|
||||
mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.EXPORT, RIVER, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH), arg)
|
||||
m.Cmdy(mdb.MODIFY, RIVER, "", mdb.HASH, kit.MDB_HASH, m.Option(ice.MSG_RIVER), arg)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Option(mdb.FIELDS, mdb.DETAIL)
|
||||
m.Cmdy(mdb.SELECT, RIVER, "", mdb.HASH, kit.MDB_HASH, m.Option(ice.MSG_RIVER))
|
||||
}},
|
||||
NODE: {Name: "node hash=auto auto 添加 启动", Help: "设备", Action: map[string]*ice.Action{
|
||||
"invite": {Name: "invite", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
CODE: {Name: "code hash auto 添加", Help: "共享", Action: map[string]*ice.Action{
|
||||
mdb.CREATE: {Name: "create type=node,user name text", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.INSERT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), CODE), mdb.HASH,
|
||||
aaa.USERROLE, m.Option(ice.MSG_USERROLE), aaa.USERNAME, m.Option(ice.MSG_USERNAME),
|
||||
kit.MDB_TIME, m.Time("72h"), arg)
|
||||
}},
|
||||
mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.MODIFY, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), CODE), 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, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), CODE), mdb.HASH,
|
||||
kit.MDB_HASH, m.Option(kit.MDB_HASH))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Option(mdb.FIELDS, "time,hash,userrole,username,type,name,text")
|
||||
m.Cmdy(mdb.SELECT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), CODE), mdb.HASH, kit.MDB_HASH, arg)
|
||||
m.PushAction("删除")
|
||||
}},
|
||||
NODE: {Name: "node name ctx cmd auto 邀请", Help: "设备", Action: map[string]*ice.Action{
|
||||
"invite": {Name: "invite", Help: "邀请", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(web.SHARE, m.Cmdx(CODE, mdb.CREATE, "type", NODE))
|
||||
m.Cmdy("web.code.publish", "contexts", "tool")
|
||||
}},
|
||||
"start": {Name: "start", Help: "启动", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy("web.code.publish", "contexts", "tool")
|
||||
web.SPACE_START: {Name: "start type name share river", Help: "启动", Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Option(ice.MSG_RIVER, m.Option(RIVER)) == "" {
|
||||
return
|
||||
}
|
||||
if msg := m.Cmd(CODE, m.Option("share")); msg.Append(kit.MDB_TYPE) == NODE {
|
||||
m.Cmdy(mdb.INSERT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(RIVER), NODE), mdb.HASH, arg)
|
||||
}
|
||||
}},
|
||||
mdb.INSERT: {Name: "insert route", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.INSERT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), NODE), mdb.HASH, arg)
|
||||
}},
|
||||
mdb.DELETE: {Name: "delete", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.DELETE, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), NODE), mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH))
|
||||
web.SPACE_CLOSE: {Name: "close", Help: "关闭", Hand: func(m *ice.Message, arg ...string) {
|
||||
}},
|
||||
|
||||
// mdb.INSERT: {Name: "insert route", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
// m.Cmdy(mdb.INSERT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), NODE), mdb.HASH, arg)
|
||||
// }},
|
||||
// mdb.DELETE: {Name: "delete", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
// m.Cmdy(mdb.DELETE, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), NODE), mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH))
|
||||
// }},
|
||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(web.ROUTE)
|
||||
}},
|
||||
mdb.DELETE: {Name: "delete", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.DELETE, RIVER, kit.Keys(kit.MDB_HASH, m.Option(RIVER), NODE), mdb.HASH, kit.MDB_NAME, m.Option(kit.MDB_NAME))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Option(mdb.FIELDS, "time,hash,route")
|
||||
m.Cmdy(mdb.SELECT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), NODE), mdb.HASH)
|
||||
m.Table(func(index int, value map[string]string, head []string) {
|
||||
m.Push(kit.MDB_LINK, kit.MergeURL(m.Option(ice.MSG_USERWEB), "pod", kit.Keys(m.Option("pod"), value["route"])))
|
||||
})
|
||||
m.PushAction("删除")
|
||||
if len(arg) == 0 {
|
||||
m.Option(mdb.FIELDS, "time,type,name,share")
|
||||
m.Cmdy(mdb.SELECT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), NODE), mdb.HASH)
|
||||
m.PushAction("删除")
|
||||
return
|
||||
}
|
||||
m.Cmdy(web.ROUTE, arg)
|
||||
}},
|
||||
TOOL: {Name: "tool key auto 添加 创建", Help: "工具", Action: map[string]*ice.Action{
|
||||
TOOL: {Name: "tool hash auto 添加 创建", Help: "工具", Action: map[string]*ice.Action{
|
||||
mdb.CREATE: {Name: "create type=public,protected,private name=hi text=hello", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.INSERT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL), mdb.HASH, arg)
|
||||
}},
|
||||
mdb.INSERT: {Name: "insert pod ctx cmd help", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.INSERT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL, kit.MDB_HASH, m.Option(ice.MSG_STORM)), mdb.LIST, arg)
|
||||
mdb.INSERT: {Name: "insert hash pod ctx cmd help", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.INSERT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL, kit.MDB_HASH, m.Option(kit.MDB_HASH)), mdb.LIST, arg[2:])
|
||||
}},
|
||||
mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Option(kit.MDB_ID) != "" {
|
||||
m.Cmdy(mdb.MODIFY, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL, kit.MDB_HASH, m.Option(ice.MSG_STORM)), mdb.LIST, kit.MDB_ID, m.Option(kit.MDB_ID), arg)
|
||||
m.Cmdy(mdb.MODIFY, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL, kit.MDB_HASH, m.Option(kit.MDB_HASH)), mdb.LIST, kit.MDB_ID, m.Option(kit.MDB_ID), arg)
|
||||
} else {
|
||||
m.Cmdy(mdb.MODIFY, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL), 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, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL), mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH))
|
||||
}},
|
||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
switch arg[0] {
|
||||
case "pod":
|
||||
_storm_list(m, m.Option(ice.MSG_RIVER))
|
||||
case "ctx":
|
||||
m.Cmdy(ctx.CONTEXT)
|
||||
case "cmd", "help":
|
||||
m.Cmdy(ctx.CONTEXT, m.Option("ctx"), ctx.COMMAND)
|
||||
case "hash":
|
||||
m.Cmd(TOOL).Table(func(index int, value map[string]string, head []string) {
|
||||
m.Push("hash", value["hash"])
|
||||
m.Push("name", value["name"])
|
||||
})
|
||||
case POD:
|
||||
m.Cmdy(web.ROUTE)
|
||||
case CTX:
|
||||
m.Cmd(ctx.CONTEXT, "web").Table(func(index int, value map[string]string, head []string) {
|
||||
m.Push(CTX, kit.Keys(kit.Select("", value["ups"], value["ups"] != "shy"), value["name"]))
|
||||
m.Push("help", value["help"])
|
||||
})
|
||||
case CMD, "help":
|
||||
m.Cmd(ctx.CONTEXT, m.Option(CTX), ctx.COMMAND).Table(func(index int, value map[string]string, head []string) {
|
||||
m.Push(CMD, value["key"])
|
||||
m.Push("name", value["name"])
|
||||
m.Push("help", value["help"])
|
||||
})
|
||||
}
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
m.Option(mdb.FIELDS, "time,key,name,count")
|
||||
m.Option(mdb.FIELDS, "time,hash,name,count")
|
||||
m.Cmdy(mdb.SELECT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL), mdb.HASH)
|
||||
} else {
|
||||
m.Option(mdb.FIELDS, "time,id,pod,ctx,cmd,help")
|
||||
m.Cmdy(mdb.SELECT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL, kit.MDB_HASH, arg[0]), mdb.LIST, kit.MDB_ID, arg[1:])
|
||||
if len(m.Appendv(CMD)) == 0 {
|
||||
m.Push("time", m.Time())
|
||||
m.Push("id", "")
|
||||
m.Push("pod", "")
|
||||
m.Push("ctx", "")
|
||||
m.Push("cmd", arg[1])
|
||||
m.Push("help", "")
|
||||
}
|
||||
m.PushAction("删除")
|
||||
return
|
||||
}
|
||||
|
||||
m.Option(mdb.FIELDS, "time,id,pod,ctx,cmd,help")
|
||||
m.Cmdy(mdb.SELECT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL, kit.MDB_HASH, arg[0]), mdb.LIST, kit.MDB_ID, arg[1:])
|
||||
if len(m.Appendv(CMD)) == 0 && len(arg) > 1 {
|
||||
m.Push("cmd", arg[1])
|
||||
}
|
||||
m.PushAction("删除")
|
||||
}},
|
||||
USER: {Name: "user hash=auto auto 添加 邀请", Help: "用户", Action: map[string]*ice.Action{
|
||||
USER: {Name: "user username auto 邀请", Help: "用户", Action: map[string]*ice.Action{
|
||||
"invite": {Name: "invite", Help: "邀请", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy("web.wiki.spark", "inner", kit.MergeURL(m.Option(ice.MSG_USERWEB), "river", m.Option(ice.MSG_RIVER)))
|
||||
m.Cmdy("web.wiki.image", "qrcode", kit.MergeURL(m.Option(ice.MSG_USERWEB), "river", m.Option(ice.MSG_RIVER)))
|
||||
share := m.Option(web.SHARE, m.Cmdx(CODE, mdb.CREATE, kit.MDB_TYPE, USER))
|
||||
m.Cmdy("web.wiki.spark", "inner", kit.MergeURL(m.Option(ice.MSG_USERWEB), "river", m.Option(ice.MSG_RIVER), "share", share))
|
||||
m.Cmdy("web.wiki.image", "qrcode", kit.MergeURL(m.Option(ice.MSG_USERWEB), "river", m.Option(ice.MSG_RIVER), "share", share))
|
||||
m.Render("")
|
||||
}},
|
||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(aaa.USER)
|
||||
}},
|
||||
mdb.INSERT: {Name: "insert username", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.INSERT: {Name: "insert", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.INSERT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), USER), mdb.HASH, arg)
|
||||
}},
|
||||
mdb.DELETE: {Name: "delete", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.DELETE, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), USER), mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH))
|
||||
m.Cmdy(mdb.DELETE, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), USER), mdb.HASH, aaa.USERNAME, m.Option(aaa.USERNAME))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Option(mdb.FIELDS, "time,hash,username")
|
||||
m.Cmdy(mdb.SELECT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), USER), mdb.HASH)
|
||||
m.Option(mdb.FIELDS, "time,username")
|
||||
m.Cmdy(mdb.SELECT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), USER), mdb.HASH, aaa.USERNAME, arg)
|
||||
m.Table(func(index int, value map[string]string, head []string) {
|
||||
m.Push(aaa.USERZONE, aaa.UserZone(m, value[aaa.USERNAME]))
|
||||
m.Push(aaa.USERNICK, aaa.UserNick(m, value[aaa.USERNAME]))
|
||||
@ -144,14 +194,15 @@ func init() {
|
||||
m.Echo(h)
|
||||
|
||||
m.Conf(RIVER, kit.Keys(kit.MDB_HASH, h, USER, kit.MDB_META, kit.MDB_SHORT), aaa.USERNAME)
|
||||
m.Conf(RIVER, kit.Keys(kit.MDB_HASH, h, NODE, kit.MDB_META, kit.MDB_SHORT), kit.MDB_NAME)
|
||||
m.Cmd(USER, mdb.INSERT, aaa.USERNAME, m.Option(ice.MSG_USERNAME))
|
||||
|
||||
kit.Fetch(m.Confv(RIVER, kit.Keys("meta.template", "base")), func(storm string, value interface{}) {
|
||||
h := m.Cmdx(TOOL, mdb.CREATE, kit.MDB_TYPE, "public", kit.MDB_NAME, storm, kit.MDB_TEXT, storm)
|
||||
m.Option(ice.MSG_STORM, h)
|
||||
|
||||
kit.Fetch(value, func(index int, value string) {
|
||||
m.Search(value, func(p *ice.Context, s *ice.Context, key string, cmd *ice.Command) {
|
||||
m.Cmd(TOOL, mdb.INSERT, "pod", "", "ctx", s.Cap(ice.CTX_FOLLOW), "cmd", key, "help", kit.Simple(cmd.Help)[0])
|
||||
m.Cmd(TOOL, mdb.INSERT, kit.MDB_HASH, h, "ctx", s.Cap(ice.CTX_FOLLOW), "cmd", key, "help", kit.Simple(cmd.Help)[0])
|
||||
})
|
||||
})
|
||||
})
|
||||
@ -174,13 +225,16 @@ func init() {
|
||||
}},
|
||||
|
||||
"/river": {Name: "/river", Help: "小河流", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if m.Warn(m.Option(ice.MSG_USERNAME) == "", ice.ErrNotLogin) {
|
||||
return
|
||||
}
|
||||
if len(arg) == 0 {
|
||||
_river_list(m)
|
||||
return
|
||||
}
|
||||
if len(arg) == 1 {
|
||||
if len(arg) > 1 && arg[1] == TOOL {
|
||||
m.Option(ice.MSG_RIVER, arg[0])
|
||||
m.Cmdy(TOOL, arg[1:])
|
||||
m.Cmdy(TOOL, arg[2:])
|
||||
return
|
||||
}
|
||||
if !m.Warn(!m.Right(RIVER, arg), ice.ErrNotAuth) {
|
||||
|
@ -98,7 +98,7 @@ export ctx_dev={{.Option "httphost"}} ctx_temp=$(mktemp); curl -sL $ctx_dev >$ct
|
||||
"tool", `
|
||||
# 生产环境
|
||||
mkdir contexts; cd contexts
|
||||
export ctx_dev={{.Option "httphost"}} ctx_share={{.Option "share"}} ctx_temp=$(mktemp); curl -sL $ctx_dev >$ctx_temp; source $ctx_temp dev
|
||||
export ctx_dev={{.Option "httphost"}} ctx_river={{.Option "sess.river"}} ctx_share={{.Option "share"}} ctx_temp=$(mktemp); curl -sL $ctx_dev >$ctx_temp; source $ctx_temp ice
|
||||
`,
|
||||
)
|
||||
|
||||
|
1
logs.go
1
logs.go
@ -9,6 +9,7 @@ import (
|
||||
)
|
||||
|
||||
var ErrWarn = "warn: "
|
||||
var ErrNotLogin = "not login: "
|
||||
var ErrNotAuth = "not auth: "
|
||||
var ErrNotJoin = "not join: "
|
||||
var ErrNotFound = "not found: "
|
||||
|
@ -53,8 +53,8 @@ func init() {
|
||||
}},
|
||||
"/crx": {Name: "/crx", Help: "插件", Action: map[string]*ice.Action{
|
||||
web.HISTORY: {Name: "history", Help: "历史记录", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(web.SPIDE, web.SPIDE_SELF, "/code/chrome/sync",
|
||||
kit.MDB_NAME, arg[1], kit.MDB_TEXT, arg[2])
|
||||
// m.Cmdy(web.SPIDE, web.SPIDE_SELF, "/code/chrome/sync",
|
||||
// kit.MDB_NAME, arg[1], kit.MDB_TEXT, arg[2])
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
}},
|
||||
|
Loading…
x
Reference in New Issue
Block a user