diff --git a/base/cli/daemon.go b/base/cli/daemon.go index b3ab33e1..32c61f89 100644 --- a/base/cli/daemon.go +++ b/base/cli/daemon.go @@ -113,7 +113,7 @@ func init() { return } mdb.HashModify(m, mdb.HASH, kit.Select(h, value[mdb.HASH]), STATUS, STOP) - m.Cmd(gdb.SIGNAL, gdb.KILL, value[PID]) + kit.If(value[PID], func() { m.Cmd(gdb.SIGNAL, gdb.KILL, value[PID]) }) }) }}, mdb.REMOVE: {Hand: func(m *ice.Message, arg ...string) { diff --git a/base/mdb/list.go b/base/mdb/list.go index 24288e31..c98c0986 100644 --- a/base/mdb/list.go +++ b/base/mdb/list.go @@ -174,8 +174,8 @@ func OptionPages(m *ice.Message, arg ...string) (page int, size int) { m.Option(CACHE_OFFEND, kit.Select(m.Option(CACHE_OFFEND), arg, 0)) m.Option(CACHE_LIMIT, kit.Select(m.Option(CACHE_LIMIT), arg, 1)) m.Option(CACHE_FILTER, kit.Select(m.Option(CACHE_FILTER), arg, 2)) - m.Option(LIMIT, kit.Select(m.Option(LIMIT), arg, 0)) - m.Option(OFFEND, kit.Select(m.Option(OFFEND), arg, 1)) + m.Option(OFFEND, kit.Select(m.Option(OFFEND), arg, 0)) + m.Option(LIMIT, kit.Select(m.Option(LIMIT), arg, 1)) size = kit.Int(kit.Select("10", m.Option(LIMIT))) page = kit.Int(m.Option(OFFEND))/size + 1 return diff --git a/base/nfs/dir.go b/base/nfs/dir.go index 45e6f098..7d0ce4c7 100644 --- a/base/nfs/dir.go +++ b/base/nfs/dir.go @@ -130,6 +130,7 @@ func _dir_list(m *ice.Message, root string, dir string, level int, deep bool, di const ( PWD = "./" SRC = "src/" + BIN = "bin/" USR = "usr/" REQUIRE = "/require/" diff --git a/base/web/cache.go b/base/web/cache.go index 89323ae9..bf3acc4e 100644 --- a/base/web/cache.go +++ b/base/web/cache.go @@ -84,7 +84,7 @@ func _cache_download(m *ice.Message, r *http.Response, file string, cb ice.Any) return } last = value / base - switch m.Logs(nfs.SAVE, nfs.FILE, p, mdb.COUNT, count, mdb.TOTAL, total, mdb.VALUE, value); cb := cb.(type) { + switch m.Logs(nfs.SAVE, nfs.FILE, p, mdb.COUNT, kit.FmtSize(int64(count)), mdb.TOTAL, kit.FmtSize(int64(total)), mdb.VALUE, value); cb := cb.(type) { case func(int, int, int): kit.If(cb != nil, func() { cb(count, total, value) }) case nil: diff --git a/base/web/serve.go b/base/web/serve.go index 6c1c620e..224b9b73 100644 --- a/base/web/serve.go +++ b/base/web/serve.go @@ -198,3 +198,11 @@ func Script(m *ice.Message, str string, arg ...ice.Any) string { return ice.Render(m, ice.RENDER_SCRIPT, kit.Format(str, arg...)) } func ChatCmdPath(arg ...string) string { return path.Join("/chat/cmd/", path.Join(arg...)) } +func RequireFile(m *ice.Message, file string) string { + if strings.HasPrefix(file, nfs.PS) || strings.HasPrefix(file, ice.HTTP) { + return file + } else if file != "" { + return "/require/" + file + } + return "" +} diff --git a/base/web/spide.go b/base/web/spide.go index 1cd7ef6b..be55609a 100644 --- a/base/web/spide.go +++ b/base/web/spide.go @@ -26,7 +26,7 @@ func _spide_create(m *ice.Message, name, link string) { m.Logs(mdb.INSERT, SPIDE, name, LINK, link) mdb.HashSelectUpdate(m, mdb.HashCreate(m, CLIENT_NAME, name), func(value ice.Map) { value[SPIDE_CLIENT] = kit.Dict(mdb.NAME, name, SPIDE_METHOD, http.MethodPost, "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, "30s", + tcp.PROTOCOL, u.Scheme, tcp.HOSTNAME, u.Hostname(), tcp.HOST, u.Host, nfs.PATH, dir, nfs.FILE, file, cli.TIMEOUT, "300s", ) }) } diff --git a/core/chat/header.go b/core/chat/header.go index 69cea82f..93264de6 100644 --- a/core/chat/header.go +++ b/core/chat/header.go @@ -1,14 +1,11 @@ package chat import ( - "strings" - ice "shylinux.com/x/icebergs" "shylinux.com/x/icebergs/base/aaa" "shylinux.com/x/icebergs/base/ctx" "shylinux.com/x/icebergs/base/gdb" "shylinux.com/x/icebergs/base/mdb" - "shylinux.com/x/icebergs/base/nfs" "shylinux.com/x/icebergs/base/tcp" "shylinux.com/x/icebergs/base/web" kit "shylinux.com/x/toolkits" @@ -17,8 +14,7 @@ import ( func _header_users(m *ice.Message, arg ...string) { if m.Warn(m.Option(ice.MSG_USERNAME) == "", ice.ErrNotLogin) { return - } - if m.Warn(m.Option(web.SHARE) != "", ice.ErrNotRight, "没有权限") { + } else if m.Warn(m.Option(web.SHARE) != "", ice.ErrNotRight, "没有权限") { return } m.Cmdy(aaa.USER, mdb.MODIFY, aaa.USERNAME, m.Option(ice.MSG_USERNAME), m.ActionKey(), m.Option(m.ActionKey(), arg[0])) @@ -26,8 +22,7 @@ func _header_users(m *ice.Message, arg ...string) { func _header_share(m *ice.Message, arg ...string) { if m.Warn(m.Option(ice.MSG_USERNAME) == "", ice.ErrNotLogin, "没有登录") { return - } - if kit.For(arg, func(k, v string) { m.Option(k, v) }); m.Option(mdb.LINK) == "" { + } else if kit.For(arg, func(k, v string) { m.Option(k, v) }); m.Option(mdb.LINK) == "" { m.Cmdy(web.SHARE, mdb.CREATE, mdb.TYPE, web.LOGIN, arg) } else { m.Option(mdb.LINK, tcp.PublishLocalhost(m, m.Option(mdb.LINK))) @@ -52,8 +47,7 @@ func _header_check(m *ice.Message, arg ...string) bool { } if m.Option(ice.MSG_USERNAME) != "" { return true - } - if ctx.OptionFromConfig(m, SSO) == "" && ctx.OptionFromConfig(m, web.LOGIN) == "" { + } else if ctx.OptionFromConfig(m, SSO) == "" && ctx.OptionFromConfig(m, web.LOGIN) == "" { m.Option(SSO, GetSSO(m)) } return false @@ -81,20 +75,15 @@ func init() { aaa.AVATAR: {Hand: _header_users}, web.SHARE: {Hand: _header_share}, "webpack": {Hand: ctx.CmdHandler("webpack", "build")}, - }, ctx.ConfAction(SSO, "")), Hand: func(m *ice.Message, arg ...string) { + }, ctx.ConfAction(SSO, "", aaa.LANGUAGE, "zh")), Hand: func(m *ice.Message, arg ...string) { if gdb.Event(m, HEADER_AGENT); !_header_check(m, arg...) { return } msg := m.Cmd(aaa.USER, m.Option(ice.MSG_USERNAME)) kit.For([]string{aaa.USERNICK, aaa.LANGUAGE}, func(k string) { m.Option(k, msg.Append(k)) }) - for _, k := range []string{aaa.BACKGROUND, aaa.AVATAR} { - if strings.HasPrefix(msg.Append(k), nfs.PS) || strings.HasPrefix(msg.Append(k), ice.HTTP) { - m.Option(k, msg.Append(k)) - } else if msg.Append(k) != "" { - m.Option(k, "/require/"+msg.Append(k)) - } - } - m.Echo(kit.Select(kit.Select("", strings.SplitN(ice.Info.Make.Remote, "://", 2), 1), mdb.Config(m, TITLE))).Option(MENUS, mdb.Config(m, MENUS)) + kit.For([]string{aaa.AVATAR, aaa.BACKGROUND}, func(k string) { m.Option(k, web.RequireFile(m, msg.Append(k))) }) + kit.If(m.Option(aaa.LANGUAGE) == "", func() { m.Option(aaa.LANGUAGE, mdb.Config(m, aaa.LANGUAGE)) }) + m.Echo(mdb.Config(m, TITLE)).Option(MENUS, mdb.Config(m, MENUS)) }}, }) } diff --git a/core/chat/macos/desktop.css b/core/chat/macos/desktop.css index 92af8f18..a2aa2d5c 100644 --- a/core/chat/macos/desktop.css +++ b/core/chat/macos/desktop.css @@ -42,8 +42,8 @@ fieldset.macos.desktop>div.output>div.desktop>fieldset.web.code.compile>form.opt fieldset.macos.desktop>div.output>div.desktop>fieldset.web.chat.iframe>div.status { display:none; } fieldset.macos.desktop>div.output>div.desktop>fieldset.web.chat.iframe>form.option>div.item.hash>input { width:360px; } fieldset.macos.desktop>div.output>div.desktop>fieldset.web.chat.macos.finder>div.status { display:none; } -fieldset.macos.desktop>div.output>div.desktop>fieldset>div.output>fieldset>form.option>div.item { margin-right:0px; } -fieldset.macos.desktop>div.output>div.desktop>fieldset>div.output>fieldset>div.action>div.item { margin-right:0px; } +/* fieldset.macos.desktop>div.output>div.desktop>fieldset>div.output>fieldset>form.option>div.item { margin-right:0px; } */ +/* fieldset.macos.desktop>div.output>div.desktop>fieldset>div.output>fieldset>div.action>div.item { margin-right:0px; } */ fieldset.macos.menu>div.output>div.item { padding:0 5px; float:right; cursor:pointer; } fieldset.macos.menu>div.output>div.item.avatar>img { height:25px; } fieldset.macos.menu>div.output>div.menu { float:left; padding:0 20px; cursor:pointer; } diff --git a/core/code/binpack.go b/core/code/binpack.go index 37a831e6..1cf1b03f 100644 --- a/core/code/binpack.go +++ b/core/code/binpack.go @@ -65,6 +65,9 @@ func _binpack_all(m *ice.Message) { for _, k := range kit.SortedKey(list) { v := kit.Select(k, list[k]) m.Cmd(nfs.DIR, nfs.PWD, nfs.PATH, kit.Dict(nfs.DIR_ROOT, v, nfs.DIR_REG, kit.ExtReg(SH, SHY, PY, JS, CSS, HTML))).Table(func(value ice.Maps) { + if ice.Info.Make.Remote != "shylinux.com/x/contexts" && kit.HasPrefix(k, ice.USR_ICEBERGS) { + return + } _binpack_file(m, w, kit.Path(v, value[nfs.PATH]), path.Join(k, value[nfs.PATH])) }) } @@ -76,7 +79,9 @@ func _binpack_all(m *ice.Message) { } }) m.Option(nfs.DIR_REG, kit.ExtReg(nfs.SHY)) - _binpack_dir(m, w, "usr/release/") + if ice.Info.Make.Remote == "shylinux.com/x/contexts" { + _binpack_dir(m, w, "usr/release/") + } } } diff --git a/core/code/install.go b/core/code/install.go index 0992f978..a3d3ab9e 100644 --- a/core/code/install.go +++ b/core/code/install.go @@ -122,7 +122,7 @@ func _install_stop(m *ice.Message, arg ...string) { m.Cmd(cli.DAEMON, func(value ice.Maps) { kit.If(value[cli.PID] == m.Option(cli.PID), func() { m.Cmd(cli.DAEMON, cli.STOP, kit.Dict(mdb.HASH, value[mdb.HASH])) }) }) - m.Cmd(gdb.SIGNAL, gdb.KILL, m.Option(cli.PID)) + kit.If(m.Option(cli.PID), func() { m.Cmd(gdb.SIGNAL, gdb.KILL, m.Option(cli.PID)) }) } func _install_clear(m *ice.Message, arg ...string) { m.Cmd(cli.DAEMON, func(value ice.Maps) { diff --git a/core/code/xterm.go b/core/code/xterm.go index b67cade0..6cfcc361 100644 --- a/core/code/xterm.go +++ b/core/code/xterm.go @@ -146,7 +146,7 @@ func init() { } } else { if m.Length() == 0 { - arg[0] = m.Cmdx("", mdb.CREATE, mdb.TYPE, arg) + arg[0] = m.Cmdx("", mdb.CREATE, kit.SimpleKV("type,name,text,path", arg)) mdb.HashSelect(m, arg[0]) } m.Push(mdb.HASH, arg[0]) diff --git a/misc/java/compile.shy b/misc/java/compile.shy index 82b99793..f3f107d4 100644 --- a/misc/java/compile.shy +++ b/misc/java/compile.shy @@ -11,6 +11,7 @@ shell ` wget https://github.com/Tencent/TencentKona-8/releases/download/8.0.11-GA/TencentKona8.0.11.b2_jdk_linux-x86_64_8u345.tar.gz tar xvf TencentKona8.0.11.b2_jdk_linux-x86_64_8u345.tar.gz && cd TencentKona-8.0.11-345/ +https://repo.huaweicloud.com/java/jdk/8u202-b08/ wget https://mirrors.huaweicloud.com/openjdk/18/openjdk-18_linux-x64_bin.tar.gz tar xvf openjdk-18_linux-x64_bin.tar.gz && cd jdk-18 `