1
0
forked from x/icebergs

opt repos

This commit is contained in:
IT 老营长 @云轩领航-创始人 2023-12-20 23:59:46 +08:00
parent eed06ba25c
commit 68dc8bc671
11 changed files with 90 additions and 65 deletions

View File

@ -62,9 +62,9 @@ func SessAuth(m *ice.Message, value ice.Any, arg ...string) *ice.Message {
kit.If(language == "", func() { language = ice.Info.Lang })
language = strings.ReplaceAll(strings.ToLower(kit.Select("", kit.Split(language, " ."), 0)), "_", "-")
return m.Auth(
USERNICK, m.Option(ice.MSG_USERNICK, kit.Format(kit.Value(value, USERNICK))),
USERNAME, m.Option(ice.MSG_USERNAME, kit.Format(kit.Value(value, USERNAME))),
USERROLE, m.Option(ice.MSG_USERROLE, kit.Format(kit.Value(value, USERROLE))),
USERNAME, m.Option(ice.MSG_USERNAME, kit.Format(kit.Value(value, USERNAME))),
USERNICK, m.Option(ice.MSG_USERNICK, kit.Format(kit.Value(value, USERNICK))),
LANGUAGE, m.Option(ice.MSG_LANGUAGE, language), arg,
logs.FileLineMeta(kit.Select(logs.FileLine(-1), m.Option("aaa.checker"))),
)

View File

@ -42,14 +42,7 @@ func _config_only(v ice.Any, arg ...string) bool {
for k, v := range v {
if v, ok := v.(ice.Map); ok && len(v) == 0 {
continue
} else {
for k := range v {
if kit.IsIn(k, mdb.IMPORTANT) && len(v) > 1 {
return false
}
}
}
if kit.IndexOf(arg, k) == -1 {
} else if kit.IndexOf(arg, k) == -1 {
return false
}
}
@ -60,7 +53,7 @@ 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) {
if v := mdb.Confv(msg, k); _config_only(v, mdb.META) && _config_only(kit.Value(v, mdb.META), mdb.IMPORTANT, mdb.SHORT, mdb.FIELD, mdb.FIELDS, mdb.ACTION, mdb.SORT, mdb.TOOLS) {
continue
} else {
data[k] = v

View File

@ -12,6 +12,12 @@ import (
kit "shylinux.com/x/toolkits"
)
func _host_publish(m *ice.Message) string {
if p := mdb.Config(m, DOMAIN); p != "" {
return p
}
return m.Cmdv(HOST, mdb.Config(m, ice.MAIN), aaa.IP)
}
func _host_list(m *ice.Message, name string) {
if ifs, e := net.Interfaces(); m.Assert(e) {
for _, v := range ifs {
@ -33,6 +39,7 @@ func _host_list(m *ice.Message, name string) {
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.SortInt(mdb.INDEX)
m.StatusTimeCount(mdb.ConfigSimple(m, ice.MAIN, DOMAIN))
}
const (
@ -41,12 +48,13 @@ const (
ISLOCAL = "islocal"
PUBLISH = "publish"
GATEWAY = "gateway"
DOMAIN = "domain"
)
const HOST = "host"
func init() {
Index.MergeCommands(ice.Commands{
HOST: {Name: "host name auto", Help: "主机", Actions: ice.MergeActions(ice.Actions{
HOST: {Name: "host name auto domain", Help: "主机", 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]) })
}},
@ -71,15 +79,19 @@ func init() {
}},
PUBLISH: {Hand: func(m *ice.Message, arg ...string) {
if strings.Contains(arg[0], LOCALHOST) {
arg[0] = strings.Replace(arg[0], LOCALHOST, m.Cmdv(HOST, mdb.Config(m, "publish"), aaa.IP), 1)
arg[0] = strings.Replace(arg[0], LOCALHOST, _host_publish(m), 1)
} else if strings.Contains(arg[0], "127.0.0.1") {
arg[0] = strings.Replace(arg[0], "127.0.0.1", m.Cmdv(HOST, mdb.Config(m, "publish"), aaa.IP), 1)
arg[0] = strings.Replace(arg[0], "127.0.0.1", _host_publish(m), 1)
}
m.Echo(arg[0])
}},
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) {
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), mdb.ClearOnExitHashAction()), Hand: func(m *ice.Message, arg ...string) {
_host_list(m, kit.Select("", arg, 0))
}},

View File

@ -29,8 +29,7 @@ func _space_qrcode(m *ice.Message, dev string) {
func _space_dial(m *ice.Message, dev, name string, arg ...string) {
u := kit.ParseURL(kit.MergeURL2(strings.Replace(m.Cmdv(SPIDE, dev, CLIENT_ORIGIN), HTTP, "ws", 1), PP(SPACE), mdb.TYPE, ice.Info.NodeType, mdb.NAME, name,
nfs.MODULE, ice.Info.Make.Module, nfs.VERSION, ice.Info.Make.Versions(), arg))
args := kit.SimpleKV("type,name,host,port", u.Scheme, dev, u.Hostname(),
kit.Select(kit.Select("443", "80", u.Scheme == "ws"), u.Port()))
args := kit.SimpleKV("type,name,host,port", u.Scheme, dev, u.Hostname(), kit.Select(kit.Select("443", "80", u.Scheme == "ws"), u.Port()))
gdb.Go(m, func() {
once := sync.Once{}
redial := kit.Dict(mdb.Configv(m, REDIAL))
@ -294,6 +293,11 @@ func init() {
nfs.PS: {Hand: func(m *ice.Message, arg ...string) { _space_fork(m) }},
}, mdb.HashAction(mdb.LIMIT, 1000, mdb.LEAST, 500, mdb.SHORT, mdb.NAME, mdb.FIELD, "time,type,name,text,module,version,ip,usernick,username,userrole", ctx.ACTION, OPEN, REDIAL, kit.Dict("a", 3000, "b", 1000, "c", 1000)), mdb.ClearOnExitHashAction()), Hand: func(m *ice.Message, arg ...string) {
if len(arg) < 2 {
if len(arg) == 1 && strings.Contains(arg[0], nfs.PT) {
ls := kit.Split(arg[0], nfs.PT)
m.Cmdy(SPACE, ls[0], SPACE, kit.Keys(ls[1:]))
return
}
defer m.StatusTimeCount(kit.Dict(ice.MAIN, mdb.Config(m, ice.MAIN)))
m.Option(ice.MSG_USERWEB, tcp.PublishLocalhost(m, m.Option(ice.MSG_USERWEB)))
kit.If(len(arg) > 0 && arg[0] != "", func() { m.OptionFields(ice.MSG_DETAIL) })
@ -311,7 +315,7 @@ func init() {
}
m.PushButton(kit.Select(OPEN, LOGIN, value[mdb.TYPE] == LOGIN), mdb.REMOVE)
})
m.Sort("type,name,text", kit.Simple(WEIXIN, PORTAL, WORKER, SERVER))
m.Sort("", kit.Simple(WEIXIN, PORTAL, WORKER, SERVER))
} else {
_space_send(m, arg[0], kit.Simple(kit.Split(arg[1]), arg[2:])...)
}

View File

@ -301,6 +301,7 @@ const ( // CTX
CTX_CLOSE = "close"
CTX_INIT = "_init"
CTX_OPEN = "_open"
CTX_EXIT = "_exit"
CTX_ICONS = "_icons"
CTX_TRANS = "_trans"

View File

@ -7,6 +7,7 @@ import (
"shylinux.com/x/icebergs/base/aaa"
"shylinux.com/x/icebergs/base/cli"
"shylinux.com/x/icebergs/base/gdb"
"shylinux.com/x/icebergs/base/log"
"shylinux.com/x/icebergs/base/mdb"
"shylinux.com/x/icebergs/base/nfs"
"shylinux.com/x/icebergs/base/tcp"
@ -21,7 +22,8 @@ func init() {
GRANT: {Name: "grant space auto", Help: "授权", Actions: ice.MergeActions(ice.Actions{
web.SPACE_LOGIN: {Hand: func(m *ice.Message, arg ...string) {
m.GoSleep30ms(func() {
link := tcp.PublishLocalhost(m, m.MergePodCmd("", "", web.SPACE, m.Option(mdb.NAME)))
p := m.Cmdx(web.SPACE, web.DOMAIN)
link := tcp.PublishLocalhost(m, m.Options(ice.MSG_USERWEB, p).MergePodCmd("", "", web.SPACE, kit.Keys(web.ParseLink(m, p)[ice.POD], m.Option(mdb.NAME)), log.DEBUG, m.Option(ice.MSG_DEBUG)))
m.Cmd(web.SPACE, m.Option(mdb.NAME), cli.PWD, m.Option(mdb.NAME), link, m.Cmdx(cli.QRCODE, link))
})
}},
@ -41,8 +43,15 @@ func init() {
} else {
kit.If(m.Option(ice.MSG_SESSID) == "", func() { web.RenderCookie(m, aaa.SessCreate(m, m.Option(ice.MSG_USERNAME))) })
m.Option(ice.MSG_USERUA, msg.Append(ice.MSG_USERUA))
m.Cmd(web.SPACE, m.Option(web.SPACE), ice.MSG_SESSID, aaa.SessCreate(m, m.Option(ice.MSG_USERNAME)))
m.ProcessLocation(web.MergeURL2(m, msg.Append(mdb.TEXT)))
if ls := kit.Split(m.Option(web.SPACE), nfs.PT); len(ls) > 1 {
space := kit.Keys(kit.Slice(ls, 0, -1))
m.Option(ice.MSG_SESSID, m.Cmdx(web.SPACE, space, aaa.SESS, mdb.CREATE, m.Option(ice.MSG_USERNAME)))
m.ProcessLocation(web.MergeURL2(m, msg.Append(mdb.TEXT), ice.POD, space))
} else {
aaa.SessCreate(m, m.Option(ice.MSG_USERNAME))
m.ProcessLocation(web.MergeURL2(m, msg.Append(mdb.TEXT)))
}
m.Cmd(web.SPACE, m.Option(web.SPACE), ice.MSG_SESSID, m.Option(ice.MSG_SESSID))
}
gdb.Event(m, web.SPACE_GRANT, m.OptionSimple(web.SPACE))
}

View File

@ -2,10 +2,8 @@ package macos
import (
"path"
"strings"
ice "shylinux.com/x/icebergs"
"shylinux.com/x/icebergs/base/cli"
"shylinux.com/x/icebergs/base/ctx"
"shylinux.com/x/icebergs/base/mdb"
"shylinux.com/x/icebergs/base/nfs"
@ -19,21 +17,7 @@ const APPLICATIONS = "applications"
func init() {
Index.MergeCommands(ice.Commands{
APPLICATIONS: {Help: "应用", Actions: ice.MergeActions(ice.Actions{
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
FinderAppend(m, APPLICATIONS, m.PrefixKey())
defer Notify(m, "Infomation.png", cli.RUNTIME, "系统启动成功", ctx.INDEX, cli.RUNTIME)
m.Travel(func(p *ice.Context, c *ice.Context, key string, cmd *ice.Command) {
kit.If(cmd.Icon, func() {
if !kit.HasPrefix(cmd.Icon, nfs.PS, web.HTTP) {
nfs.Exists(m, ice.USR_ICONS+cmd.Icon, func(p string) { cmd.Icon = p })
nfs.Exists(m, path.Join(path.Dir(strings.TrimPrefix(ctx.GetCmdFile(m, m.PrefixKey()), kit.Path(""))), cmd.Icon), func(p string) {
cmd.Icon = p
})
}
AppInstall(m, cmd.Icon, m.PrefixKey())
})
})
}},
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { FinderAppend(m, APPLICATIONS, m.PrefixKey()) }},
code.INSTALL: {Hand: func(m *ice.Message, arg ...string) { AppInstall(m, arg[0], arg[1]) }},
mdb.CREATE: {Name: "create space index args name icon"},
}, PodCmdAction(), CmdHashAction("space,index,args"), mdb.ClearOnExitHashAction())},
@ -43,7 +27,7 @@ func install(m *ice.Message, cmd, icon, index string, arg ...string) {
if icon == "" {
return
}
nfs.Exists(m, ice.USR_ICONS+icon, func(p string) { icon = p })
kit.If(!kit.HasPrefix(icon, nfs.PS, web.HTTP) && !nfs.Exists(m, icon), func() { icon = ice.USR_ICONS + icon })
name := kit.TrimExt(path.Base(icon), nfs.PNG, nfs.JPG, nfs.JPEG)
m.Cmd(Prefix(cmd), mdb.CREATE, mdb.NAME, name, mdb.ICON, icon, ctx.INDEX, index, arg)
}

View File

@ -1,9 +1,15 @@
package macos
import (
"path"
"strings"
ice "shylinux.com/x/icebergs"
"shylinux.com/x/icebergs/base/aaa"
"shylinux.com/x/icebergs/base/cli"
"shylinux.com/x/icebergs/base/ctx"
"shylinux.com/x/icebergs/base/mdb"
"shylinux.com/x/icebergs/base/nfs"
"shylinux.com/x/icebergs/base/web"
kit "shylinux.com/x/toolkits"
)
@ -12,15 +18,32 @@ const DESKTOP = "desktop"
func init() {
Index.MergeCommands(ice.Commands{
ice.CTX_OPEN: {Hand: func(m *ice.Message, arg ...string) {
if m.Cmd(DESKTOP).Length() == 0 {
DeskAppend(m, "Books.png", web.WIKI_WORD)
DeskAppend(m, "Photos.png", web.WIKI_FEEL)
DeskAppend(m, "Grapher.png", web.WIKI_DRAW)
DeskAppend(m, "Calendar.png", web.TEAM_PLAN)
}
if m.Cmd(DOCK).Length() == 0 {
DockAppend(m, "Finder.png", Prefix(FINDER))
DockAppend(m, "Safari.png", web.CHAT_IFRAME)
DockAppend(m, "Terminal.png", web.CODE_XTERM)
DockAppend(m, "go.png", web.CODE_COMPILE)
DockAppend(m, "git.png", web.CODE_GIT_STATUS)
DockAppend(m, "vimer.png", web.CODE_VIMER)
}
m.Travel(func(p *ice.Context, c *ice.Context, key string, cmd *ice.Command) {
kit.If(cmd.Icon, func() {
if !kit.HasPrefix(cmd.Icon, nfs.PS, web.HTTP) {
nfs.Exists(m, path.Join(path.Dir(strings.TrimPrefix(ctx.GetCmdFile(m, m.PrefixKey()), kit.Path(""))), cmd.Icon), func(p string) { cmd.Icon = p })
}
AppInstall(m, cmd.Icon, m.PrefixKey())
})
})
Notify(m, "Infomation.png", cli.RUNTIME, "系统启动成功", ctx.INDEX, cli.RUNTIME)
}},
DESKTOP: {Help: "应用桌面", Actions: ice.MergeActions(ice.Actions{
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
if m.Cmd(DESKTOP).Length() == 0 {
DeskAppend(m, "Books.png", web.WIKI_WORD)
DeskAppend(m, "Photos.png", web.WIKI_FEEL)
DeskAppend(m, "Grapher.png", web.WIKI_DRAW)
DeskAppend(m, "Calendar.png", web.TEAM_PLAN)
}
}},
web.DREAM_TABLES: {Hand: func(m *ice.Message, arg ...string) {
kit.Switch(m.Option(mdb.TYPE), kit.Simple(web.WORKER, web.SERVER), func() { m.PushButton(kit.Dict(m.CommandKey(), "桌面")) })
}},

View File

@ -4,25 +4,13 @@ import (
ice "shylinux.com/x/icebergs"
"shylinux.com/x/icebergs/base/aaa"
"shylinux.com/x/icebergs/base/mdb"
"shylinux.com/x/icebergs/base/web"
)
const DOCK = "dock"
func init() {
Index.MergeCommands(ice.Commands{
DOCK: {Help: "工具栏", Actions: ice.MergeActions(ice.Actions{
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
if m.Cmd(DOCK).Length() == 0 {
DockAppend(m, "Finder.png", Prefix(FINDER))
DockAppend(m, "Safari.png", web.CHAT_IFRAME)
DockAppend(m, "Terminal.png", web.CODE_XTERM)
DockAppend(m, "go.png", web.CODE_COMPILE)
DockAppend(m, "git.png", web.CODE_GIT_STATUS)
DockAppend(m, "vimer.png", web.CODE_VIMER)
}
}},
}, aaa.RoleAction(), CmdHashAction(), mdb.ExportHashAction())},
DOCK: {Help: "工具栏", Actions: ice.MergeActions(ice.Actions{}, aaa.RoleAction(), CmdHashAction(), mdb.ExportHashAction())},
})
}

View File

@ -52,11 +52,17 @@ var Index = &Context{Name: ICE, Help: "冰山模块", Commands: Commands{
kit.If(p != nil, func() { c._command(m.Spawn(c), c.Commands[CTX_INIT], CTX_INIT, arg...) })
})
}},
CTX_OPEN: {Hand: func(m *Message, arg ...string) {
m.Travel(func(p *Context, c *Context) {
kit.If(p != nil, func() { c._command(m.Spawn(c), c.Commands[CTX_OPEN], CTX_OPEN, arg...) })
})
}},
INIT: {Hand: func(m *Message, arg ...string) {
m.Cmd(kit.Keys(MDB, CTX_INIT))
m.Cmd(CTX_INIT)
m.Cmd(SOURCE, ETC_INIT_SHY)
loadImportant(m)
m.Cmd(CTX_OPEN)
}},
QUIT: {Hand: func(m *Message, arg ...string) {
m.GoSleep300ms(func() { os.Exit(kit.Int(kit.Select("0", arg, 0))) })

View File

@ -481,8 +481,8 @@ func init() {
switch arg[0] {
case ORIGIN:
m.Push(arg[0], "https://shylinux.com/x/icons")
m.Push(arg[0], "https://shylinux.com/x/volcanos")
m.Push(arg[0], "https://shylinux.com/x/icebergs")
m.Push(arg[0], "https://shylinux.com/x/geoarea")
m.Push(arg[0], "https://shylinux.com/x/node_modules")
}
}
switch arg[0] {
@ -504,14 +504,20 @@ func init() {
}},
CLONE: {Name: "clone origin* branch name path", Help: "克隆", Hand: func(m *ice.Message, arg ...string) {
m.OptionDefault(mdb.NAME, path.Base(m.Option(ORIGIN)))
m.OptionDefault(nfs.PATH, path.Join(nfs.USR, m.Option(mdb.NAME)))
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")) {
return
}
defer web.ToastProcess(m)()
if _, err := git.PlainClone(m.Option(nfs.PATH), false, &git.CloneOptions{URL: m.Option(ORIGIN), Auth: _repos_auth(m, m.Option(ORIGIN))}); m.Warn(err) {
_repos_insert(m, m.Option(nfs.PATH))
for _, dev := range []string{ice.DEV, ice.SHY} {
p := m.Option(ORIGIN)
kit.If(!kit.HasPrefix(p, nfs.PS, web.HTTP), func() { p = m.Cmdv("web.spide", dev, web.CLIENT_ORIGIN) + "/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) {
_repos_insert(m, m.Option(nfs.PATH))
return
}
}
}},
PULL: {Help: "下载", Hand: func(m *ice.Message, arg ...string) {
@ -541,7 +547,6 @@ func init() {
kit.If(_last > last, func() { last = _last })
}
}
m.Info("%s: %s", m.ActionKey(), value[REPOS])
return _repos_status(m, value[REPOS], repos)
})
remote := ice.Info.Make.Remote