1
0
forked from x/icebergs
This commit is contained in:
IT 老营长 @云轩领航-创始人 2024-01-15 19:11:57 +08:00
parent a3328f8e83
commit 25016141bb
6 changed files with 29 additions and 27 deletions

View File

@ -19,9 +19,9 @@ func init() {
DREAM_ACTION: {Hand: func(m *ice.Message, arg ...string) {
if kit.HasPrefixList(arg, ctx.ACTION, ADMIN) && len(arg) == 2 {
if m.Option(mdb.TYPE) == MASTER {
m.ProcessOpen(SpideOrigin(m, m.Option(mdb.NAME)) + C(m.PrefixKey()))
// ctx.ProcessField(m, CHAT_IFRAME, SpideOrigin(m, m.Option(mdb.NAME))+C(m.PrefixKey()), arg...)
// m.ProcessField(ctx.ACTION, ctx.RUN, CHAT_IFRAME)
// m.ProcessOpen(SpideOrigin(m, m.Option(mdb.NAME)) + C(m.PrefixKey()))
ctx.ProcessField(m, CHAT_IFRAME, SpideOrigin(m, m.Option(mdb.NAME))+C(m.PrefixKey()), arg...)
m.ProcessField(ctx.ACTION, ctx.RUN, CHAT_IFRAME)
} else {
ctx.ProcessField(m, CHAT_IFRAME, m.MergePodCmd(m.Option(mdb.NAME), ""), arg...)
m.ProcessField(ctx.ACTION, ctx.RUN, CHAT_IFRAME)

View File

@ -23,7 +23,6 @@ import (
)
func _dream_list(m *ice.Message) *ice.Message {
stat := map[string]int{}
list := m.CmdMap(SPACE, mdb.NAME)
mdb.HashSelect(m).Table(func(value ice.Maps) {
if space, ok := list[value[mdb.NAME]]; ok {
@ -31,22 +30,19 @@ func _dream_list(m *ice.Message) *ice.Message {
m.Push(mdb.TYPE, space[mdb.TYPE]).Push(cli.STATUS, cli.START)
m.Push(nfs.VERSION, space[nfs.VERSION]).Push(mdb.TEXT, msg.Append(mdb.TEXT))
m.PushButton(strings.Join(msg.Appendv(ctx.ACTION), ""))
stat[cli.START]++
} else {
if m.Push(mdb.TYPE, WORKER); nfs.Exists(m, path.Join(ice.USR_LOCAL_WORK, value[mdb.NAME])) {
m.Push(cli.STATUS, cli.STOP)
m.Push(nfs.VERSION, "").Push(mdb.TEXT, "")
m.PushButton(cli.START, nfs.TRASH)
stat[cli.STOP]++
} else {
m.Push(cli.STATUS, cli.BEGIN)
m.Push(nfs.VERSION, "").Push(mdb.TEXT, "")
m.PushButton(cli.START, mdb.REMOVE)
stat[cli.BEGIN]++
}
}
})
return m.Sort("type,status,name", []string{MASTER, SERVER, WORKER}, []string{cli.START, cli.STOP, cli.BEGIN}, ice.STR_R).StatusTimeCount(stat)
return m
}
func _dream_start(m *ice.Message, name string) {
if m.Warn(name == "", ice.ErrNotValid, mdb.NAME) {
@ -142,7 +138,11 @@ const DREAM = "dream"
func init() {
Index.MergeCommands(ice.Commands{
DREAM: {Name: "dream refresh", Help: "梦想家", Icon: "Launchpad.png", Role: aaa.VOID, Actions: ice.MergeActions(ice.Actions{
DREAM: {Name: "dream refresh", Help: "梦想家", Icon: "Launchpad.png", Role: aaa.VOID, Meta: kit.Dict(
ice.CTX_TRANS, kit.Dict(html.INPUT, kit.Dict(
WORKER, "空间", SERVER, "机器", MASTER, "服务",
)),
), Actions: ice.MergeActions(ice.Actions{
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
m = m.Spawn()
m.GoSleep("10s", func() {
@ -375,7 +375,10 @@ func init() {
m.PushButton("grant")
}
})
m.Sort("type,status,name", []string{aaa.LOGIN, WORKER, SERVER, MASTER}, []string{cli.START, cli.STOP, cli.BEGIN}, ice.STR_R)
stat := map[string]int{}
m.Table(func(value ice.Maps) { stat[value[mdb.TYPE]]++; stat[value[mdb.STATUS]]++ })
kit.If(stat[cli.START] == stat[WORKER], func() { delete(stat, cli.START) })
m.Sort("type,status,name", []string{aaa.LOGIN, WORKER, SERVER, MASTER}, []string{cli.START, cli.STOP, cli.BEGIN}, ice.STR_R).StatusTimeCount(stat)
} else if arg[0] == ctx.ACTION {
gdb.Event(m, DREAM_ACTION, arg)
} else {
@ -396,8 +399,10 @@ func DreamProcess(m *ice.Message, args ice.Any, arg ...string) {
if kit.HasPrefixList(arg, ctx.RUN) {
ctx.ProcessField(m, m.PrefixKey(), args, kit.Slice(arg, 1)...)
} else if kit.HasPrefixList(arg, ctx.ACTION, m.PrefixKey()) || kit.HasPrefixList(arg, ctx.ACTION, m.CommandKey()) {
if m.Option(mdb.TYPE) == MASTER {
m.ProcessOpen(SpideOrigin(m, m.Option(mdb.NAME)) + C(m.PrefixKey()))
if m.Option(mdb.TYPE) == MASTER && (kit.IsIn(ctx.ShortCmd(m.PrefixKey()), PORTAL, DESKTOP)) {
// m.ProcessOpen(SpideOrigin(m, m.Option(mdb.NAME)) + C(m.PrefixKey()))
ctx.ProcessField(m, CHAT_IFRAME, SpideOrigin(m, m.Option(mdb.NAME))+C(m.PrefixKey()), arg...)
m.ProcessField(ctx.ACTION, ctx.RUN, CHAT_IFRAME)
} else if arg = kit.Slice(arg, 2); kit.HasPrefixList(arg, DREAM) {
m.Cmdy(SPACE, m.Option(ice.MSG_USERPOD, arg[1]), m.PrefixKey(), ctx.ACTION, DREAM_ACTION, ctx.RUN, arg[2:])
} else if dream := m.Option(mdb.NAME); dream != "" {

View File

@ -81,6 +81,7 @@ func _space_fork(m *ice.Message) {
} else {
name, text = kit.Hashs(name), kit.Select(addr, m.Option(mdb.NAME), m.Option(mdb.TEXT))
}
safe := false
if m.Option(ice.MSG_USERNAME, ""); kit.IsIn(m.Option(mdb.TYPE), WORKER, PORTAL) {
if tcp.IsLocalHost(m, m.Option(ice.MSG_USERIP)) {
aaa.SessAuth(m, kit.Dict(m.Cmd(aaa.USER, m.Option(ice.MSG_USERNAME, ice.Info.Username)).AppendSimple()))
@ -89,6 +90,7 @@ func _space_fork(m *ice.Message) {
if msg := m.Cmd(TOKEN, m.Option(TOKEN)); msg.Append(mdb.TIME) > m.Time() && kit.IsIn(msg.Append(mdb.TYPE), SERVER, SPIDE) {
aaa.SessAuth(m, kit.Dict(m.Cmd(aaa.USER, m.Option(ice.MSG_USERNAME, msg.Append(mdb.NAME))).AppendSimple()))
name = SpaceName(kit.Select(name, msg.Append(mdb.TEXT)))
safe = true
}
}
args := kit.Simple(mdb.TYPE, m.Option(mdb.TYPE), mdb.NAME, name, mdb.TEXT, text, m.OptionSimple(nfs.MODULE, nfs.VERSION, cli.DAEMON))
@ -97,7 +99,6 @@ func _space_fork(m *ice.Message) {
args = _space_agent(m, args...)
if c, e := websocket.Upgrade(m.W, m.R); !m.Warn(e) {
gdb.Go(m, func() {
safe := false
defer mdb.HashCreateDeferRemove(m, args, kit.Dict(mdb.TARGET, c))()
switch m.Option(mdb.TYPE) {
case LOGIN:

View File

@ -15,11 +15,7 @@ const TOKEN = "token"
func init() {
Index.MergeCommands(ice.Commands{
TOKEN: {Help: "令牌桶", Actions: mdb.HashAction(mdb.SHORT, mdb.UNIQ, mdb.FIELD, "time,hash,type,name,text", mdb.EXPIRE, mdb.MONTH), Hand: func(m *ice.Message, arg ...string) {
if mdb.HashSelect(m, arg...); len(arg) > 0 {
m.EchoScript(kit.Format("ish_miss_serve_log dev %s token %s", UserHost(m), arg[0]))
}
}},
TOKEN: {Help: "令牌桶", Actions: mdb.HashAction(mdb.SHORT, mdb.UNIQ, mdb.EXPIRE, mdb.MONTH)},
})
}

View File

@ -439,9 +439,9 @@ func init() {
}
})
}},
INIT: {Name: "init origin*", Help: "初始化", Hand: func(m *ice.Message, arg ...string) {
INIT: {Name: "init remote*", Help: "初始化", Hand: func(m *ice.Message, arg ...string) {
m.OptionDefault(nfs.PATH, kit.Path(""))
m.Cmd(nfs.DEFS, path.Join(m.Option(nfs.PATH), ".git/config"), kit.Format(nfs.Template(m, CONFIG), m.Option(ORIGIN)))
m.Cmd(nfs.DEFS, path.Join(m.Option(nfs.PATH), ".git/config"), kit.Format(nfs.Template(m, CONFIG), m.Option(REMOTE)))
m.Cmd(nfs.DEFS, path.Join(m.Option(nfs.PATH), _GITIGNORE), nfs.Template(m, IGNORE))
git.PlainInit(m.Option(nfs.PATH), false)
_repos_insert(m, m.Option(nfs.PATH))
@ -509,8 +509,8 @@ func init() {
mdb.HashRemove(m, m.Option(REPOS))
}
}},
CLONE: {Name: "clone origin* name path", Help: "克隆", Icon: "bi bi-copy", Hand: func(m *ice.Message, arg ...string) {
m.OptionDefault(mdb.NAME, path.Base(m.Option(ORIGIN)))
CLONE: {Name: "clone remote* name path", Help: "克隆", Icon: "bi bi-copy", Hand: func(m *ice.Message, arg ...string) {
m.OptionDefault(mdb.NAME, path.Base(m.Option(REMOTE)))
m.OptionDefault(nfs.PATH, path.Join(nfs.USR, m.Option(mdb.NAME))+nfs.PS)
defer m.Cmdy(nfs.DIR, m.Option(nfs.PATH))
if nfs.Exists(m, path.Join(m.Option(nfs.PATH), _GIT)) {
@ -518,7 +518,7 @@ func init() {
}
defer web.ToastProcess(m)()
for _, dev := range []string{"dev_ip", ice.DEV, ice.SHY} {
p := m.Option(ORIGIN)
p := m.Option(REMOTE)
kit.If(!kit.HasPrefix(p, nfs.PS, web.HTTP), func() { p = m.Cmdv(web.SPIDE, dev, web.CLIENT_ORIGIN) + web.X(p) })
m.Info("clone %s", p)
if _, err := git.PlainClone(m.Option(nfs.PATH), false, &git.CloneOptions{URL: p, Auth: _repos_auth(m, p)}); !m.Warn(err) {
@ -620,7 +620,7 @@ func init() {
kit.If(m.Option(REPOS), func(p string) {
p = strings.Split(p, mdb.QS)[0]
kit.If(!strings.Contains(p, "://"), func() { p = kit.MergeURL2(web.UserHost(m), web.X(p)) })
m.Cmd("", CLONE, ORIGIN, p, nfs.PATH, path.Join(ice.USR_LOCAL_WORK, m.Option(mdb.NAME)), ice.Maps{cli.CMD_DIR: ""})
m.Cmd("", CLONE, REMOTE, p, nfs.PATH, path.Join(ice.USR_LOCAL_WORK, m.Option(mdb.NAME)), ice.Maps{cli.CMD_DIR: ""})
})
}},
web.DREAM_TRASH: {Hand: func(m *ice.Message, arg ...string) { m.Cmd("", mdb.REMOVE, kit.Dict(REPOS, m.Option(mdb.NAME))) }},
@ -638,8 +638,8 @@ func init() {
}},
web.SERVE_START: {Hand: func(m *ice.Message, arg ...string) {
m.Go(func() {
m.Cmd("", CLONE, ORIGIN, "node_modules", mdb.NAME, "", nfs.PATH, "")
m.Cmd("", CLONE, ORIGIN, "icons", mdb.NAME, "", nfs.PATH, "")
m.Cmd("", CLONE, REMOTE, "node_modules", mdb.NAME, "", nfs.PATH, "")
m.Cmd("", CLONE, REMOTE, "icons", mdb.NAME, "", nfs.PATH, "")
})
}},
web.STATS_TABLES: {Hand: func(m *ice.Message, _ ...string) {

View File

@ -78,7 +78,7 @@ func (m *Message) Action(arg ...Any) *Message {
}
func (m *Message) Status(arg ...Any) *Message {
list := kit.List()
kit.For(kit.Simple(arg), func(k, v string) { list = append(list, kit.Dict(NAME, k, VALUE, v)) })
kit.For(kit.Simple(arg), func(k, v string) { kit.If(k, func() { list = append(list, kit.Dict(NAME, k, VALUE, v)) }) })
return m.Options(MSG_STATUS, kit.Format(list))
}
func (m *Message) StatusTime(arg ...Any) *Message {