diff --git a/base/mdb/zone.go b/base/mdb/zone.go index 37dc8b4f..ac7decdf 100644 --- a/base/mdb/zone.go +++ b/base/mdb/zone.go @@ -229,7 +229,7 @@ func ZoneModify(m *ice.Message, arg ...Any) { if args := kit.Simple(arg...); m.Option(ID) == "" { HashModify(m, arg...) } else if args[0] == HASH || args[0] == ZoneShort(m) { - m.Cmdy(MODIFY, m.PrefixKey(), "", ZONE, args[1], args[3], arg[4:]) + m.Cmdy(MODIFY, m.PrefixKey(), "", ZONE, args[1], args[3], args[4:]) } else { m.Cmdy(MODIFY, m.PrefixKey(), "", ZONE, m.Option(ZoneKey(m)), m.Option(ID), arg) } diff --git a/base/web/broad.go b/base/web/broad.go index d5fa67a4..e63b27d8 100644 --- a/base/web/broad.go +++ b/base/web/broad.go @@ -70,7 +70,7 @@ func init() { DREAM: {Hand: func(m *ice.Message, arg ...string) { broadOpen(m) }}, VIMER: {Hand: func(m *ice.Message, arg ...string) { broadOpen(m) }}, SPIDE: {Name: "spide name type=repos", Icon: "bi bi-house-add", Hand: func(m *ice.Message, arg ...string) { - m.Cmd(SPIDE, mdb.CREATE, m.OptionSimple(mdb.NAME), ORIGIN, HostPort(m, m.Option(mdb.NAME), m.Option(tcp.PORT))) + m.Cmd(SPIDE, mdb.CREATE, m.OptionSimple(mdb.NAME), ORIGIN, HostPort(m, m.Option(tcp.HOST), m.Option(tcp.PORT))) }}, OPEN: {Hand: func(m *ice.Message, arg ...string) { m.ProcessOpen(HostPort(m, m.Option(mdb.NAME), m.Option(tcp.PORT))) @@ -78,7 +78,10 @@ func init() { tcp.SEND: {Hand: func(m *ice.Message, arg ...string) { _broad_send(m, "", "", "", "", arg...) }}, }, gdb.EventsAction(SERVE_START), mdb.HashAction(mdb.SHORT, "host,port", mdb.FIELD, "time,hash,type,name,host,port,module,version,commitTime,compileTime,bootTime,kernel,arch", - mdb.ACTION, "admin,dream,vimer,spide,open", mdb.SORT, "type,name,host,port"), mdb.ClearOnExitHashAction())}, + mdb.ACTION, "admin,dream,vimer,spide,open", mdb.SORT, "type,name,host,port"), mdb.ClearOnExitHashAction()), Hand: func(m *ice.Message, arg ...string) { + mdb.HashSelect(m, arg...) + m.StatusTimeCount("nodename", ice.Info.NodeName) + }}, }) } func broadOpen(m *ice.Message) { diff --git a/base/web/dream.go b/base/web/dream.go index 936d6cdb..520aa5b2 100644 --- a/base/web/dream.go +++ b/base/web/dream.go @@ -63,7 +63,7 @@ func _dream_list(m *ice.Message) *ice.Message { } func _dream_list_icon(m *ice.Message) { m.RewriteAppend(func(value, key string, index int) string { - if key == mdb.ICON { + if key == mdb.ICONS { if kit.HasPrefix(value, HTTP, nfs.PS) { return value } else if nfs.ExistsFile(m, path.Join(ice.USR_LOCAL_WORK, m.Appendv(mdb.NAME)[index], value)) { @@ -83,25 +83,24 @@ func _dream_list_more(m *ice.Message) *ice.Message { } list := m.Spawn(ice.Maps{ice.MSG_FIELDS: ""}).CmdMap(SPIDE, CLIENT_NAME) m.Cmds(SPACE).Table(func(value ice.Maps) { - value[mdb.ICON] = nfs.USR_ICONS_VOLCANOS + value[mdb.ICONS] = nfs.USR_ICONS_VOLCANOS value[nfs.REPOS] = "https://" + value[nfs.MODULE] value[mdb.STATUS] = cli.START switch value[mdb.TYPE] { case SERVER: - value[mdb.ICON] = nfs.USR_ICONS_ICEBERGS + value[mdb.ICONS] = nfs.USR_ICONS_ICEBERGS value[mdb.TEXT] = kit.JoinLine(value[nfs.MODULE], value[mdb.TEXT]) msg := gdb.Event(m.Spawn(value), DREAM_TABLES) defer m.PushButton(strings.Join(msg.Appendv(ctx.ACTION), "")) case MASTER: - value[mdb.ICON] = nfs.USR_ICONS_CONTEXTS if spide, ok := list[value[mdb.NAME]]; ok { - value[mdb.ICON] = kit.Select(value[mdb.ICON], spide[mdb.ICON]) + value[mdb.ICONS] = kit.Select(value[mdb.ICONS], spide[mdb.ICONS]) } value[mdb.TEXT] = kit.JoinLine(value[nfs.MODULE], value[mdb.TEXT]) msg := gdb.Event(m.Spawn(value), DREAM_TABLES) defer m.PushButton(strings.Join(msg.Appendv(ctx.ACTION), "")) case aaa.LOGIN: - value[mdb.ICON] = kit.Select(value[mdb.ICON], agentIcons[value[AGENT]]) + value[mdb.ICONS] = kit.Select(value[mdb.ICONS], agentIcons[value[AGENT]]) value[mdb.TEXT] = kit.JoinWord(value[AGENT], value[cli.SYSTEM], value[aaa.IP]) defer m.PushButton(GRANT) default: @@ -278,12 +277,12 @@ func init() { gdb.Event(m, DREAM_INPUTS, arg) } }}, - mdb.CREATE: {Name: "create name*=hi icon@icons repos binary template", Hand: func(m *ice.Message, arg ...string) { + mdb.CREATE: {Name: "create name*=hi icons repos binary template", Hand: func(m *ice.Message, arg ...string) { kit.If(!strings.Contains(m.Option(mdb.NAME), "-") || !strings.HasPrefix(m.Option(mdb.NAME), "20"), func() { m.Option(mdb.NAME, m.Time("20060102-")+m.Option(mdb.NAME)) }) kit.If(mdb.Config(m, nfs.BINARY), func(p string) { m.OptionDefault(nfs.BINARY, p+m.Option(mdb.NAME)) }) kit.If(mdb.Config(m, nfs.REPOS), func(p string) { m.OptionDefault(nfs.REPOS, p+m.Option(mdb.NAME)) }) m.Option(nfs.REPOS, kit.Select("", kit.Slice(kit.Split(m.Option(nfs.REPOS)), -1), 0)) - m.OptionDefault(mdb.ICON, nfs.USR_ICONS_VOLCANOS) + m.OptionDefault(mdb.ICONS, nfs.USR_ICONS_CONTEXTS) if mdb.HashCreate(m); !m.IsCliUA() { _dream_start(m, m.Option(mdb.NAME)) } @@ -378,7 +377,7 @@ func init() { nfs.Trash(m, path.Join(ice.USR_LOCAL_WORK, m.Option(mdb.NAME))) }}, tcp.SEND: {Name: "send space*", Hand: func(m *ice.Message, arg ...string) { - m.Cmd(SPACE, m.Option(SPACE), DREAM, mdb.CREATE, m.OptionSimple(mdb.NAME, mdb.ICON, nfs.REPOS, nfs.BINARY)) + m.Cmd(SPACE, m.Option(SPACE), DREAM, mdb.CREATE, m.OptionSimple(mdb.NAME, mdb.ICONS, nfs.REPOS, nfs.BINARY)) m.Cmd(SPACE, m.Option(SPACE), DREAM, cli.START, m.OptionSimple(mdb.NAME)) ProcessIframe(m, "", m.MergePod(kit.Keys(m.Option(SPACE), m.Option(mdb.NAME)))) }}, @@ -419,7 +418,7 @@ func init() { } }}, }, StatsAction(), DreamAction(), mdb.ImportantHashAction( - mdb.SHORT, mdb.NAME, mdb.FIELD, "time,name,icon,repos,binary,template,restart", ctx.TOOLS, kit.Simple(STORE, SPIDE), + mdb.SHORT, mdb.NAME, mdb.FIELD, "time,name,icons,repos,binary,template,restart", ctx.TOOLS, kit.Simple(STORE, SPIDE), html.BUTTON, kit.JoinWord(PORTAL, ADMIN, DESKTOP, WIKI_WORD, STATUS, VIMER, XTERM, COMPILE), )), Hand: func(m *ice.Message, arg ...string) { if len(arg) == 0 { diff --git a/base/web/spide.go b/base/web/spide.go index e6c1b21b..ffbcd54d 100644 --- a/base/web/spide.go +++ b/base/web/spide.go @@ -337,7 +337,7 @@ func init() { } }}, mdb.CREATE: {Name: "create name* origin* type icons", Hand: func(m *ice.Message, arg ...string) { - _spide_create(m, m.Option(mdb.NAME), m.Option(ORIGIN), m.Option(mdb.TYPE), m.OptionDefault(mdb.ICONS, nfs.USR_ICONS_CONTEXTS)) + _spide_create(m, m.Option(mdb.NAME), m.Option(ORIGIN), m.Option(mdb.TYPE), m.OptionDefault(mdb.ICONS, nfs.USR_ICONS_VOLCANOS)) }}, COOKIE: {Name: "cookie key* value", Help: "ηŠΆζ€ι‡", Hand: func(m *ice.Message, arg ...string) { mdb.HashModify(m, m.OptionSimple(CLIENT_NAME), kit.Keys(COOKIE, m.Option(mdb.KEY)), m.Option(mdb.VALUE)) diff --git a/base/web/store.go b/base/web/store.go index 5d734f0b..fbb9ee2a 100644 --- a/base/web/store.go +++ b/base/web/store.go @@ -70,7 +70,7 @@ func init() { if value[mdb.TYPE] != WORKER { return } - m.Push("", value, kit.Split("time,name,icon,repos,binary,module,version")) + m.Push("", value, kit.Split("time,name,icons,repos,binary,module,version")) m.Push(mdb.TEXT, value[nfs.REPOS]).Push(ORIGIN, origin) if _, ok := list[value[mdb.NAME]]; ok || arg[0] == ice.OPS { m.PushButton(OPEN, PORTAL) diff --git a/core/code/xterm.go b/core/code/xterm.go index 16df1ee5..0c89b213 100644 --- a/core/code/xterm.go +++ b/core/code/xterm.go @@ -166,7 +166,13 @@ func init() { m.Action(mdb.CREATE, mdb.PRUNES) } } else { - kit.If(m.Length() == 0, func() { arg[0] = m.Cmdx("", mdb.CREATE, arg); mdb.HashSelect(m, arg[0]) }) + kit.If(m.Length() == 0, func() { + if arg[0] == SH { + arg[0] = cli.Shell(m) + } + arg[0] = m.Cmdx("", mdb.CREATE, arg) + mdb.HashSelect(m, arg[0]) + }) m.Push(mdb.HASH, arg[0]).Action(ice.APP) ctx.DisplayLocal(m, "") } diff --git a/meta.go b/meta.go index add73308..49fb78f4 100644 --- a/meta.go +++ b/meta.go @@ -202,6 +202,8 @@ func (m *Message) Table(cb Any) *Message { cb(index, value) case func(value Maps, index int): cb(value, index) + case func(value Maps, index, total int): + cb(value, index, n) case func(value Maps): cb(value) default: