diff --git a/base/mdb/hash.go b/base/mdb/hash.go index c55f0d66..06ef123c 100644 --- a/base/mdb/hash.go +++ b/base/mdb/hash.go @@ -204,7 +204,7 @@ func DevDataAction(fields ...string) ice.Actions { BACK = "back" ) return ice.Actions{ - DEV_REQUEST: {Name: "request origin*", Help: "请求", Hand: func(m *ice.Message, arg ...string) { + DEV_REQUEST: {Name: "request origin*", Help: "请求", Icon: "bi bi-cloud-download", Hand: func(m *ice.Message, arg ...string) { back := m.Options(ice.MSG_USERWEB, m.Option(ice.MSG_USERHOST)).MergePod("") m.ProcessOpen(m.Options(ice.MSG_USERWEB, m.Option(ORIGIN), ice.MSG_USERPOD, "").MergePodCmd("", m.PrefixKey(), ACTION, DEV_CHOOSE, BACK, back, DAEMON, m.Option(ice.MSG_DAEMON))) }}, diff --git a/base/nfs/trash.go b/base/nfs/trash.go index dcb3f8af..4e5a5907 100644 --- a/base/nfs/trash.go +++ b/base/nfs/trash.go @@ -36,7 +36,7 @@ func init() { Remove(m, m.Option(FILE)) mdb.HashRemove(m, m.OptionSimple(mdb.HASH)) }}, - mdb.REVERT: {Hand: func(m *ice.Message, arg ...string) { + mdb.REVERT: {Help: "恢复", Icon: "bi bi-folder-symlink", Hand: func(m *ice.Message, arg ...string) { msg := mdb.HashSelect(m.Spawn(), m.Option(mdb.HASH)) Rename(m, msg.Append(FILE), msg.Append(FROM)) mdb.HashRemove(m, m.OptionSimple(mdb.HASH)) diff --git a/base/tcp/host.go b/base/tcp/host.go index 363fa48e..66760905 100644 --- a/base/tcp/host.go +++ b/base/tcp/host.go @@ -10,6 +10,7 @@ import ( "shylinux.com/x/icebergs/base/aaa" "shylinux.com/x/icebergs/base/mdb" "shylinux.com/x/icebergs/base/nfs" + "shylinux.com/x/icebergs/base/web/html" kit "shylinux.com/x/toolkits" ) @@ -26,7 +27,7 @@ func _host_domain(m *ice.Message) string { }, ) } -func _host_list(m *ice.Message, name string) { +func _host_list(m *ice.Message, name string) *ice.Message { if ifs, e := net.Interfaces(); m.Assert(e) { for _, v := range ifs { if !strings.Contains(v.Name, name) || len(v.HardwareAddr.String()) == 0 { @@ -38,20 +39,21 @@ func _host_list(m *ice.Message, name string) { if strings.Contains(ip[0], nfs.DF) || len(ip) == 0 { continue } - m.Push(mdb.INDEX, v.Index).Push(mdb.NAME, v.Name).Push(aaa.IP, ip[0]).Push("mask", ip[1]).Push("hard", v.HardwareAddr.String()) + m.Push(mdb.INDEX, v.Index).Push(mdb.NAME, v.Name).Push(aaa.IP, ip[0]).Push(MASK, ip[1]).Push(MAC_ADDRESS, v.HardwareAddr.String()) } } } } if len(m.Appendv(aaa.IP)) == 0 { - m.Push(mdb.INDEX, -1).Push(mdb.NAME, LOCALHOST).Push(aaa.IP, "127.0.0.1").Push("mask", "255.0.0.0").Push("hard", "") + m.Push(mdb.INDEX, -1).Push(mdb.NAME, LOCALHOST).Push(aaa.IP, "127.0.0.1").Push(MASK, "255.0.0.0").Push(MAC_ADDRESS, "") } - m.SortInt(mdb.INDEX) - m.StatusTimeCount(DOMAIN, _host_domain(m)) + return m.SortInt(mdb.INDEX).StatusTimeCount(DOMAIN, _host_domain(m)) } const ( - LOCALHOST = "localhost" + LOCALHOST = "localhost" + MAC_ADDRESS = "mac-address" + MASK = "mask" ISLOCAL = "islocal" PUBLISH = "publish" @@ -62,7 +64,11 @@ const HOST = "host" func init() { Index.MergeCommands(ice.Commands{ - HOST: {Name: "host name auto domain", Help: "主机", Actions: ice.MergeActions(ice.Actions{ + HOST: {Name: "host name auto domain", Help: "主机", Meta: kit.Dict( + ice.CTX_TRANS, kit.Dict(html.INPUT, kit.Dict( + aaa.IP, "网络地址", MASK, "子网掩码", MAC_ADDRESS, "物理地址", + )), + ), Actions: ice.MergeActions(ice.Actions{ ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { m.Cmd("", func(value ice.Maps) { m.Cmd("", aaa.WHITE, LOCALHOST, value[aaa.IP]) }) }}, @@ -96,13 +102,18 @@ func init() { GATEWAY: {Hand: func(m *ice.Message, arg ...string) { m.Push(aaa.IP, kit.Keys(kit.Slice(strings.Split(m.Cmdv(HOST, aaa.IP), nfs.PT), 0, 3), "1")) }}, - DOMAIN: {Name: "domain ip", Hand: func(m *ice.Message, arg ...string) { + DOMAIN: {Name: "domain ip", Help: "主机", Icon: "bi bi-house-check", Hand: func(m *ice.Message, arg ...string) { kit.If(m.Option(aaa.IP), func(p string) { mdb.Config(m, DOMAIN, p) }) m.Echo(mdb.Config(m, DOMAIN)) }}, }, mdb.HashAction(mdb.SHORT, mdb.TEXT)), Hand: func(m *ice.Message, arg ...string) { - _host_list(m, kit.Select("", arg, 0)) - m.PushAction(DOMAIN) + _host_list(m, kit.Select("", arg, 0)).Table(func(value ice.Maps) { + if value[aaa.IP] == mdb.Config(m, DOMAIN) { + m.Push(mdb.STATUS, "current").PushButton("") + } else { + m.Push(mdb.STATUS, "").PushButton(DOMAIN) + } + }) }}, }) } diff --git a/core/chat/macos/desktop.css b/core/chat/macos/desktop.css index 30080fb5..36ec578a 100644 --- a/core/chat/macos/desktop.css +++ b/core/chat/macos/desktop.css @@ -13,11 +13,9 @@ fieldset.macos.desktop>div.output>fieldset.macos.menu div.item.time { margin-rig fieldset.macos.desktop>div.output>fieldset.macos.menu>div.output { overflow:hidden; } fieldset.macos.desktop>div.output>fieldset.macos.dock { border:var(--box-border); border-radius:var(--plugin-radius); position:absolute; bottom:var(--input-margin); transition:margin-left 0.3s; } fieldset.macos.desktop>div.output>fieldset.macos.searchs { position:absolute; z-index:11; } -body:not(.mobile) fieldset.macos.desktop>div.output>fieldset.macos.searchs>form.option>div.item.keyword input { background-color:transparent; width:var(--river-width); } fieldset.macos.desktop>div.output>fieldset.macos.notifications { height:calc(100% - 125px); width:320px; overflow:auto; position:absolute; top:var(--desktop-menu-height); left:calc(100% - 320px); z-index:11; } fieldset.macos.desktop>div.output>fieldset.macos.notifications>div.action>div.item { padding:0; } fieldset.macos.desktop>div.output>fieldset.macos.notifications>div.action>div.item.refresh>span { font-size:var(--action-height); margin-top:-5px; } -body.windows fieldset.macos.desktop>div.output>fieldset.macos.notifications>div.action>div.item.refresh>span { font-size:24px; margin-top:0; } fieldset.macos.desktop>div.output>fieldset.macos.notifications>div.output>div.item { clear:both; display:flex; padding:var(--input-padding)} fieldset.macos.desktop>div.output>fieldset.macos.notifications>div.output>div.item:not(:last-child) { border-bottom:var(--box-border); } fieldset.macos.desktop>div.output>fieldset.macos.notifications>div.output>div.item.read { color:var(--disable-fg-color); } @@ -44,7 +42,6 @@ fieldset.macos.desktop>div.output>div.desktop>fieldset>form.option>div.icon { ma fieldset.macos.desktop>div.output>div.desktop>fieldset>form.option>div.list.icons { margin:var(--button-margin) 0; } fieldset.macos.desktop>div.output>div.desktop>fieldset>form.option>div.back.icons { margin:var(--button-margin) 0; } fieldset.macos.desktop>div.output>div.desktop>fieldset>form.option>div.item:last-child { margin-right:100px; } -body.width2 fieldset.macos.desktop>div.output>div.desktop>fieldset>form.option>div.item:last-child { margin-right:0; } fieldset.macos.desktop>div.output>div.desktop>fieldset>div.action>div.item:last-child { margin-right:100px; } fieldset.macos.desktop>div.output>div.desktop>fieldset>div.action>* { margin:var(--button-margin) var(--input-margin); } fieldset.macos.desktop>div.output>div.desktop>fieldset>div.action>div.tabs { display:none; } @@ -60,8 +57,6 @@ fieldset.macos.desktop>div.output>div.desktop>fieldset.web.chat.location>form.op fieldset.macos.desktop>div.output>div.desktop>fieldset.web.chat.location>div.action>div.item.text { display:none; } fieldset.macos.desktop>div.output>div.desktop>fieldset.web.chat.location>div.action>div.item.style select { width:80px; } fieldset.macos.desktop>div.output>div.desktop>fieldset.web.chat.location>div.action>div.item.feature select { width:60px; } -fieldset.macos.desktop>div.output>div.desktop>fieldset.web.chat.iframe>form.option>div.item.hash>input { width:var(--river-width); } -body.width2 fieldset.macos.desktop>div.output>div.desktop>fieldset.web.chat.iframe>form.option>div.item.hash>input { width:var(--input-width); } fieldset.macos.desktop>div.output>div.desktop>fieldset.web.chat.macos.finder>div.status { display:none; } fieldset.macos.desktop>div.output>div.desktop>fieldset.web.chat.macos.finder>div.output div.item.disable { display:none; } fieldset.macos.desktop>div.output>fieldset.web.chat.macos.dock>div.output div.item.disable { display:none; } @@ -94,3 +89,5 @@ body:not(.mobile) fieldset.macos.desktop>div.output>div.desktop>fieldset:not(:ho body:not(.mobile) fieldset.macos.desktop>div.output>div.desktop>div.item { margin:var(--desktop-icon-margin); } body.mobile fieldset.macos.desktop>div.output>div.desktop>fieldset>form.option>div.item.text>input { width:60px; } body.mobile fieldset.macos.dock>div.output { overflow-y:hidden; } +body:not(.mobile) fieldset.macos.desktop>div.output>fieldset.macos.searchs>form.option>div.item.keyword input { background-color:transparent; width:var(--river-width); } +body.windows fieldset.macos.desktop>div.output>fieldset.macos.notifications>div.action>div.item.refresh>span { font-size:24px; margin-top:0; }