From 0ce48b54f48014f2c0b51350acacb25ebb52df20 Mon Sep 17 00:00:00 2001 From: shy Date: Fri, 26 Jan 2024 16:07:31 +0800 Subject: [PATCH] add some --- base/ctx/config.go | 7 ++++- base/mdb/zone.go | 4 +-- base/web/dream.go | 64 +++++++++++++++++++++++++------------------- base/web/render.go | 2 ++ base/web/serve.go | 2 +- base/web/spide.go | 22 ++++++++++----- base/web/store.go | 7 ++--- base/web/store.js | 3 ++- core/chat/message.js | 2 +- misc/git/status.go | 1 + 10 files changed, 72 insertions(+), 42 deletions(-) diff --git a/base/ctx/config.go b/base/ctx/config.go index e9cfd71e..15f9f658 100644 --- a/base/ctx/config.go +++ b/base/ctx/config.go @@ -53,7 +53,12 @@ func _config_only(v ice.Any, arg ...string) bool { func _config_save(m *ice.Message, name string, arg ...string) { data, msg := ice.Map{}, m.Spawn(m.Source()) for _, k := range arg { - if v := mdb.Confv(msg, k); _config_only(v, mdb.META) && _config_only(kit.Value(v, mdb.META), mdb.SHORT, mdb.FIELD, mdb.FIELDS, mdb.ACTION, mdb.SORT, mdb.TOOLS) { + if v := mdb.Confv(msg, k); _config_only(v, mdb.META) && _config_only(kit.Value(v, mdb.META), + mdb.IMPORTANT, mdb.EXPIRE, mdb.SHORT, mdb.FIELD, mdb.FIELDS, mdb.ACTION, mdb.SORT, mdb.TOOLS, + "regexp", "path", "link", + "linux", "darwin", "windows", + "source", "script", + ) { continue } else { data[k] = v diff --git a/base/mdb/zone.go b/base/mdb/zone.go index 93bc1ccd..11e384ac 100644 --- a/base/mdb/zone.go +++ b/base/mdb/zone.go @@ -189,10 +189,10 @@ func ZoneAction(arg ...ice.Any) ice.Actions { } } func ExportZoneAction(arg ...ice.Any) ice.Actions { - return ice.MergeActions(ZoneAction(arg...), ice.Actions{ + return ice.MergeActions(ice.Actions{ ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { Config(m, IMPORTANT, ice.TRUE); ZoneImport(m, arg) }}, ice.CTX_EXIT: {Hand: func(m *ice.Message, arg ...string) { m.OptionFields(""); ZoneExport(m, arg) }}, - }) + }, ZoneAction(arg...)) } func PageZoneAction(arg ...ice.Any) ice.Actions { return ice.MergeActions(ice.Actions{ diff --git a/base/web/dream.go b/base/web/dream.go index 0672ef7f..3d007195 100644 --- a/base/web/dream.go +++ b/base/web/dream.go @@ -55,6 +55,36 @@ func _dream_list(m *ice.Message) *ice.Message { }) return m } +func _dream_more_list(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[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.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: + if spide, ok := list[value[mdb.NAME]]; ok { + value[mdb.ICON] = spide[mdb.ICON] + } + 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], agentIcon[value[AGENT]]) + value[mdb.TEXT] = kit.JoinWord(value[AGENT], value[cli.SYSTEM], value[aaa.IP]) + defer m.PushButton(GRANT) + default: + return + } + m.Push("", value, kit.Split(mdb.Config(m, mdb.FIELD)+",type,status,module,version,text")) + }) + return m +} func _dream_start(m *ice.Message, name string) { if m.Warn(name == "", ice.ErrNotValid, mdb.NAME) { return @@ -390,37 +420,17 @@ func init() { } return value }) - ctx.DisplayTableCard(m) - kit.If(cli.SystemFind(m, "go"), func() { - m.Action("filter", mdb.CREATE, STARTALL, STOPALL, cli.BUILD, PUBLISH) - }, func() { - m.Action(mdb.CREATE, STARTALL, STOPALL) - }) - msg := m.Cmds(SPACE) - msg.Table(func(value ice.Maps) { - value[mdb.ICON] = nfs.USR_ICONS_VOLCANOS - value[mdb.STATUS] = cli.START - value[nfs.REPOS] = "https://" + value[nfs.MODULE] - switch value[mdb.TYPE] { - case SERVER: - value[mdb.ICON] = nfs.USR_ICONS_ICEBERGS - msg := gdb.Event(m.Spawn(value), DREAM_TABLES) - defer m.PushButton(strings.Join(msg.Appendv(ctx.ACTION), "")) - case MASTER: - msg := gdb.Event(m.Spawn(value), DREAM_TABLES) - defer m.PushButton(strings.Join(msg.Appendv(ctx.ACTION), "")) - case aaa.LOGIN: - value[mdb.TEXT] = kit.JoinWord(value["agent"], value[cli.SYSTEM], value[aaa.IP]) - defer m.PushButton("grant") - default: - return - } - m.Push("", value, kit.Split(mdb.Config(m, mdb.FIELD)+",type,status,module,version,text")) - }) + _dream_more_list(m) 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) + ctx.DisplayTableCard(m) + kit.If(cli.SystemFind(m, "go"), func() { + m.Action(html.FILTER, mdb.CREATE, STARTALL, STOPALL, cli.BUILD, PUBLISH) + }, func() { + m.Action(mdb.CREATE, STARTALL, STOPALL) + }) } else if arg[0] == ctx.ACTION { gdb.Event(m, DREAM_ACTION, arg) } else { diff --git a/base/web/render.go b/base/web/render.go index a1746c7b..c7eaddf6 100644 --- a/base/web/render.go +++ b/base/web/render.go @@ -158,6 +158,7 @@ func RenderVersion(m *ice.Message) string { const ( CHAT = "chat" + GRANT = "grant" VIMER = "vimer" XTERM = "xterm" DESKTOP = "desktop" @@ -165,6 +166,7 @@ const ( COMPILE = "compile" BINPACK = "binpack" AUTOGEN = "autogen" + INSTALL = "install" CODE_GIT_SERVICE = "web.code.git.service" CODE_GIT_SEARCH = "web.code.git.search" diff --git a/base/web/serve.go b/base/web/serve.go index 3c411d1c..5d6e6211 100644 --- a/base/web/serve.go +++ b/base/web/serve.go @@ -31,7 +31,7 @@ func _serve_start(m *ice.Message) { kit.If(runtime.GOOS == cli.WINDOWS || m.Cmdx(cli.SYSTEM, "lsof", "-i", ":"+m.Option(tcp.PORT)) != "", func() { m.Go(func() { m.Cmd(SPIDE, ice.OPS, _serve_address(m)+"/exit", ice.Maps{CLIENT_TIMEOUT: "30ms"}) }).Sleep300ms() }) - cli.NodeInfo(m, kit.Select(ice.Info.Hostname, m.Option(tcp.NODENAME)), SERVER) + cli.NodeInfo(m, kit.Select(strings.TrimSuffix(ice.Info.Hostname, ".local"), m.Option(tcp.NODENAME)), SERVER) m.Start("", m.OptionSimple(tcp.HOST, tcp.PORT)...) m.Cmd(nfs.SAVE, ice.VAR_LOG_ICE_PORT, m.Option(tcp.PORT)) kit.For(kit.Split(m.Option(ice.DEV)), func(dev string) { diff --git a/base/web/spide.go b/base/web/spide.go index 031cc31c..0d558204 100644 --- a/base/web/spide.go +++ b/base/web/spide.go @@ -24,13 +24,15 @@ import ( kit "shylinux.com/x/toolkits" ) -func _spide_create(m *ice.Message, name, link, types string) { +func _spide_create(m *ice.Message, name, link, types, icon string) { if u, e := url.Parse(link); !m.Warn(e != nil || link == "", ice.ErrNotValid, link) { dir, file := path.Split(u.EscapedPath()) m.Logs(mdb.INSERT, SPIDE, name, LINK, link) mdb.HashSelectUpdate(m, mdb.HashCreate(m, CLIENT_NAME, name), func(value ice.Map) { + value[mdb.ICON] = icon value[SPIDE_CLIENT] = kit.Dict( - mdb.NAME, name, mdb.TYPE, types, SPIDE_METHOD, http.MethodGet, URL, link, ORIGIN, u.Scheme+"://"+u.Host, + mdb.NAME, name, mdb.TYPE, types, + SPIDE_METHOD, http.MethodGet, URL, link, ORIGIN, u.Scheme+"://"+u.Host, tcp.PROTOCOL, u.Scheme, tcp.HOSTNAME, u.Hostname(), tcp.HOST, u.Host, nfs.PATH, dir, nfs.FILE, file, cli.TIMEOUT, "300s", ) }) @@ -261,6 +263,13 @@ const ( QS = "?" ) + +var agentIcon = map[string]string{ + "Safari": "usr/icons/Safari.png", + "Edg": "usr/icons/Edg.png", + "MicroMessenger": "usr/icons/wechat.png", +} + const SPIDE = "spide" func init() { @@ -304,7 +313,7 @@ func init() { dev := kit.Select("https://2021.shylinux.com", ice.Info.Make.Domain, conf[cli.CTX_DEV]) m.Cmd("", mdb.CREATE, ice.SHY, kit.Select("https://shylinux.com", conf[cli.CTX_SHY]), nfs.REPOS) m.Cmd("", mdb.CREATE, ice.DEV, dev, nfs.REPOS) - m.Cmd("", mdb.CREATE, ice.DEV_IP, kit.Select(dev, os.Getenv("ctx_dev_ip")), nfs.REPOS) + m.Cmd("", mdb.CREATE, ice.DEV_IP, kit.Select(dev, os.Getenv("ctx_dev_ip"))) m.Cmd("", mdb.CREATE, ice.OPS, kit.Select("http://localhost:9020", conf[cli.CTX_OPS]), nfs.REPOS) m.Cmd("", mdb.CREATE, ice.DEMO, kit.Select("http://localhost:20000", conf[cli.CTX_DEMO])) m.Cmd("", mdb.CREATE, ice.MAIL, kit.Select("https://mail.shylinux.com", conf[cli.CTX_MAIL])) @@ -342,8 +351,8 @@ func init() { mdb.HashSelectValue(m.Spawn(), func(value ice.Map) { m.Push(kit.Select(ORIGIN, arg, 0), kit.Value(value, CLIENT_ORIGIN)) }) } }}, - mdb.CREATE: {Name: "create name origin type", Hand: func(m *ice.Message, arg ...string) { - _spide_create(m, m.Option(mdb.NAME), m.Option(ORIGIN), m.Option(mdb.TYPE)) + mdb.CREATE: {Name: "create name origin type icon", Hand: func(m *ice.Message, arg ...string) { + _spide_create(m, m.Option(mdb.NAME), m.Option(ORIGIN), m.Option(mdb.TYPE), m.Option(mdb.ICON)) }}, 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)) @@ -364,8 +373,9 @@ func init() { DEV_REQUEST_TEXT: {Hand: func(m *ice.Message, arg ...string) { m.Echo(SpaceName(ice.Info.NodeName)) }}, DEV_CREATE_TOKEN: {Hand: func(m *ice.Message, arg ...string) { m.Cmd(SPACE, tcp.DIAL, ice.DEV, m.Option(CLIENT_NAME), m.OptionSimple(TOKEN)) + m.Sleep300ms() }}, - }, DevTokenAction(CLIENT_NAME, CLIENT_URL), mdb.HashAction(mdb.SHORT, CLIENT_NAME, mdb.FIELD, "time,client.name,client.url,client.type,token")), Hand: func(m *ice.Message, arg ...string) { + }, DevTokenAction(CLIENT_NAME, CLIENT_URL), mdb.HashAction(mdb.SHORT, CLIENT_NAME, mdb.FIELD, "time,client.name,client.url,client.type,token,icon")), Hand: func(m *ice.Message, arg ...string) { if len(arg) < 2 || arg[0] == "" || (len(arg) > 3 && arg[3] == "") { list := m.CmdMap(SPACE, mdb.NAME) mdb.HashSelect(m, kit.Slice(arg, 0, 1)...).Sort("client.type,client.name", []string{nfs.REPOS, ""}) diff --git a/base/web/store.go b/base/web/store.go index dbd54e0f..6972611b 100644 --- a/base/web/store.go +++ b/base/web/store.go @@ -18,14 +18,14 @@ const STORE = "store" func init() { Index.MergeCommands(ice.Commands{ - STORE: {Name: "store", Help: "系统商店", Role: aaa.VOID, Actions: ice.MergeActions(ice.Actions{ + STORE: {Name: "store list", Help: "系统商店", Role: aaa.VOID, Actions: ice.MergeActions(ice.Actions{ mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) { m.Cmds(SPIDE).Table(func(value ice.Maps) { kit.If(value[CLIENT_TYPE] == nfs.REPOS, func() { m.Push("", value, arg[0]) }) }) }}, mdb.CREATE: {Name: "create name* origin*", Hand: func(m *ice.Message, arg ...string) { m.Cmd(SPIDE, mdb.CREATE, m.OptionSimple("name,origin"), mdb.TYPE, nfs.REPOS) }}, - "install": {Hand: func(m *ice.Message, arg ...string) { + INSTALL: {Hand: func(m *ice.Message, arg ...string) { if !kit.HasPrefixList(arg, ctx.RUN) { if !nfs.Exists(m, path.Join(ice.USR_LOCAL_WORK, m.Option(mdb.NAME))) { if strings.HasPrefix(m.Option(mdb.ICON), nfs.REQUIRE) { @@ -63,8 +63,9 @@ func init() { return } m.Push("", value, kit.Split("time,name,icon,repos,binary,module,version")) + m.Push(mdb.TEXT, kit.JoinLine(value[nfs.REPOS], value[nfs.BINARY])) if m.Push(ORIGIN, origin); !nfs.Exists(m, path.Join(ice.USR_LOCAL_WORK, value[mdb.NAME])) { - m.PushButton("install", PORTAL) + m.PushButton(INSTALL, PORTAL) } else { m.PushButton(OPEN, PORTAL) } diff --git a/base/web/store.js b/base/web/store.js index 63699be3..07bc2ac3 100644 --- a/base/web/store.js +++ b/base/web/store.js @@ -1,5 +1,6 @@ Volcanos(chat.ONIMPORT, { - _init: function(can, msg) { can.ui = can.onappend.layout(can), can.onimport._project(can, msg) + _init: function(can, msg) { + can.ui = can.onappend.layout(can), can.onimport._project(can, msg) can.onappend.style(can, "output card", can.ui.content), can.onmotion.delay(can, function() { can.onimport.layout(can) }) can.sup.onimport._field = function(sup, msg) { msg.Table(function(item) { can.onappend._plugin(can, item, {style: html.FLOAT}, function(sub) {}) }) } }, diff --git a/core/chat/message.js b/core/chat/message.js index 51c50d0a..68ce6dac 100644 --- a/core/chat/message.js +++ b/core/chat/message.js @@ -1,5 +1,5 @@ Volcanos(chat.ONIMPORT, { - _init: function(can, msg) { delete(can._status._cache), delete(can._status._cache_key) + _init: function(can, msg) { if (can.isCmdMode()) { can.onappend.style(can, html.OUTPUT) } can.ui = can.onappend.layout(can), can.onimport._project(can, msg) }, diff --git a/misc/git/status.go b/misc/git/status.go index da17aadc..0afecc64 100644 --- a/misc/git/status.go +++ b/misc/git/status.go @@ -65,6 +65,7 @@ func init() { text = append(text, list[0]+" ---") } } + // m.Push(mdb.TEXT, kit.JoinLine(m.Option(nfs.MODULE), strings.Join(text, ", "))) m.Push(mdb.TEXT, strings.Join(text, ", ")) m.PushButton(kit.Dict(m.CommandKey(), "源码")) }},