diff --git a/base/web/admin.go b/base/web/admin.go index 21b097a2..a279c3d0 100644 --- a/base/web/admin.go +++ b/base/web/admin.go @@ -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) diff --git a/base/web/dream.go b/base/web/dream.go index 147ce090..0a636887 100644 --- a/base/web/dream.go +++ b/base/web/dream.go @@ -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 != "" { diff --git a/base/web/space.go b/base/web/space.go index 707f6849..3d5c2b71 100644 --- a/base/web/space.go +++ b/base/web/space.go @@ -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: diff --git a/base/web/token.go b/base/web/token.go index f84d4464..d3a6eb80 100644 --- a/base/web/token.go +++ b/base/web/token.go @@ -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)}, }) } diff --git a/misc/git/repos.go b/misc/git/repos.go index 5b0bf606..10010421 100644 --- a/misc/git/repos.go +++ b/misc/git/repos.go @@ -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) { diff --git a/option.go b/option.go index ac036bbf..bd8a6a5d 100644 --- a/option.go +++ b/option.go @@ -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 {