1
0
forked from x/icebergs
This commit is contained in:
IT 老营长 @云轩领航-创始人 2024-03-15 21:58:15 +08:00
parent e4102f6c60
commit 5cfe19e5b2
3 changed files with 22 additions and 14 deletions

View File

@ -29,6 +29,7 @@ func _dream_list(m *ice.Message, simple bool) *ice.Message {
return
}
if space, ok := list[value[mdb.NAME]]; ok {
value[mdb.ICONS] = space[mdb.ICONS]
m.Push("", value, kit.Slice(head, 0, -1))
if m.IsCliUA() || simple {
m.Push(mdb.TYPE, space[mdb.TYPE]).Push(cli.STATUS, cli.START)
@ -95,15 +96,14 @@ func _dream_list_icon(m *ice.Message) {
})
}
func _dream_list_more(m *ice.Message, simple bool) *ice.Message {
list := m.CmdMap(SPIDE, CLIENT_NAME)
// list := m.CmdMap(SPIDE, CLIENT_NAME)
m.Cmds(SPACE).Table(func(value ice.Maps) {
value[mdb.ICONS] = nfs.USR_ICONS_VOLCANOS
// value[mdb.ICONS] = nfs.USR_ICONS_VOLCANOS
value[nfs.REPOS] = "https://" + value[nfs.MODULE]
value[aaa.ACCESS] = kit.Select("", value[aaa.USERROLE], value[aaa.USERROLE] != aaa.VOID)
value[mdb.STATUS] = cli.START
switch value[mdb.TYPE] {
case SERVER:
value[mdb.ICONS] = m.FileURI(nfs.USR_ICONS_ICEBERGS)
value[mdb.TEXT] = kit.JoinLine(value[nfs.MODULE], value[mdb.TEXT])
if simple {
defer m.PushButton("")
@ -112,9 +112,6 @@ func _dream_list_more(m *ice.Message, simple bool) *ice.Message {
defer m.PushButton(strings.Join(msg.Appendv(ctx.ACTION), ""))
}
case ORIGIN:
if spide, ok := list[value[mdb.NAME]]; ok {
value[mdb.ICONS] = kit.Select(value[mdb.ICONS], spide[mdb.ICONS])
}
value[mdb.TEXT] = kit.JoinLine(value[nfs.MODULE], value[mdb.TEXT])
if simple {
defer m.PushButton("")
@ -123,7 +120,6 @@ func _dream_list_more(m *ice.Message, simple bool) *ice.Message {
defer m.PushButton(strings.Join(msg.Appendv(ctx.ACTION), ""))
}
case aaa.LOGIN:
value[mdb.ICONS] = kit.Select(value[mdb.ICONS], agentIcons[value[AGENT]])
value[mdb.TEXT] = kit.JoinWord(value[AGENT], value[cli.SYSTEM], value[aaa.IP])
defer m.PushButton(GRANT)
default:
@ -421,9 +417,13 @@ func init() {
OPEN: {Role: aaa.VOID, Hand: func(m *ice.Message, arg ...string) {
if m.Option(mdb.TYPE) == ORIGIN && m.IsLocalhost() {
m.ProcessOpen(SpideOrigin(m, m.Option(mdb.NAME)))
} else {
if p := ProxyDomain(m, m.Option(mdb.NAME)); p != "" {
m.ProcessOpen(p)
} else {
m.ProcessOpen(S(m.Option(mdb.NAME)))
}
}
}},
GRANT: {Hand: func(m *ice.Message, arg ...string) {
m.Cmd(CHAT_GRANT, aaa.CONFIRM, kit.Dict(SPACE, m.Option(mdb.NAME)))

View File

@ -297,7 +297,7 @@ func ParseUA(m *ice.Message) (res []string) {
res = append(res, cli.DAEMON, m.Option(ice.MSG_DAEMON))
for _, p := range html.AgentList {
if strings.Contains(m.Option(ice.MSG_USERUA), p) {
res = append(res, mdb.ICONS, agentIcons[p], AGENT, p)
res = append(res, mdb.ICONS, kit.Select(agentIcons[p], m.Option(mdb.ICONS)), AGENT, p)
break
}
}
@ -314,6 +314,9 @@ func ProxyDomain(m *ice.Message, name string) string {
m.Cmd(nfs.CAT, path.Join(PROXY_PATH, "conf/portal", name, "server.conf"), func(ls []string) {
kit.If(ls[0] == "server_name", func() { domain = ls[1] })
})
if domain == "" {
return ""
}
return "https://" + domain
}
func Script(m *ice.Message, str string, arg ...ice.Any) string {

View File

@ -29,7 +29,7 @@ func _space_qrcode(m *ice.Message, dev string) {
}
func _space_dial(m *ice.Message, dev, name string, arg ...string) {
origin := m.Cmdv(SPIDE, dev, CLIENT_ORIGIN)
u := kit.ParseURL(kit.MergeURL2(strings.Replace(origin, HTTP, "ws", 1), PP(SPACE), mdb.TYPE, ice.Info.NodeType, mdb.NAME, name, mdb.NAME, "",
u := kit.ParseURL(kit.MergeURL2(strings.Replace(origin, HTTP, "ws", 1), PP(SPACE), mdb.TYPE, ice.Info.NodeType, mdb.NAME, name, mdb.NAME, "", mdb.ICONS, mdb.Config(m, mdb.ICONS),
mdb.TIME, ice.Info.Make.Time, nfs.MODULE, ice.Info.Make.Module, nfs.VERSION, ice.Info.Make.Versions(), cli.GOOS, runtime.GOOS, cli.GOARCH, runtime.GOARCH, arg))
args := kit.SimpleKV("type,name,host,port", u.Scheme, dev, u.Hostname(), kit.Select(kit.Select(tcp.PORT_443, tcp.PORT_80, u.Scheme == "ws"), u.Port()))
gdb.Go(m, func() {
@ -74,10 +74,14 @@ func _space_fork(m *ice.Message) {
if msg := m.Cmd(TOKEN, m.Option(TOKEN)); msg.Append(mdb.TIME) > m.Time() && kit.IsIn(msg.Append(mdb.TYPE), SERVER, SPIDE) {
aaa.SessAuth(m, kit.Dict(m.Cmd(aaa.USER, m.Option(ice.MSG_USERNAME, msg.Append(mdb.NAME))).AppendSimple()))
name = SpaceName(kit.Select(name, msg.Append(mdb.TEXT)))
kit.If(ProxyDomain(m, name), func(p string) { text = p })
safe = aaa.IsTechOrRoot(m)
}
}
args := kit.Simple(mdb.TYPE, m.Option(mdb.TYPE), mdb.NAME, name, mdb.TEXT, text, m.OptionSimple(mdb.TIME, nfs.MODULE, nfs.VERSION, cli.DAEMON))
if m.Option(mdb.ICONS) != "" && !kit.HasPrefix(m.Option(mdb.ICONS), nfs.PS, HTTP) {
m.Option(mdb.ICONS, kit.MergeURL("/require/"+m.Option(mdb.ICONS), ice.POD, name))
}
args := kit.Simple(mdb.TYPE, m.Option(mdb.TYPE), mdb.NAME, name, mdb.TEXT, text, m.OptionSimple(mdb.ICONS, mdb.TIME, nfs.MODULE, nfs.VERSION, cli.DAEMON))
args = append(args, aaa.USERNICK, m.Option(ice.MSG_USERNICK), aaa.USERNAME, m.Option(ice.MSG_USERNAME), aaa.USERROLE, m.Option(ice.MSG_USERROLE))
args = append(args, ParseUA(m)...)
if c, e := websocket.Upgrade(m.W, m.R); !m.WarnNotValid(e) {
@ -99,7 +103,7 @@ func _space_fork(m *ice.Message) {
case SERVER:
defer gdb.EventDeferEvent(m, SPACE_OPEN, args)(SPACE_CLOSE, args)
m.Go(func() {
m.Cmd(SPACE, name, cli.PWD, name, kit.Dict(
m.Cmd(SPACE, name, cli.PWD, name, kit.Dict(mdb.ICONS, mdb.Config(m, mdb.ICONS),
mdb.TIME, ice.Info.Make.Time, nfs.MODULE, ice.Info.Make.Module, nfs.VERSION, ice.Info.Make.Versions(),
AGENT, "Go-http-client", cli.SYSTEM, runtime.GOOS))
m.Cmd(SPACE).Table(func(value ice.Maps) {
@ -180,7 +184,7 @@ func _space_exec(m *ice.Message, name string, source, target []string, c *websoc
m.Warn(true, ice.ErrNotValid)
return
case cli.PWD:
mdb.HashModify(m, mdb.HASH, name, ParseUA(m), m.OptionSimple(mdb.TIME, nfs.MODULE, nfs.VERSION, AGENT, cli.SYSTEM))
mdb.HashModify(m, mdb.HASH, name, ParseUA(m), m.OptionSimple(mdb.ICONS, mdb.TIME, nfs.MODULE, nfs.VERSION, AGENT, cli.SYSTEM))
m.Push(mdb.LINK, m.MergePod(kit.Select("", source, -1)))
default:
if m.IsErr() {
@ -332,8 +336,9 @@ func init() {
}},
nfs.PS: {Hand: func(m *ice.Message, arg ...string) { _space_fork(m) }},
}, gdb.EventsAction(SPACE_LOGIN), mdb.HashAction(
mdb.ICONS, "src/main.ico",
mdb.LIMIT, 1000, mdb.LEAST, 500,
mdb.SHORT, mdb.NAME, mdb.FIELD, "time,type,name,text,module,version,agent,system,ip,usernick,username,userrole",
mdb.SHORT, mdb.NAME, mdb.FIELD, "time,type,name,text,icons,module,version,agent,system,ip,usernick,username,userrole",
ctx.ACTION, OPEN, REDIAL, kit.Dict("a", 1000, "b", 100, "c", 1000),
), mdb.ClearOnExitHashAction()), Hand: func(m *ice.Message, arg ...string) {
if len(arg) < 2 {