mirror of
https://shylinux.com/x/icebergs
synced 2025-04-26 01:24:05 +08:00
opt chat
This commit is contained in:
parent
2f6860b817
commit
4a680f0afc
@ -30,7 +30,9 @@ func _config_save(m *ice.Message, name string, arg ...string) {
|
||||
msg := m.Spawn(m.Source())
|
||||
data := map[string]interface{}{}
|
||||
for _, k := range arg {
|
||||
data[k] = msg.Confv(k)
|
||||
if v := msg.Confv(k); v != "" {
|
||||
data[k] = v
|
||||
}
|
||||
}
|
||||
|
||||
// 保存配置
|
||||
@ -110,6 +112,10 @@ func init() {
|
||||
GROW: {Name: "grow", Help: "成长", Hand: func(m *ice.Message, arg ...string) {
|
||||
_config_grow(m, arg[0], arg[1], arg[2:]...)
|
||||
}},
|
||||
"clear": {Name: "clear", Help: "清空", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Conf(arg[0], "", "")
|
||||
m.Cmd("exit", 1)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
_config_list(m)
|
||||
|
@ -45,7 +45,7 @@ func _dream_show(m *ice.Message, name string) {
|
||||
|
||||
// 任务模板
|
||||
if m.Option(kit.MDB_TEMPLATE) != "" {
|
||||
for _, file := range []string{ice.ETC_MISS, ice.SRC_MAIN, ice.SRC_MAIN_GO, ice.GO_MOD, ice.MAKEFILE} {
|
||||
for _, file := range []string{ice.ETC_MISS, ice.SRC_MAIN_SHY, ice.SRC_MAIN_GO, ice.GO_MOD, ice.MAKEFILE} {
|
||||
if _, e := os.Stat(path.Join(p, file)); os.IsNotExist(e) {
|
||||
switch m.Cmdy(nfs.COPY, path.Join(p, file), path.Join(m.Option(kit.MDB_TEMPLATE), file)); file {
|
||||
case ice.GO_MOD:
|
||||
@ -112,13 +112,13 @@ func init() {
|
||||
m.Cmdy(SPACE, m.Option(ROUTE), "web.code.autogen", mdb.CREATE, arg)
|
||||
m.ProcessInner()
|
||||
}},
|
||||
tcp.START: {Name: "start name repos", Help: "启动", Hand: func(m *ice.Message, arg ...string) {
|
||||
cli.START: {Name: "start name repos", Help: "启动", Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Option(kit.MDB_NAME) == SPIDE_SELF {
|
||||
m.Option(kit.MDB_NAME, "")
|
||||
}
|
||||
_dream_show(m, m.Option(kit.MDB_NAME, kit.Select(path.Base(m.Option(kit.SSH_REPOS)), m.Option(kit.MDB_NAME))))
|
||||
}},
|
||||
tcp.STOP: {Name: "stop", Help: "停止", Hand: func(m *ice.Message, arg ...string) {
|
||||
cli.STOP: {Name: "stop", Help: "停止", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(SPACE, m.Option(kit.MDB_NAME), "exit", "0")
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
|
@ -319,7 +319,7 @@ func init() {
|
||||
Index.Merge(&ice.Context{
|
||||
Configs: map[string]*ice.Config{
|
||||
SPIDE: {Name: SPIDE, Help: "蜘蛛侠", Value: kit.Data(
|
||||
kit.MDB_SHORT, CLIENT_NAME, kit.MDB_SHORT, "time,client.name,client.url",
|
||||
kit.MDB_SHORT, CLIENT_NAME, kit.MDB_FIELD, "time,client.name,client.url",
|
||||
)},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
|
18
conf.go
18
conf.go
@ -1,5 +1,9 @@
|
||||
package ice
|
||||
|
||||
const (
|
||||
SP = " "
|
||||
NL = "\n"
|
||||
)
|
||||
const ( // MOD
|
||||
MOD_SP = " "
|
||||
MOD_NL = "\n"
|
||||
@ -69,13 +73,13 @@ const ( // DIR
|
||||
ETC_MISS = "etc/miss.sh"
|
||||
ETC_MISS_SH = "etc/miss.sh"
|
||||
|
||||
SRC_MAIN = "src/main.shy"
|
||||
SRC_MAIN_GO = "src/main.go"
|
||||
SRC_VERSION = "src/version.go"
|
||||
SRC_BINPACK = "src/binpack.go"
|
||||
MAKEFILE = "makefile"
|
||||
GO_MOD = "go.mod"
|
||||
GO_SUM = "go.sum"
|
||||
SRC_MAIN_SHY = "src/main.shy"
|
||||
SRC_MAIN_GO = "src/main.go"
|
||||
SRC_VERSION = "src/version.go"
|
||||
SRC_BINPACK = "src/binpack.go"
|
||||
MAKEFILE = "makefile"
|
||||
GO_MOD = "go.mod"
|
||||
GO_SUM = "go.sum"
|
||||
|
||||
CTX_DEBUG = "ctx_debug"
|
||||
CTX_DEV = "ctx_dev"
|
||||
|
@ -48,7 +48,7 @@ func _action_domain(m *ice.Message, cmd string, arg ...string) (domain string) {
|
||||
func _action_right(m *ice.Message, river string, storm string) (ok bool) {
|
||||
if ok = true; m.Option(ice.MSG_USERROLE) == aaa.VOID {
|
||||
m.Richs(RIVER, "", river, func(key string, value map[string]interface{}) {
|
||||
if ok = m.Richs(RIVER, kit.Keys(kit.MDB_HASH, key, USER), m.Option(ice.MSG_USERNAME), nil) != nil; ok {
|
||||
if ok = m.Richs(RIVER, kit.Keys(kit.MDB_HASH, key, USERS), m.Option(ice.MSG_USERNAME), nil) != nil; ok {
|
||||
m.Log_AUTH(RIVER, river, STORM, storm)
|
||||
}
|
||||
})
|
||||
@ -148,61 +148,60 @@ const (
|
||||
const ACTION = "action"
|
||||
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{
|
||||
Configs: map[string]*ice.Config{
|
||||
ACTION: {Name: ACTION, Help: "应用", Value: kit.Data(DOMAIN, kit.Dict())},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
for _, cmd := range []string{
|
||||
"web.chat.meet.miss",
|
||||
"web.chat.meet.mate",
|
||||
"web.chat.location",
|
||||
"web.chat.paste",
|
||||
"web.chat.scan",
|
||||
"web.wiki.feel",
|
||||
"web.wiki.draw",
|
||||
"web.wiki.data",
|
||||
"web.wiki.word",
|
||||
"web.team.task",
|
||||
"web.team.plan",
|
||||
"web.mall.asset",
|
||||
"web.mall.salary",
|
||||
} {
|
||||
m.Conf(ACTION, kit.Keym(DOMAIN, cmd), ice.TRUE)
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
ACTION: {Name: ACTION, Help: "应用", Value: kit.Data(DOMAIN, kit.Dict())},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
for _, cmd := range []string{
|
||||
"web.chat.meet.miss",
|
||||
"web.chat.meet.mate",
|
||||
"web.chat.location",
|
||||
"web.chat.paste",
|
||||
"web.chat.scan",
|
||||
"web.wiki.feel",
|
||||
"web.wiki.draw",
|
||||
"web.wiki.data",
|
||||
"web.wiki.word",
|
||||
"web.team.task",
|
||||
"web.team.plan",
|
||||
"web.mall.asset",
|
||||
"web.mall.salary",
|
||||
} {
|
||||
m.Conf(ACTION, kit.Keym(DOMAIN, cmd), ice.TRUE)
|
||||
}
|
||||
}},
|
||||
"/action": {Name: "/action river storm action arg...", Help: "工作台", Action: map[string]*ice.Action{
|
||||
mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.MODIFY, RIVER, kit.Keys(kit.MDB_HASH, m.Option(RIVER), TOOL, kit.MDB_HASH, m.Option(STORM)), mdb.LIST,
|
||||
m.OptionSimple(kit.MDB_ID), arg)
|
||||
}},
|
||||
ctx.COMMAND: {Name: "command", Help: "命令", Hand: func(m *ice.Message, arg ...string) {
|
||||
for _, k := range arg {
|
||||
m.Cmdy(ctx.COMMAND, strings.TrimPrefix(k, "."))
|
||||
}
|
||||
}},
|
||||
"/action": {Name: "/action river storm action arg...", Help: "工作台", Action: map[string]*ice.Action{
|
||||
mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.MODIFY, RIVER, kit.Keys(kit.MDB_HASH, m.Option(RIVER), TOOL, kit.MDB_HASH, m.Option(STORM)), mdb.LIST,
|
||||
m.OptionSimple(kit.MDB_ID), arg)
|
||||
}},
|
||||
ctx.COMMAND: {Name: "command", Help: "命令", Hand: func(m *ice.Message, arg ...string) {
|
||||
for _, k := range arg {
|
||||
m.Cmdy(ctx.COMMAND, strings.TrimPrefix(k, "."))
|
||||
}
|
||||
}},
|
||||
SHARE: {Name: "share", Help: "共享", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_share(m, arg...)
|
||||
}},
|
||||
"_share": {Name: "_share", Help: "共享", Hand: func(m *ice.Message, arg ...string) {
|
||||
_action_share(m, arg...)
|
||||
}},
|
||||
}, 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, arg[0], arg[1]), ice.ErrNotRight) {
|
||||
return // 没有授权
|
||||
}
|
||||
|
||||
if len(arg) == 2 {
|
||||
_action_list(m, arg[0], arg[1])
|
||||
return //命令列表
|
||||
}
|
||||
|
||||
// 执行命令
|
||||
_action_show(m, arg[0], arg[1], arg[2], arg[3:]...)
|
||||
SHARE: {Name: "share", Help: "共享", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_share(m, arg...)
|
||||
}},
|
||||
}})
|
||||
"_share": {Name: "_share", Help: "共享", Hand: func(m *ice.Message, arg ...string) {
|
||||
_action_share(m, arg...)
|
||||
}},
|
||||
}, 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, arg[0], arg[1]), ice.ErrNotRight) {
|
||||
return // 没有授权
|
||||
}
|
||||
|
||||
if len(arg) == 2 {
|
||||
m.Option(MENUS, m.Conf(ACTION, kit.Keym(MENUS)))
|
||||
_action_list(m, arg[0], arg[1])
|
||||
return //命令列表
|
||||
}
|
||||
|
||||
// 执行命令
|
||||
_action_show(m, arg[0], arg[1], arg[2], arg[3:]...)
|
||||
}},
|
||||
}})
|
||||
}
|
||||
|
@ -1,45 +0,0 @@
|
||||
package chat
|
||||
|
||||
import (
|
||||
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/ssh"
|
||||
"github.com/shylinux/icebergs/base/web"
|
||||
kit "github.com/shylinux/toolkits"
|
||||
)
|
||||
|
||||
const AUTH = "auth"
|
||||
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{Commands: map[string]*ice.Command{
|
||||
AUTH: {Name: "auth hash auto create", 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, _river_key(m, AUTH), mdb.HASH,
|
||||
aaa.USERROLE, m.Option(ice.MSG_USERROLE), aaa.USERNAME, m.Option(ice.MSG_USERNAME),
|
||||
kit.MDB_TIME, m.Time("72h"), arg)
|
||||
}},
|
||||
mdb.INSERT: {Name: "insert river share", Help: "加入", Hand: func(m *ice.Message, arg ...string) {
|
||||
switch msg := m.Cmd(AUTH, m.Option(web.SHARE)); msg.Append(kit.MDB_TYPE) {
|
||||
case USER:
|
||||
m.Option(ice.MSG_RIVER, m.Option(RIVER))
|
||||
m.Cmdy(USER, mdb.INSERT, aaa.USERNAME, m.Option(ice.MSG_USERNAME))
|
||||
}
|
||||
}},
|
||||
mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.MODIFY, RIVER, _river_key(m, AUTH), mdb.HASH, m.OptionSimple(kit.MDB_HASH), arg)
|
||||
}},
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.DELETE, RIVER, _river_key(m, AUTH), mdb.HASH, m.OptionSimple(kit.MDB_HASH))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Fields(len(arg), "time,hash,userrole,username,type,name,text")
|
||||
if m.Cmdy(mdb.SELECT, RIVER, _river_key(m, AUTH), mdb.HASH, kit.MDB_HASH, arg); len(arg) > 0 {
|
||||
m.PushScript(ssh.SCRIPT, _river_url(m, web.SHARE, m.Option(web.SHARE)))
|
||||
m.PushQRCode(cli.QRCODE, _river_url(m, web.SHARE, m.Option(web.SHARE)))
|
||||
}
|
||||
m.PushAction(mdb.REMOVE)
|
||||
}},
|
||||
}})
|
||||
}
|
@ -25,9 +25,7 @@ func init() {
|
||||
m.Cmdy(ctx.COMMAND, arg)
|
||||
}},
|
||||
cli.RUN: {Name: "run", Help: "执行", Hand: func(m *ice.Message, arg ...string) {
|
||||
if !m.Warn(!m.Right(arg), ice.ErrNotRight) {
|
||||
m.Cmdy(arg)
|
||||
}
|
||||
m.Cmdy(arg)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
kit.Fetch(m.Confv(FOOTER, LEGAL), func(index int, value string) { m.Echo(value) })
|
||||
|
@ -1,10 +1,13 @@
|
||||
package chat
|
||||
|
||||
import (
|
||||
"path"
|
||||
|
||||
ice "github.com/shylinux/icebergs"
|
||||
"github.com/shylinux/icebergs/base/aaa"
|
||||
"github.com/shylinux/icebergs/base/ctx"
|
||||
"github.com/shylinux/icebergs/base/mdb"
|
||||
"github.com/shylinux/icebergs/base/nfs"
|
||||
"github.com/shylinux/icebergs/base/web"
|
||||
"github.com/shylinux/icebergs/core/code"
|
||||
kit "github.com/shylinux/toolkits"
|
||||
@ -38,7 +41,7 @@ func _header_share(m *ice.Message, arg ...string) {
|
||||
m.PushQRCode(kit.MDB_TEXT, m.Option(kit.MDB_LINK))
|
||||
}
|
||||
func _header_grant(m *ice.Message, arg ...string) {
|
||||
if m.PodCmd(m.Prefix("/header"), ctx.ACTION, GRANT, arg) {
|
||||
if m.PodCmd(m.PrefixKey(), ctx.ACTION, GRANT, arg) {
|
||||
return // 下发命令
|
||||
}
|
||||
|
||||
@ -48,11 +51,14 @@ func _header_grant(m *ice.Message, arg ...string) {
|
||||
}
|
||||
func _header_users(m *ice.Message, key string, arg ...string) {
|
||||
m.Option(aaa.USERNAME, m.Option(ice.MSG_USERNAME))
|
||||
m.Cmdy("aaa.user", ctx.ACTION, mdb.MODIFY, key, m.Option(key, arg[0]))
|
||||
m.Cmdy(aaa.USER, ctx.ACTION, mdb.MODIFY, key, m.Option(key, arg[0]))
|
||||
}
|
||||
|
||||
const (
|
||||
TOPIC = "topic"
|
||||
TITLE = "title"
|
||||
MENUS = "menus"
|
||||
TRANS = "trans"
|
||||
AGENT = "agent"
|
||||
CHECK = "check"
|
||||
SHARE = "share"
|
||||
@ -61,54 +67,59 @@ const (
|
||||
const HEADER = "header"
|
||||
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{
|
||||
Configs: map[string]*ice.Config{
|
||||
HEADER: {Name: HEADER, Help: "标题栏", Value: kit.Data(TITLE, "github.com/shylinux/contexts")},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
"/header": {Name: "/header", Help: "标题栏", Action: map[string]*ice.Action{
|
||||
AGENT: {Name: "agent", Help: "应用宿主", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy("web.chat.wx.access", "config")
|
||||
}},
|
||||
CHECK: {Name: "check", Help: "登录检查", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_check(m, arg...)
|
||||
}},
|
||||
SHARE: {Name: "share type", Help: "扫码登录", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_share(m, arg...)
|
||||
}},
|
||||
GRANT: {Name: "grant space", Help: "扫码授权", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_grant(m, arg...)
|
||||
}},
|
||||
|
||||
aaa.LOGIN: {Name: "login", Help: "密码登录", Hand: func(m *ice.Message, arg ...string) {
|
||||
if aaa.UserLogin(m, arg[0], arg[1]) {
|
||||
web.RenderCookie(m, aaa.SessCreate(m, arg[0]))
|
||||
}
|
||||
m.Echo(m.Option(ice.MSG_USERNAME))
|
||||
}},
|
||||
aaa.LOGOUT: {Name: "logout", Help: "退出登录", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmd(aaa.SESS, mdb.REMOVE, ice.OptionHash(m.Option(ice.MSG_SESSID)))
|
||||
}},
|
||||
|
||||
aaa.AVATAR: {Name: "avatar", Help: "头像图片", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_users(m, aaa.AVATAR, arg...)
|
||||
}},
|
||||
aaa.USERNICK: {Name: "usernick", Help: "用户昵称", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_users(m, aaa.USERNICK, arg...)
|
||||
}},
|
||||
aaa.BACKGROUND: {Name: "background", Help: "背景图片", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_users(m, aaa.BACKGROUND, arg...)
|
||||
}},
|
||||
code.WEBPACK: {Name: "webpack", Help: "网页打包", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(code.WEBPACK, mdb.CREATE, m.OptionSimple(kit.MDB_NAME))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
user := m.Cmd("aaa.user", m.Option(ice.MSG_USERNAME))
|
||||
for _, k := range []string{aaa.BACKGROUND, aaa.AVATAR} {
|
||||
m.Option(k, user.Append(k))
|
||||
}
|
||||
m.Echo(m.Conf(HEADER, kit.Keym(TITLE)))
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
HEADER: {Name: HEADER, Help: "标题栏", Value: kit.Data(
|
||||
TITLE, "github.com/shylinux/contexts", MENUS, `["header", ["setting", "black", "white", "print", "webpack", "devops"]]`,
|
||||
)},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
"/header": {Name: "/header", Help: "标题栏", Action: map[string]*ice.Action{
|
||||
AGENT: {Name: "agent", Help: "应用宿主", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy("web.chat.wx.access", "config")
|
||||
}},
|
||||
},
|
||||
})
|
||||
CHECK: {Name: "check", Help: "登录检查", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_check(m, arg...)
|
||||
}},
|
||||
SHARE: {Name: "share type", Help: "扫码登录", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_share(m, arg...)
|
||||
}},
|
||||
GRANT: {Name: "grant space", Help: "扫码授权", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_grant(m, arg...)
|
||||
}},
|
||||
|
||||
aaa.LOGIN: {Name: "login", Help: "密码登录", Hand: func(m *ice.Message, arg ...string) {
|
||||
if aaa.UserLogin(m, arg[0], arg[1]) {
|
||||
web.RenderCookie(m, aaa.SessCreate(m, arg[0]))
|
||||
}
|
||||
m.Echo(m.Option(ice.MSG_USERNAME))
|
||||
}},
|
||||
aaa.LOGOUT: {Name: "logout", Help: "退出登录", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmd(aaa.SESS, mdb.REMOVE, ice.OptionHash(m.Option(ice.MSG_SESSID)))
|
||||
}},
|
||||
aaa.AVATAR: {Name: "avatar", Help: "用户头像", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_users(m, aaa.AVATAR, arg...)
|
||||
}},
|
||||
aaa.USERNICK: {Name: "usernick", Help: "用户昵称", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_users(m, aaa.USERNICK, arg...)
|
||||
}},
|
||||
aaa.BACKGROUND: {Name: "background", Help: "用户壁纸", Hand: func(m *ice.Message, arg ...string) {
|
||||
_header_users(m, aaa.BACKGROUND, arg...)
|
||||
}},
|
||||
|
||||
code.WEBPACK: {Name: "webpack", Help: "打包页面", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(code.WEBPACK, mdb.CREATE, m.OptionSimple(kit.MDB_NAME))
|
||||
}},
|
||||
"devops": {Name: "devops", Help: "开发模式", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmd(nfs.SAVE, path.Join(ice.USR_VOLCANOS, "page/cache.js"))
|
||||
m.Cmd(nfs.SAVE, path.Join(ice.USR_VOLCANOS, "page/cache.css"))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Option(TRANS, kit.Format(kit.Value(c.Commands[cmd].Meta, "_trans")))
|
||||
m.Option(MENUS, m.Conf(HEADER, kit.Keym(MENUS)))
|
||||
msg := m.Cmd(aaa.USER, m.Option(ice.MSG_USERNAME))
|
||||
for _, k := range []string{aaa.USERNICK, aaa.BACKGROUND, aaa.AVATAR} {
|
||||
m.Option(k, msg.Append(k))
|
||||
}
|
||||
m.Echo(m.Conf(HEADER, kit.Keym(TITLE)))
|
||||
}},
|
||||
}})
|
||||
}
|
||||
|
@ -23,12 +23,12 @@ func init() {
|
||||
if m.Option(ice.MSG_RIVER, m.Option(RIVER)) == "" {
|
||||
return
|
||||
}
|
||||
if msg := m.Cmd(AUTH, m.Option(web.SHARE)); msg.Append(kit.MDB_TYPE) == NODE {
|
||||
if msg := m.Cmd(web.SHARE, m.Option(web.SHARE)); msg.Append(kit.MDB_TYPE) == RIVER {
|
||||
m.Cmdy(mdb.INSERT, RIVER, _river_key(m, NODE), mdb.HASH, arg)
|
||||
}
|
||||
}},
|
||||
aaa.INVITE: {Name: "invite", Help: "邀请", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(web.SHARE, m.Cmdx(AUTH, mdb.CREATE, kit.MDB_TYPE, NODE))
|
||||
m.Option(web.SHARE, m.Cmdx(web.SHARE, mdb.CREATE, kit.MDB_TYPE, RIVER))
|
||||
m.Cmdy(code.PUBLISH, ice.CONTEXTS, "tool")
|
||||
}},
|
||||
mdb.INSERT: {Name: "insert type name share", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
|
@ -31,8 +31,8 @@ func _river_list(m *ice.Message) {
|
||||
if m.Conf(RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER))) == "" {
|
||||
break
|
||||
}
|
||||
if msg.Cmd(USER, m.Option(ice.MSG_USERNAME)).Append(aaa.USERNAME) == "" {
|
||||
msg.Cmd(USER, mdb.INSERT, aaa.USERNAME, m.Option(ice.MSG_USERNAME)) // 加入群组
|
||||
if msg.Cmd(USERS, m.Option(ice.MSG_USERNAME)).Append(aaa.USERNAME) == "" {
|
||||
msg.Cmd(USERS, mdb.INSERT, aaa.USERNAME, m.Option(ice.MSG_USERNAME)) // 加入群组
|
||||
}
|
||||
|
||||
case web.STORM: // 共享应用
|
||||
@ -49,7 +49,7 @@ 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.Richs(RIVER, kit.Keys(kit.MDB_HASH, key, USERS), m.Option(ice.MSG_USERNAME), func(k string, val map[string]interface{}) {
|
||||
m.Push(key, kit.GetMeta(value), []string{kit.MDB_HASH, kit.MDB_NAME}, kit.GetMeta(val))
|
||||
})
|
||||
})
|
||||
@ -60,7 +60,14 @@ const RIVER = "river"
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{
|
||||
Configs: map[string]*ice.Config{
|
||||
RIVER: {Name: RIVER, Help: "群组", Value: kit.Data(kit.MDB_PATH, ice.USR_LOCAL_RIVER)},
|
||||
RIVER: {Name: RIVER, Help: "群组", Value: kit.Data(
|
||||
kit.MDB_PATH, ice.USR_LOCAL_RIVER,
|
||||
MENUS, `["river",
|
||||
["添加", "创建群组", "添加应用", "添加工具", "添加用户", "添加设备", "创建空间"],
|
||||
["访问", "内部系统", "访问应用", "访问工具", "访问用户", "访问设备", "工作任务"],
|
||||
["共享", "共享群组", "共享应用", "共享工具", "共享主机"]
|
||||
]`,
|
||||
)},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
@ -68,7 +75,6 @@ func init() {
|
||||
"base", kit.Dict(
|
||||
"info", []interface{}{
|
||||
"web.chat.info",
|
||||
"web.chat.auth",
|
||||
"web.chat.user",
|
||||
"web.chat.tool",
|
||||
"web.chat.node",
|
||||
@ -102,6 +108,7 @@ func init() {
|
||||
return // 没有登录
|
||||
}
|
||||
if len(arg) == 0 {
|
||||
m.Option(MENUS, m.Conf(RIVER, kit.Keym(MENUS)))
|
||||
_river_list(m)
|
||||
return // 群组列表
|
||||
}
|
||||
@ -115,7 +122,7 @@ func init() {
|
||||
}
|
||||
|
||||
switch kit.Select("", arg, 1) {
|
||||
case USER, TOOL, NODE:
|
||||
case USERS, TOOL, NODE:
|
||||
m.Option(ice.MSG_RIVER, arg[0])
|
||||
m.Cmdy(arg[1], arg[2:])
|
||||
|
||||
@ -134,8 +141,8 @@ func init() {
|
||||
m.Echo(h)
|
||||
|
||||
m.Conf(RIVER, kit.Keys(kit.MDB_HASH, h, NODE, kit.MDB_META, kit.MDB_SHORT), kit.MDB_NAME)
|
||||
m.Conf(RIVER, kit.Keys(kit.MDB_HASH, h, USER, kit.MDB_META, kit.MDB_SHORT), aaa.USERNAME)
|
||||
m.Cmd(USER, mdb.INSERT, aaa.USERNAME, m.Option(ice.MSG_USERNAME))
|
||||
m.Conf(RIVER, kit.Keys(kit.MDB_HASH, h, USERS, kit.MDB_META, kit.MDB_SHORT), aaa.USERNAME)
|
||||
m.Cmd(USERS, mdb.INSERT, aaa.USERNAME, m.Option(ice.MSG_USERNAME))
|
||||
|
||||
kit.Fetch(m.Confv(RIVER, kit.Keym(kit.MDB_TEMPLATE, kit.Select("base", m.Option(kit.MDB_TEMPLATE)))), func(storm string, value interface{}) {
|
||||
h := m.Cmdx(TOOL, mdb.CREATE, kit.MDB_TYPE, PUBLIC, kit.MDB_NAME, storm, kit.MDB_TEXT, storm)
|
||||
|
@ -4,35 +4,28 @@ import (
|
||||
ice "github.com/shylinux/icebergs"
|
||||
"github.com/shylinux/icebergs/base/aaa"
|
||||
"github.com/shylinux/icebergs/base/mdb"
|
||||
"github.com/shylinux/icebergs/base/web"
|
||||
kit "github.com/shylinux/toolkits"
|
||||
)
|
||||
|
||||
const USER = "user"
|
||||
const USERS = "users"
|
||||
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{Commands: map[string]*ice.Command{
|
||||
USER: {Name: "user username auto insert invite", Help: "用户", Action: map[string]*ice.Action{
|
||||
aaa.INVITE: {Name: "invite", Help: "邀请", Hand: func(m *ice.Message, arg ...string) {
|
||||
share := m.Option(web.SHARE, m.Cmdx(AUTH, mdb.CREATE, kit.MDB_TYPE, USER))
|
||||
m.EchoScript(kit.MergeURL(m.Option(ice.MSG_USERWEB), RIVER, m.Option(ice.MSG_RIVER), web.SHARE, share))
|
||||
m.EchoQRCode(kit.MergeURL(m.Option(ice.MSG_USERWEB), RIVER, m.Option(ice.MSG_RIVER), web.SHARE, share))
|
||||
m.Render("")
|
||||
}},
|
||||
USERS: {Name: "users username auto insert invite", Help: "用户", Action: map[string]*ice.Action{
|
||||
mdb.INSERT: {Name: "insert username", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.INSERT, RIVER, _river_key(m, USER), mdb.HASH, arg)
|
||||
m.Cmdy(mdb.INSERT, RIVER, _river_key(m, USERS), mdb.HASH, arg)
|
||||
}},
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.DELETE, RIVER, _river_key(m, USER), mdb.HASH, m.OptionSimple(aaa.USERNAME))
|
||||
m.Cmdy(mdb.DELETE, RIVER, _river_key(m, USERS), mdb.HASH, m.OptionSimple(aaa.USERNAME))
|
||||
}},
|
||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy("aaa.user", ice.OptionFields(aaa.USERNAME, aaa.USERZONE, aaa.USERNICK))
|
||||
m.Cmdy(aaa.USER, ice.OptionFields(aaa.USERNAME, aaa.USERZONE, aaa.USERNICK))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Fields(len(arg), "time,username")
|
||||
m.Cmdy(mdb.SELECT, RIVER, _river_key(m, USER), mdb.HASH, aaa.USERNAME, arg)
|
||||
m.Cmdy(mdb.SELECT, RIVER, _river_key(m, USERS), mdb.HASH, aaa.USERNAME, arg)
|
||||
m.Table(func(index int, value map[string]string, head []string) {
|
||||
m.Richs(USER, nil, value[aaa.USERNAME], func(key string, val map[string]interface{}) {
|
||||
m.Richs(USERS, nil, value[aaa.USERNAME], func(key string, val map[string]interface{}) {
|
||||
val = kit.GetMeta(val)
|
||||
m.Push(aaa.USERNICK, val[aaa.USERNICK])
|
||||
m.PushImages(aaa.AVATAR, kit.Format(val[aaa.AVATAR]), kit.Select("60", "240", m.Option(mdb.FIELDS) == mdb.DETAIL))
|
||||
|
@ -20,9 +20,14 @@ field "{{.Option "name"}}" web.code.{{.Option "name"}}.{{.Option "name"}}
|
||||
}
|
||||
}
|
||||
func _autogen_source(m *ice.Message, name string) {
|
||||
m.Cmd(nfs.PUSH, ice.SRC_MAIN, "\n", kit.SSH_SOURCE+` `+path.Join(name, kit.Keys(name, SHY)), "\n")
|
||||
m.Cmd(nfs.PUSH, ice.SRC_MAIN_SHY, "\n", kit.SSH_SOURCE+` `+path.Join(name, kit.Keys(name, SHY)), "\n")
|
||||
}
|
||||
func _autogen_module(m *ice.Message, dir string, ctx string, from string) (list []string) {
|
||||
m.Cmd(nfs.DEFS, ice.GO_MOD, kit.Format(`module %s
|
||||
|
||||
go 1.11
|
||||
`, path.Base(kit.Path(""))))
|
||||
|
||||
name, value := "", ""
|
||||
key := strings.ToUpper(ctx)
|
||||
m.Cmd(nfs.CAT, from, func(line string, index int) {
|
||||
@ -47,6 +52,18 @@ func _autogen_module(m *ice.Message, dir string, ctx string, from string) (list
|
||||
return
|
||||
}
|
||||
func _autogen_import(m *ice.Message, main string, ctx string, mod string) (list []string) {
|
||||
m.Cmd(nfs.DEFS, main, `package main
|
||||
|
||||
import (
|
||||
ice "github.com/shylinux/icebergs"
|
||||
_ "github.com/shylinux/icebergs/base"
|
||||
_ "github.com/shylinux/icebergs/core"
|
||||
_ "github.com/shylinux/icebergs/misc"
|
||||
)
|
||||
|
||||
func main() { print(ice.Run()) }
|
||||
`)
|
||||
|
||||
m.Cmd(nfs.CAT, main, func(line string, index int) {
|
||||
if list = append(list, line); strings.HasPrefix(line, "import (") {
|
||||
list = append(list, kit.Format(` _ "%s/src/%s"`, mod, ctx), "")
|
||||
|
@ -50,7 +50,7 @@ func init() {
|
||||
m.Cmd(aaa.ROLE, aaa.WHITE, aaa.VOID, ice.USR_PUBLISH)
|
||||
m.Conf(PUBLISH, kit.Keym(ice.CONTEXTS), _contexts)
|
||||
}},
|
||||
PUBLISH: {Name: "publish path auto create volcanos icebergs intshell dream", Help: "发布", Action: map[string]*ice.Action{
|
||||
PUBLISH: {Name: "publish path auto create volcanos icebergs intshell package dream", Help: "发布", Action: map[string]*ice.Action{
|
||||
mdb.CREATE: {Name: "create file", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
_publish_file(m, m.Option(kit.MDB_FILE))
|
||||
}},
|
||||
@ -117,6 +117,17 @@ func init() {
|
||||
}
|
||||
}
|
||||
}},
|
||||
"package": {Name: "package", Help: "依赖", Hand: func(m *ice.Message, arg ...string) {
|
||||
web.PushStream(m)
|
||||
p := kit.Path(ice.USR_PUBLISH)
|
||||
m.Option(cli.CMD_DIR, kit.Path(os.Getenv("HOME")))
|
||||
// m.Cmdy(cli.SYSTEM, "tar", "-zcvf", "go.tar.gz", "go/pkg")
|
||||
// m.Cmdy(cli.SYSTEM, "mv", "go.tar.gz", p)
|
||||
m.Cmdy(cli.SYSTEM, "tar", "-zcvf", "vim.tar.gz", ".vim/plugged")
|
||||
m.Cmdy(cli.SYSTEM, "mv", "vim.tar.gz", p)
|
||||
m.Toast("打包成功")
|
||||
m.ProcessHold()
|
||||
}},
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
p := m.Option(cli.CMD_DIR, m.Conf(PUBLISH, kit.META_PATH))
|
||||
os.Remove(path.Join(p, m.Option(kit.MDB_PATH)))
|
||||
|
@ -32,6 +32,12 @@ func init() {
|
||||
nfs.SAVE: {Name: "save type file path", Help: "保存", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(nfs.SAVE, path.Join(m.Option(kit.MDB_PATH), m.Option(kit.MDB_FILE)))
|
||||
}},
|
||||
AUTOGEN: {Name: "create main=src/main.go@key name=hi@key from=usr/icebergs/misc/bash/bash.go@key", Help: "模块", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(AUTOGEN, mdb.CREATE, arg)
|
||||
}},
|
||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(AUTOGEN, mdb.INPUTS, arg)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Cmdy(INNER, arg)
|
||||
}},
|
||||
|
@ -19,6 +19,7 @@ func _field_show(m *ice.Message, name, text string, arg ...string) {
|
||||
|
||||
name = strings.ReplaceAll(name, " ", "_")
|
||||
meta[kit.MDB_NAME] = name
|
||||
meta[kit.MDB_INDEX] = text
|
||||
|
||||
// 扩展参数
|
||||
for i := 0; i < len(arg)-1; i += 2 {
|
||||
|
@ -34,12 +34,15 @@ func init() {
|
||||
arg[0] = "list"
|
||||
}
|
||||
|
||||
switch m.Option(mdb.FIELDS, mdb.DETAIL); arg[0] {
|
||||
switch m.OptionFields(mdb.DETAIL); arg[0] {
|
||||
case "json":
|
||||
m.Echo(kit.Formats(kit.UnMarshal(arg[1])))
|
||||
|
||||
case "http":
|
||||
u, _ := url.Parse(arg[1])
|
||||
m.Push("proto", u.Scheme)
|
||||
m.Push("host", u.Host)
|
||||
m.Push("path", u.Path)
|
||||
for k, v := range u.Query() {
|
||||
for _, v := range v {
|
||||
m.Push(k, v)
|
||||
|
@ -34,48 +34,46 @@ func _config_list(m *ice.Message) {
|
||||
const CONFIG = "config"
|
||||
|
||||
func init() {
|
||||
Index.Merge(&ice.Context{
|
||||
Configs: map[string]*ice.Config{
|
||||
CONFIG: {Name: CONFIG, Help: "配置键", Value: kit.Data(
|
||||
kit.MDB_SHORT, kit.MDB_NAME, "init", kit.Dict(
|
||||
"alias", kit.Dict("s", "status", "b", "branch"),
|
||||
"credential", kit.Dict("helper", "store"),
|
||||
"core", kit.Dict("quotepath", "false"),
|
||||
"push", kit.Dict("default", "simple"),
|
||||
"color", kit.Dict("ui", "always"),
|
||||
))},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
CONFIG: {Name: "server name auto create import", Help: "配置键", Action: map[string]*ice.Action{
|
||||
mdb.IMPORT: {Name: "import", Help: "初始化", Hand: func(m *ice.Message, arg ...string) {
|
||||
kit.Fetch(m.Confv(CONFIG, kit.Keym("init")), func(conf string, value interface{}) {
|
||||
kit.Fetch(value, func(key string, value string) {
|
||||
_config_set(m, kit.Keys(conf, key), value)
|
||||
})
|
||||
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
CONFIG: {Name: CONFIG, Help: "配置键", Value: kit.Data(
|
||||
kit.MDB_SHORT, kit.MDB_NAME, "init", kit.Dict(
|
||||
"alias", kit.Dict("s", "status", "b", "branch"),
|
||||
"credential", kit.Dict("helper", "store"),
|
||||
"core", kit.Dict("quotepath", "false"),
|
||||
"push", kit.Dict("default", "simple"),
|
||||
"color", kit.Dict("ui", "always"),
|
||||
))},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
CONFIG: {Name: "server name auto create import", Help: "配置键", Action: map[string]*ice.Action{
|
||||
mdb.IMPORT: {Name: "import", Help: "初始化", Hand: func(m *ice.Message, arg ...string) {
|
||||
kit.Fetch(m.Confv(CONFIG, kit.Keym("init")), func(conf string, value interface{}) {
|
||||
kit.Fetch(value, func(key string, value string) {
|
||||
_config_set(m, kit.Keys(conf, key), value)
|
||||
})
|
||||
}},
|
||||
mdb.CREATE: {Name: "create name value", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmd(mdb.DELETE, m.Prefix(CONFIG), "", mdb.HASH, m.OptionSimple(kit.MDB_NAME))
|
||||
_config_set(m, m.Option(kit.MDB_NAME), m.Option(kit.MDB_VALUE))
|
||||
m.ProcessRefresh30ms()
|
||||
}},
|
||||
mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||
if arg[0] == kit.MDB_VALUE {
|
||||
m.Cmd(mdb.DELETE, m.Prefix(CONFIG), "", mdb.HASH, m.OptionSimple(kit.MDB_NAME))
|
||||
_config_set(m, m.Option(kit.MDB_NAME), arg[1])
|
||||
m.ProcessRefresh30ms()
|
||||
}
|
||||
}},
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmd(mdb.INSERT, m.Prefix(CONFIG), "", mdb.HASH, m.OptionSimple(kit.MDB_NAME, kit.MDB_VALUE))
|
||||
_config_set(m, "--unset", m.Option(kit.MDB_NAME))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
_config_list(m)
|
||||
return
|
||||
}
|
||||
m.Echo(_config_get(m, arg[0]))
|
||||
})
|
||||
}},
|
||||
}})
|
||||
mdb.CREATE: {Name: "create name value", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmd(mdb.DELETE, m.Prefix(CONFIG), "", mdb.HASH, m.OptionSimple(kit.MDB_NAME))
|
||||
_config_set(m, m.Option(kit.MDB_NAME), m.Option(kit.MDB_VALUE))
|
||||
m.ProcessRefresh30ms()
|
||||
}},
|
||||
mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||
if arg[0] == kit.MDB_VALUE {
|
||||
m.Cmd(mdb.DELETE, m.Prefix(CONFIG), "", mdb.HASH, m.OptionSimple(kit.MDB_NAME))
|
||||
_config_set(m, m.Option(kit.MDB_NAME), arg[1])
|
||||
m.ProcessRefresh30ms()
|
||||
}
|
||||
}},
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmd(mdb.INSERT, m.Prefix(CONFIG), "", mdb.HASH, m.OptionSimple(kit.MDB_NAME, kit.MDB_VALUE))
|
||||
_config_set(m, "--unset", m.Option(kit.MDB_NAME))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
_config_list(m)
|
||||
return
|
||||
}
|
||||
m.Echo(_config_get(m, arg[0]))
|
||||
}},
|
||||
}})
|
||||
}
|
||||
|
9
type.go
9
type.go
@ -474,15 +474,12 @@ func (m *Message) Confv(arg ...interface{}) (val interface{}) {
|
||||
|
||||
if len(arg) > 2 {
|
||||
if arg[1] == nil || arg[1] == "" {
|
||||
// 写配置
|
||||
conf.Value = arg[2]
|
||||
conf.Value = arg[2] // 写配置
|
||||
} else {
|
||||
// 写修改项
|
||||
kit.Value(conf.Value, arg[1:]...)
|
||||
kit.Value(conf.Value, arg[1:]...) // 写配置项
|
||||
}
|
||||
}
|
||||
// 读配置项
|
||||
val = kit.Value(conf.Value, arg[1])
|
||||
val = kit.Value(conf.Value, arg[1]) // 读配置项
|
||||
})
|
||||
return
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user