mirror of
https://shylinux.com/x/icebergs
synced 2025-04-25 17:18:05 +08:00
add some
This commit is contained in:
parent
f3bc5eb1e1
commit
b4627b2975
@ -1,7 +1,6 @@
|
|||||||
package web
|
package web
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net/http"
|
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"regexp"
|
"regexp"
|
||||||
@ -22,7 +21,7 @@ import (
|
|||||||
kit "shylinux.com/x/toolkits"
|
kit "shylinux.com/x/toolkits"
|
||||||
)
|
)
|
||||||
|
|
||||||
func _dream_list(m *ice.Message, simple bool) *ice.Message {
|
func _dream_list(m *ice.Message) *ice.Message {
|
||||||
list := m.CmdMap(SPACE, mdb.NAME)
|
list := m.CmdMap(SPACE, mdb.NAME)
|
||||||
mdb.HashSelects(m.Spawn()).Table(func(value ice.Maps, index int, head []string) {
|
mdb.HashSelects(m.Spawn()).Table(func(value ice.Maps, index int, head []string) {
|
||||||
if value[aaa.ACCESS] == aaa.PRIVATE && (m.Option(ice.FROM_SPACE) != "" || !aaa.IsTechOrRoot(m)) {
|
if value[aaa.ACCESS] == aaa.PRIVATE && (m.Option(ice.FROM_SPACE) != "" || !aaa.IsTechOrRoot(m)) {
|
||||||
@ -32,46 +31,35 @@ func _dream_list(m *ice.Message, simple bool) *ice.Message {
|
|||||||
value[ice.MAIN] = space[ice.MAIN]
|
value[ice.MAIN] = space[ice.MAIN]
|
||||||
value[mdb.ICONS] = space[mdb.ICONS]
|
value[mdb.ICONS] = space[mdb.ICONS]
|
||||||
m.Push("", value, kit.Slice(head, 0, -1))
|
m.Push("", value, kit.Slice(head, 0, -1))
|
||||||
if m.IsCliUA() || simple {
|
m.Push(mdb.TYPE, space[mdb.TYPE]).Push(cli.STATUS, cli.START)
|
||||||
m.Push(mdb.TYPE, space[mdb.TYPE]).Push(cli.STATUS, cli.START)
|
m.Push(nfs.MODULE, space[nfs.MODULE]).Push(nfs.VERSION, space[nfs.VERSION])
|
||||||
m.Push(nfs.MODULE, space[nfs.MODULE]).Push(nfs.VERSION, space[nfs.VERSION])
|
button := []ice.Any{PORTAL, DESKTOP, ADMIN, WORD}
|
||||||
// m.Push(mdb.TEXT, DreamStat(m, value[mdb.NAME]))
|
text := space[nfs.MODULE]
|
||||||
m.Push(mdb.TEXT, "")
|
kit.If(m.Option(ice.DREAM_SIMPLE) != ice.TRUE && aaa.IsTechOrRoot(m), func() {
|
||||||
button := []ice.Any{PORTAL, DESKTOP, ADMIN, WORD, OPEN}
|
kit.If(m.IsDebug(), func() {
|
||||||
kit.If(aaa.IsTechOrRoot(m), func() { button = append(button, cli.STOP) })
|
button = append(button, VIMER, STATUS, COMPILE, cli.RUNTIME, XTERM)
|
||||||
m.PushButton(button...)
|
text += "\n" + DreamStat(m, value[mdb.NAME])
|
||||||
} else {
|
})
|
||||||
msg := gdb.Event(m.Spawn(value, space), DREAM_TABLES)
|
button = append(button, "settings", cli.STOP)
|
||||||
kit.If(aaa.IsTechOrRoot(m), func() { msg.Copy(m.Spawn().PushButton(cli.STOP)) })
|
})
|
||||||
m.Push(mdb.TYPE, space[mdb.TYPE]).Push(cli.STATUS, cli.START)
|
m.Push(mdb.TEXT, text)
|
||||||
m.Push(nfs.MODULE, space[nfs.MODULE]).Push(nfs.VERSION, space[nfs.VERSION])
|
m.PushButton(append(button, OPEN)...)
|
||||||
m.Push(mdb.TEXT, space[nfs.MODULE]+"\n"+msg.Append(mdb.TEXT))
|
|
||||||
m.PushButton(strings.Join(msg.Appendv(ctx.ACTION), ""))
|
|
||||||
}
|
|
||||||
} else if aaa.IsTechOrRoot(m) {
|
} else if aaa.IsTechOrRoot(m) {
|
||||||
m.Push("", value, kit.Slice(head, 0, -1))
|
m.Push("", value, kit.Slice(head, 0, -1))
|
||||||
|
m.Push(nfs.MODULE, "").Push(nfs.VERSION, "").Push(mdb.TEXT, "")
|
||||||
if m.Push(mdb.TYPE, WORKER); nfs.Exists(m, path.Join(ice.USR_LOCAL_WORK, value[mdb.NAME])) {
|
if m.Push(mdb.TYPE, WORKER); nfs.Exists(m, path.Join(ice.USR_LOCAL_WORK, value[mdb.NAME])) {
|
||||||
m.Push(cli.STATUS, cli.STOP).Push(nfs.MODULE, "").Push(nfs.VERSION, "").Push(mdb.TEXT, "")
|
m.Push(cli.STATUS, cli.STOP).PushButton(cli.START, nfs.TRASH)
|
||||||
kit.If(aaa.IsTechOrRoot(m), func() { m.PushButton(cli.START, nfs.TRASH) }, func() { m.PushButton() })
|
|
||||||
} else {
|
} else {
|
||||||
m.Push(cli.STATUS, cli.BEGIN).Push(nfs.MODULE, "").Push(nfs.VERSION, "").Push(mdb.TEXT, "")
|
m.Push(cli.STATUS, cli.BEGIN).PushButton(cli.START, mdb.REMOVE)
|
||||||
kit.If(aaa.IsTechOrRoot(m), func() { m.PushButton(cli.START, mdb.REMOVE) }, func() { m.PushButton() })
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
m.RewriteAppend(func(value, key string, index int) string {
|
m.RewriteAppend(func(value, key string, index int) string {
|
||||||
if key == mdb.TIME {
|
if key == mdb.TIME {
|
||||||
if space, ok := list[m.Appendv(mdb.NAME)[index]]; ok {
|
if space, ok := list[m.Appendv(mdb.NAME)[index]]; ok {
|
||||||
value = space[mdb.TIME]
|
return space[mdb.TIME]
|
||||||
}
|
}
|
||||||
}
|
} else if key == mdb.ICONS {
|
||||||
return value
|
|
||||||
})
|
|
||||||
return m
|
|
||||||
}
|
|
||||||
func _dream_list_icon(m *ice.Message) {
|
|
||||||
m.RewriteAppend(func(value, key string, index int) string {
|
|
||||||
if key == mdb.ICONS {
|
|
||||||
if kit.HasPrefix(value, HTTP, nfs.PS) {
|
if kit.HasPrefix(value, HTTP, nfs.PS) {
|
||||||
return value
|
return value
|
||||||
} else if nfs.ExistsFile(m, path.Join(ice.USR_LOCAL_WORK, m.Appendv(mdb.NAME)[index], value)) {
|
} else if nfs.ExistsFile(m, path.Join(ice.USR_LOCAL_WORK, m.Appendv(mdb.NAME)[index], value)) {
|
||||||
@ -82,34 +70,32 @@ func _dream_list_icon(m *ice.Message) {
|
|||||||
}
|
}
|
||||||
return value
|
return value
|
||||||
})
|
})
|
||||||
|
return m
|
||||||
}
|
}
|
||||||
func _dream_list_more(m *ice.Message, simple bool) *ice.Message {
|
func _dream_list_more(m *ice.Message) *ice.Message {
|
||||||
field := kit.Split(mdb.Config(m, mdb.FIELD) + ",type,status,module,version,text")
|
field := kit.Split(mdb.Config(m, mdb.FIELD) + ",type,status,module,version,text")
|
||||||
m.Cmds(SPACE).Table(func(value ice.Maps) {
|
m.Cmds(SPACE).Table(func(value ice.Maps) {
|
||||||
value[nfs.REPOS] = "https://" + value[nfs.MODULE]
|
value[nfs.REPOS] = "https://" + value[nfs.MODULE]
|
||||||
value[aaa.ACCESS] = kit.Select("", value[aaa.USERROLE], value[aaa.USERROLE] != aaa.VOID)
|
value[aaa.ACCESS] = kit.Select("", value[aaa.USERROLE], value[aaa.USERROLE] != aaa.VOID)
|
||||||
value[mdb.STATUS] = cli.START
|
value[mdb.STATUS] = cli.START
|
||||||
button := []ice.Any{PORTAL, DESKTOP, ADMIN, WORD, VIMER, STATUS, COMPILE, cli.RUNTIME, XTERM, OPEN}
|
button := []ice.Any{PORTAL, DESKTOP, ADMIN, WORD}
|
||||||
|
kit.If(m.IsDebug(), func() { button = append(button, VIMER, STATUS, COMPILE, cli.RUNTIME, XTERM) })
|
||||||
switch value[mdb.TYPE] {
|
switch value[mdb.TYPE] {
|
||||||
case ORIGIN:
|
case ORIGIN:
|
||||||
value[mdb.TEXT] = kit.JoinLine(value[nfs.MODULE], value[mdb.TEXT])
|
value[mdb.TEXT] = kit.JoinLine(value[nfs.MODULE], value[mdb.TEXT])
|
||||||
button = append(button, "gettoken")
|
button = append(button, GETTOKEN, OPEN)
|
||||||
if value[aaa.ACCESS] == "" {
|
kit.If(value[aaa.ACCESS] == "", func() { button = []ice.Any{PORTAL, OPEN} })
|
||||||
defer m.PushButton(PORTAL, OPEN)
|
|
||||||
} else {
|
|
||||||
defer m.PushButton(button...)
|
|
||||||
}
|
|
||||||
case SERVER:
|
case SERVER:
|
||||||
button = append(button, "settoken")
|
|
||||||
value[mdb.TEXT] = kit.JoinLine(value[nfs.MODULE], value[mdb.TEXT])
|
value[mdb.TEXT] = kit.JoinLine(value[nfs.MODULE], value[mdb.TEXT])
|
||||||
defer m.PushButton(button...)
|
button = append(button, SETTOKEN, OPEN)
|
||||||
case aaa.LOGIN:
|
case aaa.LOGIN:
|
||||||
value[mdb.TEXT] = kit.JoinWord(value[AGENT], value[cli.SYSTEM], value[aaa.IP], kit.Format(PublicIP(m, value[aaa.IP])))
|
value[mdb.TEXT] = kit.JoinWord(value[AGENT], value[cli.SYSTEM], value[aaa.IP], kit.Format(PublicIP(m, value[aaa.IP])))
|
||||||
defer m.PushButton(GRANT)
|
button = []ice.Any{GRANT}
|
||||||
default:
|
default:
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
m.Push("", value, field)
|
m.Push("", value, field)
|
||||||
|
m.PushButton(button...)
|
||||||
})
|
})
|
||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
@ -207,6 +193,8 @@ const (
|
|||||||
STOPALL = "stopall"
|
STOPALL = "stopall"
|
||||||
FOR_EACH = "forEach"
|
FOR_EACH = "forEach"
|
||||||
FOR_FLOW = "forFlow"
|
FOR_FLOW = "forFlow"
|
||||||
|
GETTOKEN = "gettoken"
|
||||||
|
SETTOKEN = "settoken"
|
||||||
|
|
||||||
DREAM_INPUTS = "dream.inputs"
|
DREAM_INPUTS = "dream.inputs"
|
||||||
DREAM_CREATE = "dream.create"
|
DREAM_CREATE = "dream.create"
|
||||||
@ -216,7 +204,6 @@ const (
|
|||||||
DREAM_STOP = "dream.stop"
|
DREAM_STOP = "dream.stop"
|
||||||
DREAM_OPEN = "dream.open"
|
DREAM_OPEN = "dream.open"
|
||||||
DREAM_CLOSE = "dream.close"
|
DREAM_CLOSE = "dream.close"
|
||||||
|
|
||||||
DREAM_TABLES = "dream.tables"
|
DREAM_TABLES = "dream.tables"
|
||||||
DREAM_ACTION = "dream.action"
|
DREAM_ACTION = "dream.action"
|
||||||
|
|
||||||
@ -237,66 +224,28 @@ func init() {
|
|||||||
每个空间都自带软件开发工具,也可以随时编程添加新的功能。
|
每个空间都自带软件开发工具,也可以随时编程添加新的功能。
|
||||||
`, 200.0)
|
`, 200.0)
|
||||||
}},
|
}},
|
||||||
html.BUTTON: {Hand: func(m *ice.Message, arg ...string) {
|
|
||||||
mdb.Config(m, html.BUTTON, kit.Join(arg))
|
|
||||||
}},
|
|
||||||
mdb.SEARCH: {Hand: func(m *ice.Message, arg ...string) {
|
mdb.SEARCH: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
if mdb.IsSearchPreview(m, arg) {
|
if mdb.IsSearchPreview(m, arg) {
|
||||||
mdb.HashSelects(m.Spawn()).Table(func(value ice.Maps) { m.PushSearch(mdb.TYPE, WORKER, mdb.TEXT, m.MergePod(value[mdb.NAME]), value) })
|
mdb.HashSelects(m.Spawn()).Table(func(value ice.Maps) { m.PushSearch(mdb.TYPE, WORKER, mdb.TEXT, m.MergePod(value[mdb.NAME]), value) })
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) {
|
mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
switch m.Option(ctx.ACTION) {
|
switch arg[0] {
|
||||||
case mdb.CREATE:
|
case mdb.NAME:
|
||||||
switch arg[0] {
|
DreamEach(m, "", kit.Select(cli.START, cli.STOP, m.Option(ctx.ACTION) == STARTALL), func(name string) { m.Push(arg[0], name) })
|
||||||
case mdb.NAME:
|
case tcp.NODENAME:
|
||||||
_dream_list(m, true).Cut("name,status,time")
|
m.Cmdy(SPACE, m.Option(mdb.NAME), SPACE, ice.INFO).CutTo(mdb.NAME, arg[0])
|
||||||
case mdb.ICONS:
|
case aaa.USERNAME:
|
||||||
mdb.HashInputs(m, arg)
|
if aaa.IsTechOrRoot(m) && m.Option(ctx.ACTION) == GRANT {
|
||||||
case nfs.REPOS:
|
m.Cmdy(aaa.USER).Cut(aaa.USERNAME, aaa.USERNICK).Option(ice.TABLE_CHECKBOX, ice.FALSE)
|
||||||
defer ctx.DisplayInputKey(m, ctx.STYLE, "_nameicon")
|
} else {
|
||||||
m.Cmd(STORE).Table(func(value ice.Maps) {
|
m.Push(arg[0], m.Option(ice.MSG_USERNAME))
|
||||||
m.Spawn().SplitIndex(m.Cmdx(SPIDE, value[mdb.NAME], SPIDE_RAW, http.MethodGet, C(DREAM))).Table(func(value ice.Maps) {
|
m.Push(arg[0], m.Option(tcp.NODENAME))
|
||||||
m.PushRecord(value, mdb.ICONS, nfs.REPOS, nfs.VERSION, mdb.NAME)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
case nfs.BINARY:
|
|
||||||
defer ctx.DisplayInputKey(m, ctx.STYLE, "_nameicon")
|
|
||||||
m.Cmd(STORE).Table(func(val ice.Maps) {
|
|
||||||
m.Spawn().SplitIndex(m.Cmdx(SPIDE, val[mdb.NAME], SPIDE_RAW, http.MethodGet, S(), cli.GOOS, runtime.GOOS, cli.GOARCH, runtime.GOARCH)).Table(func(value ice.Maps) {
|
|
||||||
m.Push(mdb.ICONS, value[mdb.ICONS])
|
|
||||||
m.Push(arg[0], val[ORIGIN]+S(value[mdb.NAME])).Push(nfs.SIZE, value[nfs.SIZE]).Push(mdb.TIME, value[mdb.TIME])
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
case STARTALL:
|
case nfs.REPOS:
|
||||||
DreamEach(m, "", cli.STOP, func(name string) { m.Push(arg[0], name) })
|
case nfs.BINARY:
|
||||||
case tcp.SEND:
|
|
||||||
m.Cmd(SPACE, func(value ice.Maps) {
|
|
||||||
kit.If(kit.IsIn(value[mdb.TYPE], SERVER), func() { m.Push(arg[0], value[mdb.NAME]) })
|
|
||||||
})
|
|
||||||
default:
|
default:
|
||||||
switch arg[0] {
|
gdb.Event(m, DREAM_INPUTS, arg)
|
||||||
case mdb.NAME:
|
|
||||||
DreamEach(m, "", cli.START, func(name string) { m.Push(arg[0], name) })
|
|
||||||
case ctx.CMDS:
|
|
||||||
m.Cmdy(ctx.COMMAND)
|
|
||||||
case nfs.FILE:
|
|
||||||
m.Options(nfs.DIR_TYPE, nfs.TYPE_CAT, ice.MSG_FIELDS, nfs.PATH)
|
|
||||||
m.Cmdy(nfs.DIR, nfs.SRC).Cmdy(nfs.DIR, nfs.ETC).Cmdy(nfs.DIR, "")
|
|
||||||
case tcp.NODENAME:
|
|
||||||
m.Cmdy(SPACE, m.Option(mdb.NAME), SPACE, ice.INFO).CutTo(mdb.NAME, tcp.NODENAME)
|
|
||||||
case aaa.USERNAME:
|
|
||||||
if aaa.IsTechOrRoot(m) && m.Option(ctx.ACTION) == GRANT {
|
|
||||||
m.Cmdy(aaa.USER).Cut(aaa.USERNAME, aaa.USERNICK)
|
|
||||||
m.Option(ice.TABLE_CHECKBOX, ice.FALSE)
|
|
||||||
} else {
|
|
||||||
m.Push(arg[0], m.Option(ice.MSG_USERNAME))
|
|
||||||
m.Push(arg[0], m.Option(tcp.NODENAME))
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
gdb.Event(m, DREAM_INPUTS, arg)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
nfs.SCAN: {Hand: func(m *ice.Message, arg ...string) {
|
nfs.SCAN: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
@ -309,12 +258,9 @@ func init() {
|
|||||||
}},
|
}},
|
||||||
mdb.CREATE: {Name: "create name*=hi repos binary", Hand: func(m *ice.Message, arg ...string) {
|
mdb.CREATE: {Name: "create name*=hi repos binary", 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(!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.Split(m.Option(nfs.REPOS)), -1))
|
m.Option(nfs.REPOS, kit.Select("", kit.Split(m.Option(nfs.REPOS)), -1))
|
||||||
if mdb.HashCreate(m); ice.Info.Important == true {
|
if mdb.HashCreate(m); ice.Info.Important == true {
|
||||||
_dream_start(m, m.Option(mdb.NAME))
|
_dream_start(m, m.Option(mdb.NAME))
|
||||||
StreamPushRefreshConfirm(m, m.Trans("refresh for new space ", "刷新列表查看新空间 ")+m.Option(mdb.NAME))
|
|
||||||
SpaceEvent(m, OPS_DREAM_CREATE, m.Option(mdb.NAME), m.OptionSimple(mdb.NAME, nfs.REPOS, nfs.BINARY)...)
|
SpaceEvent(m, OPS_DREAM_CREATE, m.Option(mdb.NAME), m.OptionSimple(mdb.NAME, nfs.REPOS, nfs.BINARY)...)
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
@ -342,9 +288,8 @@ func init() {
|
|||||||
m.Cmd(SPACE, path.Base(p), cli.RUNTIME, UPGRADE)
|
m.Cmd(SPACE, path.Base(p), cli.RUNTIME, UPGRADE)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
})
|
}).Sleep3s()
|
||||||
m.Sleep("3s")
|
m.ProcessHold()
|
||||||
// kit.If(m.Option(mdb.NAME) == "", func() { m.Sleep("5s").Cmdy(ROUTE, cli.BUILD).ProcessInner() })
|
|
||||||
}},
|
}},
|
||||||
PUBLISH: {Name: "publish name", Hand: func(m *ice.Message, arg ...string) {
|
PUBLISH: {Name: "publish name", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Option(ice.MSG_TITLE, kit.Keys(m.Option(ice.MSG_USERPOD0), m.Option(ice.MSG_USERPOD), m.CommandKey(), m.ActionKey()))
|
m.Option(ice.MSG_TITLE, kit.Keys(m.Option(ice.MSG_USERPOD0), m.Option(ice.MSG_USERPOD), m.CommandKey(), m.ActionKey()))
|
||||||
@ -367,8 +312,7 @@ func init() {
|
|||||||
list := []string{cli.AMD64}
|
list := []string{cli.AMD64}
|
||||||
kit.If(goos == cli.DARWIN, func() { list = append(list, cli.ARM64) })
|
kit.If(goos == cli.DARWIN, func() { list = append(list, cli.ARM64) })
|
||||||
kit.For(list, func(arch string) {
|
kit.For(list, func(arch string) {
|
||||||
PushNoticeRich(m.Options(ice.MSG_COUNT, "0", ice.LOG_DISABLE, ice.TRUE), mdb.NAME, name,
|
PushNoticeRich(m.Options(ice.MSG_COUNT, "0", ice.LOG_DISABLE, ice.TRUE), mdb.NAME, name, msg.Cmd(SPACE, name, COMPILE, goos, arch, kit.Dict(ice.MSG_USERPOD, name)).AppendSimple())
|
||||||
msg.Cmd(SPACE, name, COMPILE, goos, arch, kit.Dict(ice.MSG_USERPOD, name)).AppendSimple())
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@ -385,57 +329,37 @@ func init() {
|
|||||||
if cb, ok := m.OptionCB("").(func(string) bool); ok && cb(p) {
|
if cb, ok := m.OptionCB("").(func(string) bool); ok && cb(p) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer PushNoticeGrow(msg, "\r\n\r\n\r\n")
|
defer PushNoticeGrow(msg, "\r\n\r\n")
|
||||||
PushNoticeGrow(msg, kit.Format("[%s]%s$ %s\r\n", time.Now().Format(ice.MOD_TIME_ONLY), name, m.Option(ice.CMD)))
|
PushNoticeGrow(msg, kit.Format("\033[33m[%s]%s$\033[0m %s\r\n", time.Now().Format(ice.MOD_TIME_ONLY), name, m.Option(ice.CMD)))
|
||||||
m.Cmd(cli.SYSTEM, kit.Split(m.Option(ice.CMD)), kit.Dict(cli.CMD_DIR, p)).Sleep300ms()
|
m.Cmd(cli.SYSTEM, kit.Split(m.Option(ice.CMD)), kit.Dict(cli.CMD_DIR, p)).Sleep300ms()
|
||||||
})
|
})
|
||||||
}},
|
}},
|
||||||
ctx.CMDS: {Name: "cmds name cmds*", Help: "命令", Icon: "bi bi-terminal", Hand: func(m *ice.Message, arg ...string) {
|
|
||||||
DreamEach(m, m.Option(mdb.NAME), "", func(name string) {
|
|
||||||
m.Push(mdb.NAME, name).Push(mdb.TEXT, m.Cmdx(SPACE, name, kit.Split(m.Option(ctx.CMDS))))
|
|
||||||
}).StatusTimeCount(m.OptionSimple(ctx.CMDS)).ProcessInner()
|
|
||||||
}},
|
|
||||||
nfs.FILE: {Name: "file name file*", Help: "文件", Icon: "bi bi-file-earmark-code", Hand: func(m *ice.Message, arg ...string) {
|
|
||||||
DreamEach(m, m.Option(mdb.NAME), "", func(name string) {
|
|
||||||
m.Push(mdb.NAME, name).Push(mdb.TEXT, m.Cmdx(SPACE, name, nfs.CAT, m.Option(nfs.FILE)))
|
|
||||||
}).StatusTimeCount(m.OptionSimple(nfs.FILE)).ProcessInner()
|
|
||||||
}},
|
|
||||||
|
|
||||||
cli.START: {Hand: func(m *ice.Message, arg ...string) {
|
cli.START: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
_dream_start(m, m.Option(mdb.NAME))
|
_dream_start(m, m.Option(mdb.NAME))
|
||||||
gdb.Event(m, DREAM_START, arg)
|
gdb.Event(m, DREAM_START, arg)
|
||||||
}},
|
}},
|
||||||
cli.STOP: {Hand: func(m *ice.Message, arg ...string) {
|
cli.STOP: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
defer ToastProcess(m)()
|
|
||||||
gdb.Event(m, DREAM_STOP, arg)
|
gdb.Event(m, DREAM_STOP, arg)
|
||||||
m.Cmd(SPACE, mdb.MODIFY, m.OptionSimple(mdb.NAME), mdb.STATUS, cli.STOP)
|
m.Cmd(SPACE, mdb.MODIFY, m.OptionSimple(mdb.NAME), mdb.STATUS, cli.STOP)
|
||||||
m.Cmd(SPACE, m.Option(mdb.NAME), ice.EXIT).Sleep3s()
|
m.Cmd(SPACE, m.Option(mdb.NAME), ice.EXIT).Sleep3s()
|
||||||
}},
|
}},
|
||||||
cli.RUNTIME: {Hand: func(m *ice.Message, arg ...string) {
|
|
||||||
ProcessPodCmd(m, m.Option(mdb.NAME), "", nil, arg...)
|
|
||||||
}},
|
|
||||||
nfs.TRASH: {Hand: func(m *ice.Message, arg ...string) {
|
nfs.TRASH: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
gdb.Event(m, DREAM_TRASH, arg)
|
gdb.Event(m, DREAM_TRASH, arg)
|
||||||
nfs.Trash(m, path.Join(ice.USR_LOCAL_WORK, m.Option(mdb.NAME)))
|
nfs.Trash(m, path.Join(ice.USR_LOCAL_WORK, m.Option(mdb.NAME)))
|
||||||
}},
|
}},
|
||||||
nfs.COPY: {Name: "copy to*", Help: "复制", Hand: func(m *ice.Message, arg ...string) {
|
cli.RUNTIME: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy("", mdb.CREATE, mdb.NAME, m.Option(nfs.TO), nfs.BINARY, path.Join(ice.USR_LOCAL_WORK, m.Option(mdb.NAME), ice.BIN_ICE_BIN))
|
ProcessPodCmd(m, m.Option(mdb.NAME), "", nil, arg...)
|
||||||
}},
|
}},
|
||||||
tcp.SEND: {Name: "send to*", Hand: func(m *ice.Message, arg ...string) {
|
"settings": {Name: "settings restart=manual,always access=public,private", Help: "设置", Style: html.DANGER, Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmd(SPACE, m.Option(nfs.TO), DREAM, mdb.CREATE, m.OptionSimple(mdb.NAME, mdb.ICONS, nfs.REPOS, nfs.BINARY))
|
|
||||||
m.Cmd(SPACE, m.Option(nfs.TO), DREAM, cli.START, m.OptionSimple(mdb.NAME))
|
|
||||||
ProcessIframe(m, "", m.MergePod(kit.Keys(m.Option(nfs.TO), m.Option(mdb.NAME))))
|
|
||||||
}},
|
|
||||||
"settings": {Name: "settings restart=manual,always access=public,private", Help: "设置", Style: "danger", Hand: func(m *ice.Message, arg ...string) {
|
|
||||||
kit.If(m.Option(cli.RESTART) == "manual", func() { m.Option(cli.RESTART, "") })
|
kit.If(m.Option(cli.RESTART) == "manual", func() { m.Option(cli.RESTART, "") })
|
||||||
kit.If(m.Option(aaa.ACCESS) == aaa.PUBLIC, func() { m.Option(aaa.ACCESS, "") })
|
kit.If(m.Option(aaa.ACCESS) == aaa.PUBLIC, func() { m.Option(aaa.ACCESS, "") })
|
||||||
mdb.HashModify(m, m.OptionSimple(mdb.NAME, cli.RESTART, aaa.ACCESS))
|
mdb.HashModify(m, m.OptionSimple(mdb.NAME, cli.RESTART, aaa.ACCESS))
|
||||||
}},
|
}},
|
||||||
"settoken": {Name: "settoken nodename* username*", Help: "令牌", Style: "danger", Hand: func(m *ice.Message, arg ...string) {
|
SETTOKEN: {Name: "settoken nodename* username*", Help: "令牌", Style: html.DANGER, Hand: func(m *ice.Message, arg ...string) {
|
||||||
token := m.Cmdx(TOKEN, mdb.CREATE, mdb.TYPE, SERVER, mdb.NAME, m.Option(aaa.USERNAME), mdb.TEXT, m.Option(tcp.NODENAME))
|
token := m.Cmdx(TOKEN, mdb.CREATE, mdb.TYPE, SERVER, mdb.NAME, m.Option(aaa.USERNAME), mdb.TEXT, m.Option(tcp.NODENAME))
|
||||||
m.Cmd(SPACE, m.Option(mdb.NAME), SPIDE, DEV_CREATE_TOKEN, ice.Maps{CLIENT_NAME: ice.DEV, TOKEN: token})
|
m.Cmd(SPACE, m.Option(mdb.NAME), SPIDE, DEV_CREATE_TOKEN, ice.Maps{CLIENT_NAME: ice.DEV, TOKEN: token})
|
||||||
}},
|
}},
|
||||||
"gettoken": {Help: "令牌", Style: "danger", Hand: func(m *ice.Message, arg ...string) {
|
GETTOKEN: {Help: "令牌", Style: html.DANGER, Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Options(m.Cmd(SPIDE, m.Option(mdb.NAME)).AppendSimple()).Cmdy(SPIDE, mdb.DEV_REQUEST)
|
m.Options(m.Cmd(SPIDE, m.Option(mdb.NAME)).AppendSimple()).Cmdy(SPIDE, mdb.DEV_REQUEST)
|
||||||
}},
|
}},
|
||||||
GRANT: {Name: "grant username", Hand: func(m *ice.Message, arg ...string) {
|
GRANT: {Name: "grant username", Hand: func(m *ice.Message, arg ...string) {
|
||||||
@ -444,7 +368,7 @@ func init() {
|
|||||||
}
|
}
|
||||||
m.Cmd(CHAT_GRANT, aaa.CONFIRM, kit.Dict(SPACE, m.Option(mdb.NAME)))
|
m.Cmd(CHAT_GRANT, aaa.CONFIRM, kit.Dict(SPACE, m.Option(mdb.NAME)))
|
||||||
}},
|
}},
|
||||||
OPEN: {Style: "notice", Role: aaa.VOID, Hand: func(m *ice.Message, arg ...string) {
|
OPEN: {Style: html.NOTICE, Role: aaa.VOID, Hand: func(m *ice.Message, arg ...string) {
|
||||||
if strings.HasSuffix(m.Option(ice.MAIN), ".portal") || kit.HasPrefixList(arg, ctx.RUN) {
|
if strings.HasSuffix(m.Option(ice.MAIN), ".portal") || kit.HasPrefixList(arg, ctx.RUN) {
|
||||||
if !kit.HasPrefixList(arg, ctx.RUN) {
|
if !kit.HasPrefixList(arg, ctx.RUN) {
|
||||||
defer m.Push(TITLE, m.Option(mdb.NAME))
|
defer m.Push(TITLE, m.Option(mdb.NAME))
|
||||||
@ -474,17 +398,15 @@ func init() {
|
|||||||
button := []ice.Any{}
|
button := []ice.Any{}
|
||||||
if aaa.IsTechOrRoot(m) {
|
if aaa.IsTechOrRoot(m) {
|
||||||
switch m.Option(mdb.TYPE) {
|
switch m.Option(mdb.TYPE) {
|
||||||
case WORKER:
|
case ORIGIN:
|
||||||
button = append(button, OPEN, "settings")
|
button = append(button, DREAM, GETTOKEN)
|
||||||
case SERVER:
|
case SERVER:
|
||||||
button = append(button, DREAM, OPEN, "settoken")
|
button = append(button, DREAM, SETTOKEN)
|
||||||
default:
|
case WORKER:
|
||||||
button = append(button, DREAM, OPEN, "gettoken")
|
button = append(button, "settings")
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
button = append(button, OPEN)
|
|
||||||
}
|
}
|
||||||
m.PushButton(button...)
|
m.PushButton(append(button, OPEN)...)
|
||||||
}},
|
}},
|
||||||
SERVE_START: {Hand: func(m *ice.Message, arg ...string) {
|
SERVE_START: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
for _, cmd := range kit.Reverse(kit.Split(mdb.Config(m, html.BUTTON))) {
|
for _, cmd := range kit.Reverse(kit.Split(mdb.Config(m, html.BUTTON))) {
|
||||||
@ -499,7 +421,7 @@ func init() {
|
|||||||
})
|
})
|
||||||
}},
|
}},
|
||||||
STATS_TABLES: {Hand: func(m *ice.Message, arg ...string) {
|
STATS_TABLES: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
if msg := _dream_list(m.Spawn(), true); msg.Length() > 0 {
|
if msg := _dream_list(m.Spawn()); msg.Length() > 0 {
|
||||||
stat := map[string]int{}
|
stat := map[string]int{}
|
||||||
msg.Table(func(value ice.Maps) { stat[value[mdb.TYPE]]++; stat[value[mdb.STATUS]]++ })
|
msg.Table(func(value ice.Maps) { stat[value[mdb.TYPE]]++; stat[value[mdb.STATUS]]++ })
|
||||||
PushStats(m, kit.Keys(m.CommandKey(), cli.START), stat[cli.START], "", "已启动空间")
|
PushStats(m, kit.Keys(m.CommandKey(), cli.START), stat[cli.START], "", "已启动空间")
|
||||||
@ -511,6 +433,8 @@ func init() {
|
|||||||
m.Cmd(SPACE).Table(func(value ice.Maps, index int, head []string) {
|
m.Cmd(SPACE).Table(func(value ice.Maps, index int, head []string) {
|
||||||
kit.If(value[mdb.TYPE] == m.ActionKey(), func() { m.PushRecord(value, head...) })
|
kit.If(value[mdb.TYPE] == m.ActionKey(), func() { m.PushRecord(value, head...) })
|
||||||
})
|
})
|
||||||
|
m.SortStrR(mdb.NAME)
|
||||||
|
kit.If(len(arg) > 0, func() { m.Cut(arg...) })
|
||||||
}},
|
}},
|
||||||
SERVER: {Hand: func(m *ice.Message, arg ...string) {
|
SERVER: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmd(SPACE).Table(func(value ice.Maps, index int, head []string) {
|
m.Cmd(SPACE).Table(func(value ice.Maps, index int, head []string) {
|
||||||
@ -546,49 +470,27 @@ func init() {
|
|||||||
}, StatsAction(), DreamAction(), DreamTablesAction(), mdb.ImportantHashAction(
|
}, StatsAction(), DreamAction(), DreamTablesAction(), mdb.ImportantHashAction(
|
||||||
mdb.SHORT, mdb.NAME, mdb.FIELD, "time,name,main,icons,repos,binary,template,restart,access",
|
mdb.SHORT, mdb.NAME, mdb.FIELD, "time,name,main,icons,repos,binary,template,restart,access",
|
||||||
html.BUTTON, kit.JoinWord(PORTAL, DESKTOP, ADMIN, WORD, VIMER, STATUS, COMPILE, XTERM, DREAM),
|
html.BUTTON, kit.JoinWord(PORTAL, DESKTOP, ADMIN, WORD, VIMER, STATUS, COMPILE, XTERM, DREAM),
|
||||||
ONLINE, ice.TRUE,
|
|
||||||
)), Hand: func(m *ice.Message, arg ...string) {
|
)), Hand: func(m *ice.Message, arg ...string) {
|
||||||
if len(arg) == 0 {
|
if len(arg) == 0 {
|
||||||
simple := m.Option(ice.DREAM_SIMPLE) == ice.TRUE || m.Option(ice.MSG_DEBUG) != ice.TRUE
|
if ice.Info.NodeType == WORKER {
|
||||||
if ice.Info.NodeType != WORKER {
|
return
|
||||||
_dream_list(m, simple)
|
|
||||||
_dream_list_icon(m)
|
|
||||||
if m.Length() == 0 {
|
|
||||||
m.EchoInfoButton(m.Trans("please scan or create new dream", "请扫描或创建新空间"), mdb.CREATE, nfs.SCAN)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if !m.IsCliUA() && aaa.IsTechOrRoot(m) {
|
if _dream_list(m); m.Length() == 0 {
|
||||||
_dream_list_more(m, simple)
|
m.EchoInfoButton(m.Trans("please scan or create new dream", "请扫描或创建新空间"), mdb.CREATE, nfs.SCAN)
|
||||||
} else {
|
return
|
||||||
msg := m.Spawn(kit.Dict(ice.MSG_USERROLE, aaa.TECH))
|
|
||||||
m.Cmds(SPACE).Table(func(value ice.Maps) {
|
|
||||||
if value[mdb.TYPE] == SERVER {
|
|
||||||
if p := ProxyDomain(msg, value[mdb.NAME]); p != "" {
|
|
||||||
value[mdb.TEXT] = p
|
|
||||||
m.PushRecord(value, mdb.TIME, mdb.TYPE, mdb.NAME, mdb.ICONS, nfs.MODULE, nfs.VERSION, mdb.TEXT)
|
|
||||||
m.PushButton(PORTAL, DESKTOP)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
if ice.Info.NodeType == WORKER || !aaa.IsTechOrRoot(m) || m.IsCliUA() {
|
if _dream_list_more(m); !aaa.IsTechOrRoot(m) || m.IsCliUA() {
|
||||||
m.Action()
|
m.Action()
|
||||||
} else if m.IsDebug() && cli.SystemFindGo(m) {
|
} else if m.IsDebug() && cli.SystemFindGo(m) {
|
||||||
m.Action(mdb.CREATE, STARTALL, STOPALL, cli.BUILD, PUBLISH)
|
m.Action(mdb.CREATE, STARTALL, STOPALL, cli.BUILD, PUBLISH)
|
||||||
} else {
|
} else {
|
||||||
m.Action(mdb.CREATE, STARTALL, STOPALL)
|
m.Action(mdb.CREATE, STARTALL, STOPALL)
|
||||||
}
|
}
|
||||||
m.Sort("type,status,name", []string{aaa.LOGIN, WORKER, SERVER, ORIGIN}, []string{cli.START, cli.STOP, cli.BEGIN}, ice.STR_R)
|
|
||||||
m.StatusTimeCountStats(mdb.TYPE, mdb.STATUS)
|
m.StatusTimeCountStats(mdb.TYPE, mdb.STATUS)
|
||||||
ctx.DisplayTableCard(m)
|
m.Sort("type,status,name", []string{aaa.LOGIN, WORKER, SERVER, ORIGIN}, []string{cli.START, cli.STOP, cli.BEGIN}, ice.STR_R)
|
||||||
// kit.If(!aaa.IsTechOrRoot(m), func() { m.Options(ice.MSG_TOOLKIT, "", ice.MSG_ONLINE, ice.FALSE) })
|
ctx.DisplayTableCard(m.Options(ice.MSG_TOOLKIT, "web.code.compose.insight"))
|
||||||
// kit.If(!m.IsDebug(), func() { m.Options(ice.MSG_TOOLKIT, "") })
|
|
||||||
m.Options(ice.MSG_TOOLKIT, "web.code.compose.insight")
|
|
||||||
} else if arg[0] == ctx.ACTION {
|
} else if arg[0] == ctx.ACTION {
|
||||||
gdb.Event(m, DREAM_ACTION, arg)
|
gdb.Event(m, DREAM_ACTION, arg)
|
||||||
} else {
|
|
||||||
mdb.HashSelects(m, arg[0]).PushAction(PORTAL, DESKTOP, ADMIN, OPEN, mdb.REMOVE)
|
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
})
|
})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user