1
0
forked from x/icebergs
This commit is contained in:
IT 老营长 @云轩领航-创始人 2024-01-28 14:20:24 +08:00
parent 9dc442755d
commit 4b1a228078
4 changed files with 51 additions and 14 deletions

View File

@ -134,15 +134,7 @@ func _serve_handle(key string, cmd *ice.Command, m *ice.Message, w http.Response
m.Options(ice.MSG_USERUA, r.Header.Get(html.UserAgent), ice.MSG_USERIP, r.Header.Get(ice.MSG_USERIP)) m.Options(ice.MSG_USERUA, r.Header.Get(html.UserAgent), ice.MSG_USERIP, r.Header.Get(ice.MSG_USERIP))
m.Options(ice.MSG_SESSID, kit.Select(m.Option(ice.MSG_SESSID), m.Option(CookieName(m.Option(ice.MSG_USERWEB))))) m.Options(ice.MSG_SESSID, kit.Select(m.Option(ice.MSG_SESSID), m.Option(CookieName(m.Option(ice.MSG_USERWEB)))))
kit.If(m.Optionv(ice.MSG_CMDS) == nil, func() { kit.If(m.Optionv(ice.MSG_CMDS) == nil, func() {
kit.If(strings.TrimPrefix(r.URL.Path, key), func(p string) { kit.If(strings.TrimPrefix(r.URL.Path, key), func(p string) { m.Optionv(ice.MSG_CMDS, strings.Split(p, nfs.PS)) })
arg := strings.Split(p, nfs.PS)
for i, v := range arg {
if p, err := url.PathUnescape(v); err == nil {
arg[i] = p
}
}
m.Optionv(ice.MSG_CMDS, arg)
})
}) })
UserHost(m) UserHost(m)
m.W.Header().Add(strings.ReplaceAll(ice.LOG_TRACEID, ".", "-"), m.Option(ice.LOG_TRACEID)) m.W.Header().Add(strings.ReplaceAll(ice.LOG_TRACEID, ".", "-"), m.Option(ice.LOG_TRACEID))

View File

@ -47,13 +47,14 @@ func _spide_show(m *ice.Message, name string, arg ...string) {
method = kit.Select(http.MethodGet, msg.Append(CLIENT_METHOD), method) method = kit.Select(http.MethodGet, msg.Append(CLIENT_METHOD), method)
uri, arg := arg[0], arg[1:] uri, arg := arg[0], arg[1:]
body, head, arg := _spide_body(m, method, arg...) body, head, arg := _spide_body(m, method, arg...)
if m.Option("_break") == ice.TRUE { if m.Option("spide.break") == ice.TRUE {
return return
} }
if c, ok := body.(io.Closer); ok { if c, ok := body.(io.Closer); ok {
defer c.Close() defer c.Close()
} }
req, e := http.NewRequest(method, kit.MergeURL2(msg.Append(CLIENT_URL), uri, arg), body) _uri := kit.MergeURL2(msg.Append(CLIENT_URL), uri, arg)
req, e := http.NewRequest(method, _uri, body)
if m.Warn(e, ice.ErrNotValid, uri) { if m.Warn(e, ice.ErrNotValid, uri) {
return return
} }
@ -146,10 +147,10 @@ func _spide_part(m *ice.Message, arg ...string) (string, io.Reader) {
p := arg[i+1][1:] p := arg[i+1][1:]
if s, e := nfs.StatFile(m, p); !m.Warn(e, ice.ErrNotValid) { if s, e := nfs.StatFile(m, p); !m.Warn(e, ice.ErrNotValid) {
if s.Size() == size && s.ModTime().Before(cache) { if s.Size() == size && s.ModTime().Before(cache) {
m.Option("_break", ice.TRUE) m.Option("spide.break", ice.TRUE)
continue continue
} else if s.Size() == size && !nfs.Exists(m.Spawn(kit.Dict(ice.MSG_FILES, nfs.DiskFile)), p) { } else if s.Size() == size && !nfs.Exists(m.Spawn(kit.Dict(ice.MSG_FILES, nfs.DiskFile)), p) {
m.Option("_break", ice.TRUE) m.Option("spide.break", ice.TRUE)
continue continue
} }
m.Logs(nfs.FIND, LOCAL, s.ModTime(), nfs.SIZE, s.Size(), CACHE, cache, nfs.SIZE, size) m.Logs(nfs.FIND, LOCAL, s.ModTime(), nfs.SIZE, s.Size(), CACHE, cache, nfs.SIZE, size)

View File

@ -159,3 +159,11 @@ func (m *Message) CmdMap(arg ...string) map[string]map[string]string {
func (m *Message) Toast(content string, arg ...string) { // title duration func (m *Message) Toast(content string, arg ...string) { // title duration
Info.PushNotice(m, "toast", content, arg) Info.PushNotice(m, "toast", content, arg)
} }
func (m *Message) Trans(en string, zh string) string {
switch strings.ToLower(kit.Split(m.Option(MSG_LANGUAGE), "_-")[0]) {
case "zh":
return zh
default:
return en
}
}

View File

@ -1,6 +1,8 @@
package relay package relay
import ( import (
"net/http"
"net/url"
"os" "os"
"path" "path"
"strings" "strings"
@ -245,7 +247,7 @@ func (s relay) List(m *ice.Message, arg ...string) *ice.Message {
return return
} }
m.Push(web.LINK, web.HostPort(m.Message, value[tcp.HOST], value[web.PORTAL])) m.Push(web.LINK, web.HostPort(m.Message, value[tcp.HOST], value[web.PORTAL]))
m.PushButton(s.Admin, s.Dream, s.Vimer, s.AdminCmd, s.Upgrade, s.Pushbin, s.Xterm, s.Remove) m.PushButton(s.Admin, s.Dream, s.Vimer, s.AdminCmd, s.Login, s.Upgrade, s.Pushbin, s.Xterm, s.Remove)
kit.If(len(arg) > 0, func() { m.PushQRCode(cli.QRCODE, m.Append(web.LINK)) }) kit.If(len(arg) > 0, func() { m.PushQRCode(cli.QRCODE, m.Append(web.LINK)) })
}) })
_stats := kit.Dict(MEM, kit.FmtSize(stats[MEM_FREE], stats[MEM_TOTAL]), DISK, kit.FmtSize(stats[DISK_USED], stats[DISK_TOTAL])) _stats := kit.Dict(MEM, kit.FmtSize(stats[MEM_FREE], stats[MEM_TOTAL]), DISK, kit.FmtSize(stats[DISK_USED], stats[DISK_TOTAL]))
@ -284,6 +286,23 @@ func (s relay) Pushbin(m *ice.Message, arg ...string) {
s.shell(m, m.Template(PUSHBIN_SH), arg...) s.shell(m, m.Template(PUSHBIN_SH), arg...)
s.Modify(m, kit.Simple(m.OptionSimple(MACHINE, web.DREAM))...) s.Modify(m, kit.Simple(m.OptionSimple(MACHINE, web.DREAM))...)
} }
func (s relay) Login(m *ice.Message, arg ...string) {
if m.Options(s.Hash.List(m.Spawn(), m.Option(MACHINE)).AppendSimple()); m.Option(ice.BACK) == "" {
defer web.ToastProcess(m.Message)()
ssh.CombinedOutput(m.Message, s.admins(m, kit.JoinCmds(web.CHAT_HEADER, mdb.CREATE,
"--", mdb.TYPE, "oauth", mdb.NAME, m.CommandKey(), mdb.ICONS, "usr/icons/ssh.png", mdb.ORDER, "100",
web.LINK, m.MergePodCmd("", "", ctx.ACTION, m.ActionKey(), MACHINE, m.Option(MACHINE)),
)), func(res string) { m.ProcessHold() })
m.ProcessOpen(kit.MergeURL2(m.Option(mdb.LINK), web.C(web.CHAT_HEADER)))
} else if m.Option(ice.MSG_METHOD) == http.MethodGet {
m.EchoInfoButton(kit.JoinLine(m.Trans("please confirm login", "请确认登录"), m.Option(ice.BACK)), m.ActionKey())
} else {
defer web.ToastProcess(m.Message)()
ssh.CombinedOutput(m.Message, s.admins(m, kit.JoinCmds(web.SHARE, mdb.CREATE, mdb.TYPE, aaa.LOGIN, "--", mdb.TEXT, m.Option(ice.BACK))), func(res string) {
m.ProcessReplace(MergeURL2(m, m.Option(ice.BACK), "/share/"+strings.TrimSpace(res)))
})
}
}
func (s relay) Install(m *ice.Message, arg ...string) { func (s relay) Install(m *ice.Message, arg ...string) {
m.Options(web.DOMAIN, "https://shylinux.com", ice.MSG_USERPOD, m.Option(web.DREAM)) m.Options(web.DOMAIN, "https://shylinux.com", ice.MSG_USERPOD, m.Option(web.DREAM))
m.Options(nfs.SOURCE, kit.Value(kit.UnMarshal(web.AdminCmd(m.Message, cli.RUNTIME)), "make.remote")) m.Options(nfs.SOURCE, kit.Value(kit.UnMarshal(web.AdminCmd(m.Message, cli.RUNTIME)), "make.remote"))
@ -368,3 +387,20 @@ func (s relay) admin(m *ice.Message, arg ...string) string {
func (s relay) admins(m *ice.Message, arg ...string) string { func (s relay) admins(m *ice.Message, arg ...string) string {
return kit.Select(ice.CONTEXTS, m.Option(web.DREAM)) + nfs.PS + s.admin(m, arg...) return kit.Select(ice.CONTEXTS, m.Option(web.DREAM)) + nfs.PS + s.admin(m, arg...)
} }
func MergeURL2(m *ice.Message, str string, uri string, arg ...ice.Any) string {
raw, err := url.Parse(str)
m.Debug("what %v", err)
if err != nil {
return kit.MergeURL(uri, arg...)
}
get, err := url.Parse(uri)
m.Debug("what %v", err)
if err != nil {
return kit.MergeURL(str, arg...)
}
p := get.Path
m.Debug("what %v", p)
kit.If(!strings.HasPrefix(p, nfs.PS), func() { p = path.Join(raw.Path, get.Path) })
kit.If(p == nfs.PS, func() { p = "" })
return kit.MergeURL(kit.Select(raw.Scheme, get.Scheme)+"://"+kit.Select(raw.Host, get.Host)+p+"?"+kit.Select(raw.RawQuery, get.RawQuery), arg...)
}