forked from x/icebergs
opt some
This commit is contained in:
parent
70e91d3822
commit
2f84ef4c0e
@ -49,7 +49,7 @@ func init() {
|
|||||||
auth := smtp.PlainAuth("", msg.Append(USERNAME), msg.Append(PASSWORD), kit.Split(msg.Append(SERVICE), ice.DF)[0])
|
auth := smtp.PlainAuth("", msg.Append(USERNAME), msg.Append(PASSWORD), kit.Split(msg.Append(SERVICE), ice.DF)[0])
|
||||||
m.Logs(EMAIL, SEND, string(content)).Warn(smtp.SendMail(msg.Append(SERVICE), auth, msg.Append(USERNAME), kit.Split(m.Option(TO)), content))
|
m.Logs(EMAIL, SEND, string(content)).Warn(smtp.SendMail(msg.Append(SERVICE), auth, msg.Append(USERNAME), kit.Split(m.Option(TO)), content))
|
||||||
}},
|
}},
|
||||||
}, mdb.DevDataAction("name,service,username,password"), mdb.ImportantHashAction(mdb.SHORT, mdb.NAME, mdb.FIELD, "time,name,service,username", ice.ACTION, SEND)), Hand: func(m *ice.Message, arg ...string) {
|
}, mdb.DevDataAction("name,service,username,password"), mdb.HashAction(mdb.SHORT, mdb.NAME, mdb.FIELD, "time,name,service,username", ice.ACTION, SEND)), Hand: func(m *ice.Message, arg ...string) {
|
||||||
if mdb.HashSelect(m, arg...); len(arg) == 0 && m.Length() == 0 {
|
if mdb.HashSelect(m, arg...); len(arg) == 0 && m.Length() == 0 {
|
||||||
m.EchoInfoButton(ice.Info.Template(m, "email.html"), mdb.CREATE, mdb.DEV_REQUEST)
|
m.EchoInfoButton(ice.Info.Template(m, "email.html"), mdb.CREATE, mdb.DEV_REQUEST)
|
||||||
} else if len(arg) == 0 {
|
} else if len(arg) == 0 {
|
||||||
|
@ -125,7 +125,7 @@ func init() {
|
|||||||
m.Push(ice.CMD, cmd).Push("actions", kit.Join(action))
|
m.Push(ice.CMD, cmd).Push("actions", kit.Join(action))
|
||||||
})
|
})
|
||||||
}},
|
}},
|
||||||
}, mdb.ImportantHashAction(mdb.SHORT, mdb.NAME)), Hand: func(m *ice.Message, arg ...string) {
|
}, mdb.HashAction(mdb.SHORT, mdb.NAME)), Hand: func(m *ice.Message, arg ...string) {
|
||||||
_role_list(m, kit.Select("", arg, 0), kit.Slice(arg, 1)...).PushAction(mdb.DELETE)
|
_role_list(m, kit.Select("", arg, 0), kit.Slice(arg, 1)...).PushAction(mdb.DELETE)
|
||||||
}},
|
}},
|
||||||
})
|
})
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package cli
|
package cli
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"os"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
@ -76,6 +77,7 @@ func init() {
|
|||||||
case strings.Contains(_release, ALPINE):
|
case strings.Contains(_release, ALPINE):
|
||||||
m.Cmdy(nfs.CAT, ETC_APK_REPOS)
|
m.Cmdy(nfs.CAT, ETC_APK_REPOS)
|
||||||
}
|
}
|
||||||
|
m.EchoScript(kit.Format("cd %s; %s", kit.Path(""), kit.JoinCmds(kit.Simple(kit.Path(os.Args[0]), os.Args[1:])...)))
|
||||||
}},
|
}},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -29,6 +29,14 @@ func _runtime_init(m *ice.Message) {
|
|||||||
m.Conf(RUNTIME, kit.Keys(HOST, PWD), kit.Path(""))
|
m.Conf(RUNTIME, kit.Keys(HOST, PWD), kit.Path(""))
|
||||||
m.Conf(RUNTIME, kit.Keys(HOST, HOME), kit.HomePath(""))
|
m.Conf(RUNTIME, kit.Keys(HOST, HOME), kit.HomePath(""))
|
||||||
m.Conf(RUNTIME, kit.Keys(HOST, MAXPROCS), runtime.GOMAXPROCS(0))
|
m.Conf(RUNTIME, kit.Keys(HOST, MAXPROCS), runtime.GOMAXPROCS(0))
|
||||||
|
nfs.Exists(m, "/proc/meminfo", func(p string) {
|
||||||
|
kit.For(kit.SplitLine(m.Cmdx(nfs.CAT, p)), func(p string) {
|
||||||
|
switch ls := kit.Split(p, ": "); ls[0] {
|
||||||
|
case "MemTotal", "MemFree", "MemAvailable", "Buffers", "Cached":
|
||||||
|
m.Conf(RUNTIME, kit.Keys(HOST, ls[0]), kit.FmtSize(kit.Int(ls[1])*1024))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
kit.For(ENV_LIST, func(k string) {
|
kit.For(ENV_LIST, func(k string) {
|
||||||
m.Conf(RUNTIME, kit.Keys(CONF, k), kit.Env(k))
|
m.Conf(RUNTIME, kit.Keys(CONF, k), kit.Env(k))
|
||||||
kit.If(k == CTX_PID, func() { ice.Info.PidPath = kit.Env(k) })
|
kit.If(k == CTX_PID, func() { ice.Info.PidPath = kit.Env(k) })
|
||||||
@ -50,9 +58,9 @@ func _runtime_init(m *ice.Message) {
|
|||||||
ice.Info.System = m.Conf(RUNTIME, kit.Keys(HOST, OSID))
|
ice.Info.System = m.Conf(RUNTIME, kit.Keys(HOST, OSID))
|
||||||
aaa.UserRoot(ice.Pulse, "", ice.Info.Make.Username, aaa.TECH, ice.DEV)
|
aaa.UserRoot(ice.Pulse, "", ice.Info.Make.Username, aaa.TECH, ice.DEV)
|
||||||
aaa.UserRoot(ice.Pulse, "", ice.Info.Username, aaa.ROOT, ice.OPS)
|
aaa.UserRoot(ice.Pulse, "", ice.Info.Username, aaa.ROOT, ice.OPS)
|
||||||
|
m.Conf(RUNTIME, kit.Keys(BOOT, mdb.TIME), m.Time())
|
||||||
if runtime.GOARCH != MIPSLE {
|
if runtime.GOARCH != MIPSLE {
|
||||||
msg := m.Cmd(nfs.DIR, _system_find(m, os.Args[0]), "time,path,size,hash")
|
msg := m.Cmd(nfs.DIR, _system_find(m, os.Args[0]), "time,path,size,hash")
|
||||||
m.Conf(RUNTIME, kit.Keys(BOOT, mdb.TIME), msg.Append(mdb.TIME))
|
|
||||||
m.Conf(RUNTIME, kit.Keys(BOOT, mdb.HASH), msg.Append(mdb.HASH))
|
m.Conf(RUNTIME, kit.Keys(BOOT, mdb.HASH), msg.Append(mdb.HASH))
|
||||||
m.Conf(RUNTIME, kit.Keys(BOOT, nfs.SIZE), msg.Append(nfs.SIZE))
|
m.Conf(RUNTIME, kit.Keys(BOOT, nfs.SIZE), msg.Append(nfs.SIZE))
|
||||||
m.Conf(RUNTIME, kit.Keys(BOOT, ice.BIN), msg.Append(nfs.PATH))
|
m.Conf(RUNTIME, kit.Keys(BOOT, ice.BIN), msg.Append(nfs.PATH))
|
||||||
@ -70,9 +78,17 @@ func _runtime_hostinfo(m *ice.Message) {
|
|||||||
m.Push("NumGoroutine", runtime.NumGoroutine())
|
m.Push("NumGoroutine", runtime.NumGoroutine())
|
||||||
var stats runtime.MemStats
|
var stats runtime.MemStats
|
||||||
runtime.ReadMemStats(&stats)
|
runtime.ReadMemStats(&stats)
|
||||||
m.Push("Sys", kit.FmtSize(int64(stats.Sys)))
|
m.Push("Sys", kit.FmtSize(stats.Sys))
|
||||||
m.Push("Alloc", kit.FmtSize(int64(stats.Alloc)))
|
m.Push("Alloc", kit.FmtSize(stats.Alloc))
|
||||||
|
m.Push("TotalAlloc", kit.FmtSize(stats.TotalAlloc))
|
||||||
m.Push("Objects", stats.HeapObjects)
|
m.Push("Objects", stats.HeapObjects)
|
||||||
|
m.Push("StackSys", kit.FmtSize(stats.StackSys))
|
||||||
|
m.Push("StackInuse", kit.FmtSize(stats.StackInuse))
|
||||||
|
m.Push("HeapSys", kit.FmtSize(stats.HeapSys))
|
||||||
|
m.Push("HeapInuse", kit.FmtSize(stats.HeapInuse))
|
||||||
|
m.Push("HeapIdle", kit.FmtSize(stats.HeapIdle))
|
||||||
|
m.Push("HeapReleased", kit.FmtSize(stats.HeapReleased))
|
||||||
|
|
||||||
m.Push("NumGC", stats.NumGC)
|
m.Push("NumGC", stats.NumGC)
|
||||||
m.Push("LastGC", time.Unix(int64(stats.LastGC)/int64(time.Second), int64(stats.LastGC)%int64(time.Second)))
|
m.Push("LastGC", time.Unix(int64(stats.LastGC)/int64(time.Second), int64(stats.LastGC)%int64(time.Second)))
|
||||||
m.Push("uptime", kit.Split(m.Cmdx(SYSTEM, "uptime"), mdb.FS)[0])
|
m.Push("uptime", kit.Split(m.Cmdx(SYSTEM, "uptime"), mdb.FS)[0])
|
||||||
@ -249,7 +265,14 @@ func init() {
|
|||||||
}
|
}
|
||||||
var stats runtime.MemStats
|
var stats runtime.MemStats
|
||||||
runtime.ReadMemStats(&stats)
|
runtime.ReadMemStats(&stats)
|
||||||
m.StatusTimeCount(status, "GOMAXPROCS", runtime.GOMAXPROCS(0), "NumGC", stats.NumGC, "Alloc", kit.FmtSize(int64(stats.Alloc)), "Sys", kit.FmtSize(int64(stats.Sys)))
|
m.StatusTimeCount(status, "GOMAXPROCS", runtime.GOMAXPROCS(0), "NumGC", stats.NumGC,
|
||||||
|
"Sys", kit.FmtSize(stats.Sys),
|
||||||
|
"Alloc", kit.FmtSize(stats.Alloc),
|
||||||
|
"StackSys", kit.FmtSize(stats.StackSys),
|
||||||
|
"StackInuse", kit.FmtSize(stats.StackInuse),
|
||||||
|
"HeapSys", kit.FmtSize(stats.HeapSys),
|
||||||
|
"HeapInuse", kit.FmtSize(stats.HeapInuse),
|
||||||
|
)
|
||||||
m.Echo("%v", string(buf))
|
m.Echo("%v", string(buf))
|
||||||
}},
|
}},
|
||||||
"upgrade": {Help: "升级", Hand: func(m *ice.Message, arg ...string) {
|
"upgrade": {Help: "升级", Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
@ -31,7 +31,7 @@ func _serve_start(m *ice.Message) {
|
|||||||
kit.If(runtime.GOOS == cli.WINDOWS || m.Cmdx(cli.SYSTEM, "lsof", "-i", ":"+m.Option(tcp.PORT)) != "", func() {
|
kit.If(runtime.GOOS == cli.WINDOWS || m.Cmdx(cli.SYSTEM, "lsof", "-i", ":"+m.Option(tcp.PORT)) != "", func() {
|
||||||
m.Go(func() { m.Cmd(SPIDE, ice.OPS, _serve_address(m)+"/exit", ice.Maps{CLIENT_TIMEOUT: "30ms"}) }).Sleep300ms()
|
m.Go(func() { m.Cmd(SPIDE, ice.OPS, _serve_address(m)+"/exit", ice.Maps{CLIENT_TIMEOUT: "30ms"}) }).Sleep300ms()
|
||||||
})
|
})
|
||||||
cli.NodeInfo(m, kit.Select(strings.TrimSuffix(ice.Info.Hostname, ".local"), m.Option(tcp.NODENAME)), SERVER)
|
cli.NodeInfo(m, kit.Select(kit.Split(ice.Info.Hostname, ".")[0], m.Option(tcp.NODENAME)), SERVER)
|
||||||
m.Start("", m.OptionSimple(tcp.HOST, tcp.PORT)...)
|
m.Start("", m.OptionSimple(tcp.HOST, tcp.PORT)...)
|
||||||
m.Cmd(nfs.SAVE, ice.VAR_LOG_ICE_PORT, m.Option(tcp.PORT))
|
m.Cmd(nfs.SAVE, ice.VAR_LOG_ICE_PORT, m.Option(tcp.PORT))
|
||||||
kit.For(kit.Split(m.Option(ice.DEV)), func(dev string) {
|
kit.For(kit.Split(m.Option(ice.DEV)), func(dev string) {
|
||||||
|
@ -120,7 +120,7 @@ func init() {
|
|||||||
RenderMain(m)
|
RenderMain(m)
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
}, mdb.ImportantHashAction(mdb.FIELD, "time,hash,type,name,text,usernick,username,userrole", mdb.EXPIRE, mdb.DAYS)), Hand: func(m *ice.Message, arg ...string) {
|
}, mdb.HashAction(mdb.FIELD, "time,hash,type,name,text,usernick,username,userrole", mdb.EXPIRE, mdb.DAYS)), Hand: func(m *ice.Message, arg ...string) {
|
||||||
if kit.IsIn(m.Option(ice.MSG_USERROLE), aaa.ROOT, aaa.TECH) || len(arg) > 0 && arg[0] != "" {
|
if kit.IsIn(m.Option(ice.MSG_USERROLE), aaa.ROOT, aaa.TECH) || len(arg) > 0 && arg[0] != "" {
|
||||||
mdb.HashSelect(m, arg...)
|
mdb.HashSelect(m, arg...)
|
||||||
}
|
}
|
||||||
|
@ -81,7 +81,7 @@ func _space_fork(m *ice.Message) {
|
|||||||
} else if kit.IsIn(m.Option(mdb.TYPE), WORKER) && IsLocalHost(m) {
|
} else if kit.IsIn(m.Option(mdb.TYPE), WORKER) && IsLocalHost(m) {
|
||||||
text = nfs.USR_LOCAL_WORK + name
|
text = nfs.USR_LOCAL_WORK + name
|
||||||
} else {
|
} else {
|
||||||
name, text = kit.Hashs(name), kit.Select(addr, m.Option(mdb.NAME), m.Option(mdb.TEXT))
|
name, text = kit.Hashs(name), kit.Select(addr, m.Option(mdb.TEXT))
|
||||||
}
|
}
|
||||||
safe := false
|
safe := false
|
||||||
if m.Option(ice.MSG_USERNAME, ""); kit.IsIn(m.Option(mdb.TYPE), WORKER, PORTAL) {
|
if m.Option(ice.MSG_USERNAME, ""); kit.IsIn(m.Option(mdb.TYPE), WORKER, PORTAL) {
|
||||||
|
@ -16,7 +16,7 @@ const TOKEN = "token"
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Index.MergeCommands(ice.Commands{
|
Index.MergeCommands(ice.Commands{
|
||||||
TOKEN: {Help: "令牌桶", Actions: mdb.ImportantHashAction(mdb.SHORT, mdb.UNIQ, mdb.EXPIRE, mdb.MONTH)},
|
TOKEN: {Help: "令牌桶", Actions: mdb.HashAction(mdb.SHORT, mdb.UNIQ, mdb.EXPIRE, mdb.MONTH)},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,7 +2,6 @@ package relay
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
@ -62,7 +61,7 @@ type relay struct {
|
|||||||
ice.Code
|
ice.Code
|
||||||
checkbox string `data:"true"`
|
checkbox string `data:"true"`
|
||||||
short string `data:"machine"`
|
short string `data:"machine"`
|
||||||
field string `data:"time,machine,username,host,port,portal,dream,module,version,commitTime,compileTime,bootTime,package,shell,kernel,arch,ncpu,vcpu,mhz,mem,disk,network,listen,socket,proc,vendor"`
|
field string `data:"time,machine,username,host,port,portal,dream,module,version,commitTime,compileTime,bootTime,go,git,package,shell,kernel,arch,ncpu,vcpu,mhz,mem,disk,network,listen,socket,proc,vendor"`
|
||||||
statsTables string `name:"statsTables" event:"stats.tables"`
|
statsTables string `name:"statsTables" event:"stats.tables"`
|
||||||
create string `name:"create machine* username* host* port*=22"`
|
create string `name:"create machine* username* host* port*=22"`
|
||||||
stats string `name:"stats machine" help:"采集" icon:"bi bi-pc-display"`
|
stats string `name:"stats machine" help:"采集" icon:"bi bi-pc-display"`
|
||||||
@ -73,7 +72,7 @@ type relay struct {
|
|||||||
publish string `name:"publish" help:"发布" icon:"bi bi-send-check"`
|
publish string `name:"publish" help:"发布" icon:"bi bi-send-check"`
|
||||||
list string `name:"list machine auto" help:"机器" icon:"relay.png"`
|
list string `name:"list machine auto" help:"机器" icon:"relay.png"`
|
||||||
install string `name:"install dream param" help:"安装"`
|
install string `name:"install dream param" help:"安装"`
|
||||||
pushbin string `name:"pushbin dream param" help:"部署"`
|
pushbin string `name:"pushbin dream param" help:"部署" icon:"bi bi-box-arrow-in-up"`
|
||||||
adminCmd string `name:"adminCmd cmd" help:"命令" icon:"bi bi-terminal-plus"`
|
adminCmd string `name:"adminCmd cmd" help:"命令" icon:"bi bi-terminal-plus"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,18 +110,20 @@ func (s relay) Inputs(m *ice.Message, arg ...string) {
|
|||||||
}
|
}
|
||||||
func (s relay) Stats(m *ice.Message) {
|
func (s relay) Stats(m *ice.Message) {
|
||||||
m.Option(ice.MSG_TITLE, kit.Keys(m.CommandKey(), m.ActionKey()))
|
m.Option(ice.MSG_TITLE, kit.Keys(m.CommandKey(), m.ActionKey()))
|
||||||
cmds := []string{
|
cmds := []string{"go", `go version`, "git", `git version`,
|
||||||
PACKAGE, `if yum -h &>/dev/null; then echo yum; elif apk version &>/dev/null; then echo apk; elif apt -h &>/dev/null; then echo apt; fi`,
|
PACKAGE, `if yum -h &>/dev/null; then echo yum; elif apk version &>/dev/null; then echo apk; elif opkg -v &>/dev/null; then echo opkg; elif apt -h &>/dev/null; then echo apt; fi`,
|
||||||
SHELL, `echo $SHELL`, KERNEL, `uname -s`, ARCH, `uname -m`,
|
SHELL, `echo $SHELL`, KERNEL, `uname -s`, ARCH, `uname -m`,
|
||||||
NCPU, `cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l`,
|
NCPU, `cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l`,
|
||||||
VCPU, `cat /proc/cpuinfo | grep "processor" | sort | uniq | wc -l`,
|
VCPU, `cat /proc/cpuinfo | grep "processor" | sort | uniq | wc -l`,
|
||||||
MHZ, `cat /proc/cpuinfo | grep "cpu MHz" | grep -o "[0-9.]\+" | sort -nr | head -n1`,
|
MHZ, `cat /proc/cpuinfo | grep "\(cpu MHz\|BogoMIPS\)" | grep -o "[0-9.]\+" | sort -nr | head -n1`,
|
||||||
MEM, `cat /proc/meminfo | head -n2 | grep -o "[0-9.]*"`, DISK, `df | grep "^/dev/"`,
|
MEM, `cat /proc/meminfo | head -n2 | grep -o "[0-9.]*"`, DISK, `df | grep "^/dev/"`,
|
||||||
NETWORK, `cat /proc/net/dev | grep "eth0\|eth1" | sort -r | head -n1`,
|
NETWORK, `cat /proc/net/dev | grep "eth0\|eth1" | sort -r | head -n1`,
|
||||||
LISTEN, `netstat -ntl 2>/dev/null | grep "^tcp" | grep -o ":[0-9]\+" | grep -o "[0-9]\+" | sort -n | uniq`,
|
LISTEN, `netstat -ntl 2>/dev/null | grep "^tcp" | grep -o ":[0-9]\+" | grep -o "[0-9]\+" | sort -n | uniq`,
|
||||||
SOCKET, `netstat -nt 2>/dev/null | grep "^tcp" | wc -l`, PROC, `ps aux | wc -l`,
|
SOCKET, `netstat -nt 2>/dev/null | grep "^tcp" | wc -l`, PROC, `ps aux | wc -l 2>/dev/null`,
|
||||||
}
|
}
|
||||||
trans := map[string]func([]string) string{
|
trans := map[string]func([]string) string{
|
||||||
|
"go": func(ls []string) string { return kit.Select("", ls, 2) },
|
||||||
|
"git": func(ls []string) string { return kit.Select("", ls, 2) },
|
||||||
MEM: func(ls []string) string {
|
MEM: func(ls []string) string {
|
||||||
return kit.FmtSize(kit.Int(kit.Select("", ls, 1))*1024, kit.Int(kit.Select("", ls, 0))*1024)
|
return kit.FmtSize(kit.Int(kit.Select("", ls, 1))*1024, kit.Int(kit.Select("", ls, 0))*1024)
|
||||||
},
|
},
|
||||||
@ -132,6 +133,9 @@ func (s relay) Stats(m *ice.Message) {
|
|||||||
NETWORK: func(ls []string) string {
|
NETWORK: func(ls []string) string {
|
||||||
return kit.FmtSize(kit.Int(kit.Select("", ls, 1)), kit.Int(kit.Select("", ls, 9)))
|
return kit.FmtSize(kit.Int(kit.Select("", ls, 1)), kit.Int(kit.Select("", ls, 9)))
|
||||||
},
|
},
|
||||||
|
PROC: func(ls []string) string {
|
||||||
|
return kit.Format(kit.Int(ls[0]))
|
||||||
|
},
|
||||||
}
|
}
|
||||||
machine := m.Option(MACHINE)
|
machine := m.Option(MACHINE)
|
||||||
web.GoToast(m.Message, "", func(toast func(string, int, int)) []string {
|
web.GoToast(m.Message, "", func(toast func(string, int, int)) []string {
|
||||||
@ -247,7 +251,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.Login, s.Upgrade, s.Pushbin, s.Xterm, s.Remove)
|
m.PushButton(s.Admin, s.Dream, s.Vimer, s.Login, s.Upgrade, s.Pushbin, s.AdminCmd, 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]))
|
||||||
@ -299,7 +303,7 @@ func (s relay) Login(m *ice.Message, arg ...string) {
|
|||||||
} else {
|
} else {
|
||||||
defer web.ToastProcess(m.Message)()
|
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) {
|
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)))
|
m.ProcessReplace(kit.MergeURL2(m.Option(ice.BACK), "/share/"+strings.TrimSpace(res)))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -316,6 +320,9 @@ func (s relay) Upgrade(m *ice.Message, arg ...string) {
|
|||||||
m.Option(ice.MSG_TITLE, kit.Keys(m.CommandKey(), m.ActionKey()))
|
m.Option(ice.MSG_TITLE, kit.Keys(m.CommandKey(), m.ActionKey()))
|
||||||
if len(arg) == 0 && (m.Option(MACHINE) == "" || strings.Contains(m.Option(MACHINE), ",")) {
|
if len(arg) == 0 && (m.Option(MACHINE) == "" || strings.Contains(m.Option(MACHINE), ",")) {
|
||||||
s.foreach(m, func(msg *ice.Message, cmd []string) {
|
s.foreach(m, func(msg *ice.Message, cmd []string) {
|
||||||
|
if msg.Option("go") == "" {
|
||||||
|
return
|
||||||
|
}
|
||||||
ssh.PushShell(msg.Message, strings.Split(msg.Template(UPGRADE_SH), lex.NL), func(res string) {
|
ssh.PushShell(msg.Message, strings.Split(msg.Template(UPGRADE_SH), lex.NL), func(res string) {
|
||||||
web.PushNoticeGrow(m.Options(ice.MSG_COUNT, "0", ctx.DISPLAY, web.PLUGIN_XTERM).Message, res)
|
web.PushNoticeGrow(m.Options(ice.MSG_COUNT, "0", ctx.DISPLAY, web.PLUGIN_XTERM).Message, res)
|
||||||
})
|
})
|
||||||
@ -327,6 +334,9 @@ func (s relay) Upgrade(m *ice.Message, arg ...string) {
|
|||||||
func (s relay) Version(m *ice.Message, arg ...string) {
|
func (s relay) Version(m *ice.Message, arg ...string) {
|
||||||
m.Option(ice.MSG_TITLE, kit.Keys(m.CommandKey(), m.ActionKey()))
|
m.Option(ice.MSG_TITLE, kit.Keys(m.CommandKey(), m.ActionKey()))
|
||||||
s.foreach(m, func(msg *ice.Message, cmd []string) {
|
s.foreach(m, func(msg *ice.Message, cmd []string) {
|
||||||
|
if msg.Option("go") == "" {
|
||||||
|
return
|
||||||
|
}
|
||||||
ssh.PushShell(msg.Message, strings.Split(msg.Template(VERSION_SH), lex.NL), func(res string) {
|
ssh.PushShell(msg.Message, strings.Split(msg.Template(VERSION_SH), lex.NL), func(res string) {
|
||||||
web.PushNoticeGrow(m.Options(ctx.DISPLAY, web.PLUGIN_XTERM).Message, res)
|
web.PushNoticeGrow(m.Options(ctx.DISPLAY, web.PLUGIN_XTERM).Message, res)
|
||||||
})
|
})
|
||||||
@ -387,20 +397,3 @@ 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...)
|
|
||||||
}
|
|
||||||
|
@ -1,9 +1,6 @@
|
|||||||
package webview
|
package webview
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"io"
|
|
||||||
"os"
|
|
||||||
"path"
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
@ -96,18 +93,9 @@ func Run(cb func(*WebView) ice.Any) {
|
|||||||
}
|
}
|
||||||
kit.If(!view.Menu(), func() { view.navigate(ice.Pulse.Cmdv(web.SPIDE, ice.OPS, web.CLIENT_ORIGIN)) })
|
kit.If(!view.Menu(), func() { view.navigate(ice.Pulse.Cmdv(web.SPIDE, ice.OPS, web.CLIENT_ORIGIN)) })
|
||||||
}
|
}
|
||||||
|
|
||||||
var log io.WriteCloser
|
|
||||||
|
|
||||||
func Log(str string, arg ...ice.Any) { fmt.Fprintln(log, kit.Format(str, arg...), kit.FileLine(2, 3)) }
|
|
||||||
|
|
||||||
func RunServe() {
|
func RunServe() {
|
||||||
kit.Setenv(cli.PATH, "/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin")
|
kit.Setenv(cli.PATH, "/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin")
|
||||||
for _, p := range []string{ice.Info.Make.Path, kit.HomePath(ice.CONTEXTS)} {
|
kit.Chdir(kit.HomePath(ice.CONTEXTS))
|
||||||
kit.Chdir(p)
|
|
||||||
log, _ = os.Create(path.Join(p, "webview.log"))
|
|
||||||
Log("what %v", p)
|
|
||||||
}
|
|
||||||
wait := make(chan bool, 1)
|
wait := make(chan bool, 1)
|
||||||
ice.Pulse.Optionv(web.SERVE_START, func() { wait <- true })
|
ice.Pulse.Optionv(web.SERVE_START, func() { wait <- true })
|
||||||
go ice.Run(ice.SERVE, ice.START)
|
go ice.Run(ice.SERVE, ice.START)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user