forked from x/icebergs
opt some
This commit is contained in:
parent
f5573b92f1
commit
f75b554fe3
@ -15,6 +15,7 @@ import (
|
||||
"shylinux.com/x/icebergs/base/ctx"
|
||||
"shylinux.com/x/icebergs/base/mdb"
|
||||
"shylinux.com/x/icebergs/base/nfs"
|
||||
"shylinux.com/x/icebergs/base/tcp"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
)
|
||||
|
||||
@ -51,6 +52,8 @@ func (f *Frame) prompt(m *ice.Message, list ...string) *Frame {
|
||||
switch v {
|
||||
case mdb.COUNT:
|
||||
fmt.Fprintf(f.stdout, "%d", f.count)
|
||||
case tcp.HOSTNAME:
|
||||
fmt.Fprintf(f.stdout, "%s", kit.Slice(kit.Split(ice.Info.Hostname, " -/."), -1)[0])
|
||||
case mdb.TIME:
|
||||
fmt.Fprintf(f.stdout, time.Now().Format("15:04:05"))
|
||||
case TARGET:
|
||||
@ -117,7 +120,7 @@ func (f *Frame) parse(m *ice.Message, h, line string) string {
|
||||
func (f *Frame) scan(m *ice.Message, h, line string) *Frame {
|
||||
f.ps1 = kit.Simple(m.Confv(PROMPT, kit.Keym(PS1)))
|
||||
f.ps2 = kit.Simple(m.Confv(PROMPT, kit.Keym(PS2)))
|
||||
// m.Options(MESSAGE, m, ice.LOG_DISABLE, ice.TRUE)
|
||||
m.Options(MESSAGE, m, ice.LOG_DISABLE, ice.TRUE)
|
||||
m.I, m.O = f.stdin, f.stdout
|
||||
ps, bio := f.ps1, bufio.NewScanner(f.stdin)
|
||||
for f.prompt(m, ps...); f.stdin != nil && bio.Scan(); f.prompt(m, ps...) {
|
||||
@ -236,7 +239,7 @@ func init() {
|
||||
}
|
||||
}},
|
||||
PROMPT: {Name: "prompt arg run", Help: "命令提示", Actions: ctx.ConfAction(
|
||||
PS1, ice.List{"\033[33;44m", mdb.COUNT, "[", mdb.TIME, "]", "\033[5m", TARGET, "\033[0m", "\033[44m", ">", "\033[0m ", "\033[?25h", "\033[32m"},
|
||||
PS1, ice.List{"\033[33;44m", mdb.COUNT, "@", tcp.HOSTNAME, "[", mdb.TIME, "]", "\033[5m", TARGET, "\033[0m", "\033[44m", ">", "\033[0m ", "\033[?25h", "\033[32m"},
|
||||
PS2, ice.List{mdb.COUNT, " ", TARGET, "> "},
|
||||
), Hand: func(m *ice.Message, arg ...string) {
|
||||
if f, ok := m.Target().Server().(*Frame); ok {
|
||||
|
@ -2,6 +2,7 @@ package web
|
||||
|
||||
import (
|
||||
"net"
|
||||
"strings"
|
||||
|
||||
ice "shylinux.com/x/icebergs"
|
||||
"shylinux.com/x/icebergs/base/aaa"
|
||||
@ -30,7 +31,7 @@ func _broad_serve(m *ice.Message, host, port string) {
|
||||
m.Go(func() {
|
||||
_broad_send(m.Sleep("100ms"), host, port, "255.255.255.255", "9020", mdb.TYPE, ice.Info.NodeType, mdb.NAME, ice.Info.NodeName)
|
||||
})
|
||||
if s, e := net.ListenUDP("udp4", _broad_addr(m, "0.0.0.0", port)); m.Assert(e) {
|
||||
if s, e := net.ListenUDP("udp4", _broad_addr(m, host, port)); m.Assert(e) {
|
||||
defer s.Close()
|
||||
buf := make([]byte, ice.MOD_BUFS)
|
||||
for {
|
||||
@ -41,7 +42,7 @@ func _broad_serve(m *ice.Message, host, port string) {
|
||||
m.Logs(mdb.IMPORT, BROAD, string(buf[:n]), "from", from)
|
||||
msg := m.Spawn(buf[:n])
|
||||
if msg.Option(mdb.ZONE) == "echo" {
|
||||
mdb.HashCreate(m, msg.OptionSimple(kit.Simple(msg.Optionv(ice.MSG_OPTION))...))
|
||||
_broad_save(m, msg)
|
||||
continue
|
||||
}
|
||||
if remote := _broad_addr(m, msg.Option(tcp.HOST), msg.Option(tcp.PORT)); remote != nil {
|
||||
@ -49,10 +50,21 @@ func _broad_serve(m *ice.Message, host, port string) {
|
||||
m.Logs(mdb.EXPORT, BROAD, kit.Format(value), "to", kit.Format(remote))
|
||||
s.WriteToUDP([]byte(m.Spawn(value, kit.Dict(mdb.ZONE, "echo")).FormatMeta()), remote)
|
||||
})
|
||||
_broad_save(m, msg)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
func _broad_save(m, msg *ice.Message) {
|
||||
save := false
|
||||
m.Cmd(tcp.HOST, func(values ice.Maps) {
|
||||
if strings.Split(msg.Option(tcp.HOST), ice.PT)[0] == strings.Split(values[aaa.IP], ice.PT)[0] {
|
||||
save = true
|
||||
}
|
||||
})
|
||||
if save {
|
||||
mdb.HashCreate(m, msg.OptionSimple(kit.Simple(msg.Optionv(ice.MSG_OPTION))...))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const BROAD = "broad"
|
||||
@ -61,7 +73,7 @@ func init() {
|
||||
Index.MergeCommands(ice.Commands{
|
||||
BROAD: {Name: "broad hash auto", Help: "广播", Actions: ice.MergeActions(ice.Actions{
|
||||
mdb.SEARCH: {Hand: func(m *ice.Message, arg ...string) {
|
||||
if arg[0] == BROAD || arg[0] == mdb.FOREACH {
|
||||
if arg[0] == m.CommandKey() || arg[0] == mdb.FOREACH && arg[1] == "" {
|
||||
host := m.Cmd(tcp.HOST).Append(aaa.IP)
|
||||
domain := OptionUserWeb(m).Hostname()
|
||||
m.Cmd("", ice.Maps{ice.MSG_FIELDS: ""}, func(values ice.Maps) {
|
||||
@ -79,7 +91,9 @@ func init() {
|
||||
}
|
||||
}},
|
||||
SERVE: {Name: "serve port=9020", Hand: func(m *ice.Message, arg ...string) {
|
||||
_broad_serve(m, m.Cmd(tcp.HOST).Append(aaa.IP), m.Option(tcp.PORT))
|
||||
m.Cmd(tcp.HOST).TableGo(func(values ice.Maps) {
|
||||
_broad_serve(m, values[aaa.IP], m.Option(tcp.PORT))
|
||||
})
|
||||
}},
|
||||
OPEN: {Hand: func(m *ice.Message, arg ...string) {
|
||||
ctx.ProcessOpen(m, kit.Format("http://%s:%s", m.Option(tcp.HOST), m.Option(tcp.PORT)))
|
||||
|
@ -108,6 +108,9 @@ func init() {
|
||||
case mdb.NAME, nfs.TEMPLATE:
|
||||
_dream_list(m).Cut("name,status,time")
|
||||
case nfs.REPOS:
|
||||
if msg := m.Cmd(SPIDE, ice.OPS, SPIDE_MSG, m.Option(ice.MSG_USERHOST)+"/x/list"); !msg.IsErr() {
|
||||
m.Copy(msg)
|
||||
}
|
||||
for _, dev := range []string{ice.OPS, ice.DEV, ice.SHY} {
|
||||
if msg := m.Cmd(SPIDE, dev, SPIDE_MSG, "/x/list"); !msg.IsErr() {
|
||||
m.Copy(msg)
|
||||
|
@ -26,8 +26,11 @@ func _serve_start(m *ice.Message) {
|
||||
if cli.NodeInfo(m, kit.Select(ice.Info.Hostname, m.Option("nodename")), SERVER); m.Option(tcp.PORT) == tcp.RANDOM {
|
||||
m.Option(tcp.PORT, m.Cmdx(tcp.PORT, aaa.RIGHT))
|
||||
}
|
||||
if runtime.GOOS == cli.WINDOWS {
|
||||
m.Cmd(SPIDE, ice.OPS, kit.Format("http://localhost:%s/exit", m.Option(tcp.PORT))).Sleep("100ms")
|
||||
}
|
||||
m.Target().Start(m, m.OptionSimple(tcp.HOST, tcp.PORT)...)
|
||||
m.Go(func() { m.Cmd(BROAD, SERVE, m.OptionSimple(tcp.PORT)) })
|
||||
defer m.Go(func() { m.Cmd(BROAD, SERVE, m.OptionSimple(tcp.PORT)) })
|
||||
for _, v := range kit.Split(m.Option(ice.DEV)) {
|
||||
m.Cmd(SPACE, tcp.DIAL, ice.DEV, v, mdb.NAME, ice.Info.NodeName)
|
||||
}
|
||||
@ -177,19 +180,23 @@ const SERVE = "serve"
|
||||
|
||||
func init() {
|
||||
Index.MergeCommands(ice.Commands{
|
||||
"/exit": {Hand: func(m *ice.Message, arg ...string) { m.Cmdy(ice.EXIT) }},
|
||||
SERVE: {Name: "serve name auto start", Help: "服务器", Actions: ice.MergeActions(ice.Actions{
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { cli.NodeInfo(m, ice.Info.Pathname, WORKER) }},
|
||||
cli.START: {Name: "start dev name proto host port=9020 nodename username usernick", Hand: func(m *ice.Message, arg ...string) {
|
||||
cli.START: {Name: "start dev proto host port=9020 nodename username usernick", Hand: func(m *ice.Message, arg ...string) {
|
||||
_serve_start(m)
|
||||
}},
|
||||
SERVE_START: {Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Go(func() {
|
||||
go func() {
|
||||
m.Option(ice.LOG_DISABLE, ice.TRUE)
|
||||
opened := false
|
||||
m.Sleep("2s").Cmd(SPACE, func(values ice.Maps) {
|
||||
for i := 0; i < 3 && !opened; i++ {
|
||||
m.Sleep("1s").Cmd(SPACE, func(values ice.Maps) {
|
||||
if values[mdb.TYPE] == CHROME {
|
||||
opened = true
|
||||
}
|
||||
})
|
||||
}
|
||||
if opened {
|
||||
return
|
||||
}
|
||||
@ -199,7 +206,7 @@ func init() {
|
||||
case cli.DARWIN:
|
||||
m.Cmd(cli.SYSTEM, "open", host)
|
||||
}
|
||||
})
|
||||
}()
|
||||
}},
|
||||
SERVE_REWRITE: {Hand: func(m *ice.Message, arg ...string) {
|
||||
if arg[0] != http.MethodGet {
|
||||
|
@ -33,9 +33,11 @@ func _space_dial(m *ice.Message, dev, name string, arg ...string) {
|
||||
if conn, _, e := websocket.NewClient(c, uri, nil, kit.Int(redial["r"]), kit.Int(redial["w"])); !m.Warn(e, tcp.DIAL, dev, SPACE, uri.String()) {
|
||||
defer mdb.HashCreateDeferRemove(m, kit.SimpleKV("", MASTER, dev, msg.Append(tcp.HOSTNAME)), kit.Dict(mdb.TARGET, conn))()
|
||||
if !prints && ice.Info.Colors {
|
||||
m.Go(func() {
|
||||
m.Sleep30ms().Cmd(ssh.PRINTF, kit.Dict(nfs.CONTENT, "\r"+ice.Render(m, ice.RENDER_QRCODE, m.CmdAppend(SPACE, dev, cli.PWD, mdb.LINK)))).Cmd(ssh.PROMPT)
|
||||
})
|
||||
go func() {
|
||||
m.Sleep("300ms").Cmd(ssh.PRINTF, kit.Dict(nfs.CONTENT, "\r"+ice.Render(m, ice.RENDER_QRCODE, m.CmdAppend(SPACE, dev, cli.PWD, mdb.LINK)))).Cmd(ssh.PROMPT, kit.Dict(
|
||||
ice.LOG_DISABLE, ice.TRUE,
|
||||
))
|
||||
}()
|
||||
prints = true
|
||||
}
|
||||
_space_handle(m.Spawn(), true, dev, conn)
|
||||
@ -182,11 +184,11 @@ func init() {
|
||||
_space_dial(m, m.Option(ice.DEV), kit.Select(ice.Info.NodeName, m.Option(mdb.NAME)), arg...)
|
||||
}},
|
||||
mdb.SEARCH: {Hand: func(m *ice.Message, arg ...string) {
|
||||
if arg[0] == SPACE || arg[0] == mdb.FOREACH {
|
||||
if arg[0] == m.CommandKey() || arg[0] == mdb.FOREACH && arg[1] == "" {
|
||||
m.Cmd("", ice.Maps{ice.MSG_FIELDS: ""}, func(values ice.Maps) {
|
||||
switch values[mdb.TYPE] {
|
||||
case WORKER:
|
||||
m.PushSearch(mdb.TEXT, kit.Format(tcp.PublishLocalhost(m, MergePod(m, values[mdb.NAME]))), values)
|
||||
case SERVER, WORKER:
|
||||
m.PushSearch(mdb.TEXT, kit.Format(tcp.PublishLocalhost(m, strings.Split(MergePod(m, values[mdb.NAME]), ice.QS)[0])), values)
|
||||
case MASTER:
|
||||
m.PushSearch(mdb.TEXT, m.Cmd(SPIDE, values[mdb.NAME], ice.Maps{ice.MSG_FIELDS: ""}).Append(CLIENT_ORIGIN), values)
|
||||
}
|
||||
|
@ -53,9 +53,16 @@ func init() {
|
||||
"record1": {Name: "favor upload", Help: "截图"},
|
||||
"record2": {Name: "favor upload", Help: "录屏"},
|
||||
mdb.CREATE: {Hand: func(m *ice.Message, arg ...string) {
|
||||
if strings.HasPrefix(m.Option(mdb.TEXT), ice.HTTP) {
|
||||
m.OptionDefault(mdb.TYPE, mdb.LINK, mdb.NAME, kit.ParseURL(m.Option(mdb.TEXT)).Host)
|
||||
}
|
||||
mdb.HashCreate(m, m.OptionSimple())
|
||||
}},
|
||||
mdb.SEARCH: {Hand: func(m *ice.Message, arg ...string) {
|
||||
if arg[0] == m.CommandKey() || arg[0] == mdb.FOREACH && arg[1] == "" {
|
||||
m.Cmd("", ice.Maps{ice.MSG_FIELDS: ""}, func(values ice.Maps) { m.PushSearch(values) })
|
||||
}
|
||||
}},
|
||||
web.UPLOAD: {Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmd("", mdb.CREATE, m.OptionSimple(mdb.TYPE, mdb.NAME, mdb.TEXT))
|
||||
}},
|
||||
|
2
init.go
2
init.go
@ -104,6 +104,8 @@ func Run(arg ...string) string {
|
||||
Pulse.Option(ls[0], ls[1])
|
||||
}
|
||||
})
|
||||
time.Local = time.FixedZone("Beijing", 28800)
|
||||
Pulse.time = time.Now()
|
||||
if Pulse._cmd == nil {
|
||||
Pulse._cmd = &Command{RawHand: logs.FileLines(3)}
|
||||
}
|
||||
|
@ -81,7 +81,7 @@ func _status_tags(m *ice.Message) {
|
||||
})
|
||||
}
|
||||
func _status_each(m *ice.Message, title string, cmds ...string) {
|
||||
web.GoToast(m, title, func(toast func(string, int, int)) {
|
||||
web.GoToast(m, kit.Select(strings.Join(cmds, ice.SP), title), func(toast func(string, int, int)) {
|
||||
list, count, total := []string{}, 0, len(m.Confm(REPOS, mdb.HASH))
|
||||
ReposList(m).Tables(func(value ice.Maps) {
|
||||
toast(value[REPOS], count, total)
|
||||
@ -213,13 +213,13 @@ func init() {
|
||||
m.Cmdy(REPOS, mdb.CREATE)
|
||||
}},
|
||||
PULL: {Help: "下载", Hand: func(m *ice.Message, arg ...string) {
|
||||
_status_each(m, PULL, cli.SYSTEM, GIT, PULL)
|
||||
_status_each(m, PULL, cli.SYSTEM, GIT, PULL, "--tags")
|
||||
_status_each(m, "", cli.SYSTEM, GIT, PULL)
|
||||
_status_each(m, "", cli.SYSTEM, GIT, PULL, "--tags")
|
||||
}},
|
||||
PUSH: {Help: "上传", Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Option(REPOS) == "" {
|
||||
_status_each(m, PUSH, cli.SYSTEM, GIT, PUSH)
|
||||
_status_each(m, PUSH, cli.SYSTEM, GIT, PUSH, "--tags")
|
||||
_status_each(m, "", cli.SYSTEM, GIT, PUSH)
|
||||
_status_each(m, "", cli.SYSTEM, GIT, PUSH, "--tags")
|
||||
return
|
||||
}
|
||||
m.Option(cli.CMD_DIR, _repos_path(m.Option(REPOS)))
|
||||
|
Loading…
x
Reference in New Issue
Block a user