forked from x/icebergs
opt some
This commit is contained in:
parent
a50ef26303
commit
e4a4bbde8f
@ -66,10 +66,23 @@ func init() {
|
||||
SESS: {Name: SESS, Help: "会话", Value: kit.Data(kit.MDB_SHORT, "uniq", kit.MDB_EXPIRE, "720h")},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
SESS: {Name: "sess hash auto", Help: "会话", Action: map[string]*ice.Action{
|
||||
SESS: {Name: "sess hash auto prunes", Help: "会话", Action: map[string]*ice.Action{
|
||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(mdb.FIELDS, "time,username,userrole,ip,ua")
|
||||
m.Cmdy(mdb.DELETE, SESS, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH))
|
||||
}},
|
||||
mdb.PRUNES: {Name: "prunes before@date", Help: "清理", Hand: func(m *ice.Message, arg ...string) {
|
||||
list := []string{}
|
||||
m.Richs(SESS, "", kit.MDB_FOREACH, func(key string, value map[string]interface{}) {
|
||||
if value = kit.GetMeta(value); kit.Time(kit.Format(value[kit.MDB_TIME])) < kit.Time(m.Option("before")) {
|
||||
list = append(list, key)
|
||||
}
|
||||
})
|
||||
m.Option(mdb.FIELDS, "time,username,userrole,ip,ua")
|
||||
for _, v := range list {
|
||||
m.Cmdy(mdb.DELETE, SESS, "", mdb.HASH, kit.MDB_HASH, v)
|
||||
}
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Fields(len(arg) == 0, "time,hash,username,userrole")
|
||||
m.Cmdy(mdb.SELECT, SESS, "", mdb.HASH, kit.MDB_HASH, arg)
|
||||
|
@ -121,14 +121,16 @@ func init() {
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
QRCODE: {Name: "qrcode text fg bg size auto", Help: "二维码", Action: map[string]*ice.Action{}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Option(FG, kit.Select(BLUE, arg, 1))
|
||||
m.Option(BG, kit.Select(WHITE, arg, 2))
|
||||
m.Option(SIZE, kit.Select("240", arg, 3))
|
||||
m.Option(BG, kit.Select(WHITE, arg, 2))
|
||||
m.Option(FG, kit.Select(BLUE, arg, 1))
|
||||
|
||||
if aaa.SessIsCli(m) {
|
||||
_qrcode_cli(m, kit.Select("hi", arg, 0))
|
||||
if len(arg) == 0 {
|
||||
|
||||
} else if aaa.SessIsCli(m) {
|
||||
_qrcode_cli(m, arg[0])
|
||||
} else {
|
||||
_qrcode_web(m, kit.Select("hi", arg, 0))
|
||||
_qrcode_web(m, arg[0])
|
||||
}
|
||||
}},
|
||||
},
|
||||
|
@ -72,6 +72,11 @@ func init() {
|
||||
}},
|
||||
PROCINFO: {Name: "procinfo", Help: "进程信息", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Split(m.Cmdx(SYSTEM, "ps", "u"), "", " ", "\n")
|
||||
m.PushAction("kill")
|
||||
}},
|
||||
"kill": {Name: "kill", Help: "结束进程", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(SYSTEM, "kill", m.Option("PID"))
|
||||
m.ProcessRefresh("10ms")
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if len(arg) > 0 && arg[0] == BOOTINFO {
|
||||
|
@ -6,8 +6,10 @@ import (
|
||||
"io"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strings"
|
||||
|
||||
ice "github.com/shylinux/icebergs"
|
||||
"github.com/shylinux/icebergs/base/mdb"
|
||||
kit "github.com/shylinux/toolkits"
|
||||
)
|
||||
|
||||
@ -80,6 +82,13 @@ func init() {
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
SYSTEM: {Name: "system cmd= 执行:button", Help: "系统命令", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
m.Fields(len(arg) == 0, "time,id,cmd")
|
||||
m.Cmdy(mdb.SELECT, SYSTEM, "", mdb.LIST)
|
||||
return
|
||||
}
|
||||
m.Grow(SYSTEM, "", kit.Dict(kit.MDB_TIME, m.Time(), CMD, strings.Join(arg, " ")))
|
||||
|
||||
if len(arg) == 1 {
|
||||
arg = kit.Split(arg[0])
|
||||
}
|
||||
|
@ -409,8 +409,9 @@ const (
|
||||
IMPORT = "import"
|
||||
PRUNES = "prunes"
|
||||
INPUTS = "inputs"
|
||||
REPEAT = "repeat"
|
||||
REVERT = "revert"
|
||||
REPEAT = "repeat"
|
||||
UPLOAD = "upload"
|
||||
)
|
||||
const (
|
||||
CACHE_LIMIT = "cache.limit"
|
||||
|
@ -13,6 +13,7 @@ import (
|
||||
"strings"
|
||||
|
||||
ice "github.com/shylinux/icebergs"
|
||||
"github.com/shylinux/icebergs/base/aaa"
|
||||
"github.com/shylinux/icebergs/base/mdb"
|
||||
kit "github.com/shylinux/toolkits"
|
||||
)
|
||||
@ -181,10 +182,12 @@ func init() {
|
||||
_dir_show(m, arg[2], arg[1], 0, m.Option(DIR_DEEP) == ice.TRUE, kit.Select(TYPE_BOTH, m.Option(DIR_TYPE)),
|
||||
nil, kit.Split("time,size,type,path"))
|
||||
}},
|
||||
|
||||
"upload": {Name: "upload", Help: "上传", Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.UPLOAD: {Name: "upload", Help: "上传", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Upload(m.Option(kit.MDB_PATH))
|
||||
}},
|
||||
TRASH: {Name: "trash", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(TRASH, m.Option(kit.MDB_PATH))
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
arg = append(arg, "")
|
||||
@ -193,6 +196,11 @@ func init() {
|
||||
0, m.Options(DIR_DEEP), kit.Select(TYPE_BOTH, m.Option(DIR_TYPE)), kit.Regexp(m.Option(DIR_REG)),
|
||||
kit.Split(kit.Select("time,size,path", strings.Join(arg[1:], ","))))
|
||||
m.SortTimeR(kit.MDB_TIME)
|
||||
if !aaa.SessIsCli(m) {
|
||||
m.Table(func(index int, value map[string]string, head []string) {
|
||||
m.PushButton(kit.Select("", TRASH, !strings.HasSuffix(value[kit.MDB_PATH], "/")))
|
||||
})
|
||||
}
|
||||
}},
|
||||
},
|
||||
})
|
||||
|
@ -35,7 +35,7 @@ func _ssh_close(m *ice.Message, c net.Conn, channel ssh.Channel) {
|
||||
defer channel.Close()
|
||||
channel.Write([]byte(m.Conf(SERVICE, kit.Keym(GOODBYE))))
|
||||
}
|
||||
func _ssh_watch(m *ice.Message, meta map[string]string, h string, input io.Reader, output io.Writer, display io.Writer) {
|
||||
func _ssh_watch(m *ice.Message, meta map[string]string, h string, input io.Reader, output io.Writer) {
|
||||
r, w := io.Pipe()
|
||||
bio := io.TeeReader(input, w)
|
||||
m.Go(func() { io.Copy(output, r) })
|
||||
|
@ -28,6 +28,11 @@ func _ssh_open(m *ice.Message, arg ...string) {
|
||||
defer terminal.Restore(fd, oldState)
|
||||
}
|
||||
|
||||
gdb.SignalNotify(m, 28, func() {
|
||||
w, h, _ := terminal.GetSize(fd)
|
||||
_ssh_sizes(os.Stdin.Fd(), w, h)
|
||||
})
|
||||
|
||||
// 设置宽高
|
||||
w, h, _ := terminal.GetSize(fd)
|
||||
c.Write([]byte(fmt.Sprintf("#height:%d,width:%d\n", h, w)))
|
||||
@ -89,11 +94,11 @@ func _ssh_dial(m *ice.Message, cb func(net.Conn), arg ...string) {
|
||||
ssh.TTY_OP_OSPEED: 14400,
|
||||
})
|
||||
|
||||
gdb.SignalNotify(m, 28, func() {
|
||||
w, h, _ := terminal.GetSize(int(os.Stdin.Fd()))
|
||||
session.WindowChange(h, w)
|
||||
})
|
||||
|
||||
// gdb.SignalNotify(m, 28, func() {
|
||||
// w, h, _ := terminal.GetSize(int(os.Stdin.Fd()))
|
||||
// session.WindowChange(h, w)
|
||||
// })
|
||||
//
|
||||
session.Shell()
|
||||
session.Wait()
|
||||
})
|
||||
|
@ -19,5 +19,9 @@ func _ssh_size(fd uintptr, b []byte) {
|
||||
ws := &Winsize{Width: uint16(w), Height: uint16(h)}
|
||||
syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(syscall.TIOCSWINSZ), uintptr(unsafe.Pointer(ws)))
|
||||
}
|
||||
func _ssh_sizes(fd uintptr, w, h int) {
|
||||
ws := &Winsize{Width: uint16(w), Height: uint16(h)}
|
||||
syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(syscall.TIOCSWINSZ), uintptr(unsafe.Pointer(ws)))
|
||||
}
|
||||
func _ssh_handle(m *ice.Message, meta map[string]string, c net.Conn, channel ssh.Channel, requests <-chan *ssh.Request) {
|
||||
}
|
||||
|
@ -2,13 +2,14 @@ package ssh
|
||||
|
||||
import (
|
||||
"encoding/binary"
|
||||
"github.com/kr/pty"
|
||||
"io"
|
||||
"net"
|
||||
"os"
|
||||
"syscall"
|
||||
"unsafe"
|
||||
|
||||
"github.com/kr/pty"
|
||||
|
||||
ice "github.com/shylinux/icebergs"
|
||||
"github.com/shylinux/icebergs/base/cli"
|
||||
"github.com/shylinux/icebergs/base/mdb"
|
||||
@ -26,6 +27,10 @@ func _ssh_size(fd uintptr, b []byte) {
|
||||
ws := &Winsize{Width: uint16(w), Height: uint16(h)}
|
||||
syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(syscall.TIOCSWINSZ), uintptr(unsafe.Pointer(ws)))
|
||||
}
|
||||
func _ssh_sizes(fd uintptr, w, h int) {
|
||||
ws := &Winsize{Width: uint16(w), Height: uint16(h)}
|
||||
syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(syscall.TIOCSWINSZ), uintptr(unsafe.Pointer(ws)))
|
||||
}
|
||||
func _ssh_handle(m *ice.Message, meta map[string]string, c net.Conn, channel ssh.Channel, requests <-chan *ssh.Request) {
|
||||
m.Logs(CHANNEL, tcp.HOSTPORT, c.RemoteAddr(), "->", c.LocalAddr())
|
||||
defer m.Logs("dischan", tcp.HOSTPORT, c.RemoteAddr(), "->", c.LocalAddr())
|
||||
@ -67,14 +72,13 @@ func _ssh_handle(m *ice.Message, meta map[string]string, c net.Conn, channel ssh
|
||||
channel.Close()
|
||||
})
|
||||
case "shell":
|
||||
_ssh_watch(m, meta, h, channel, pty)
|
||||
m.Go(func() { io.Copy(channel, pty) })
|
||||
|
||||
_ssh_exec(m, shell, nil, list, tty, tty, func() {
|
||||
defer m.Cmd(mdb.MODIFY, CHANNEL, "", mdb.HASH, kit.MDB_HASH, h, kit.MDB_STATUS, tcp.CLOSE)
|
||||
_ssh_close(m, c, channel)
|
||||
})
|
||||
|
||||
_ssh_watch(m, meta, h, channel, pty, channel)
|
||||
}
|
||||
request.Reply(true, nil)
|
||||
}
|
||||
|
@ -11,5 +11,7 @@ type Winsize struct{ Height, Width, x, y uint16 }
|
||||
|
||||
func _ssh_size(fd uintptr, b []byte) {
|
||||
}
|
||||
func _ssh_sizes(fd uintptr, w, h int) {
|
||||
}
|
||||
func _ssh_handle(m *ice.Message, meta map[string]string, c net.Conn, channel ssh.Channel, requests <-chan *ssh.Request) {
|
||||
}
|
||||
|
2
conf.go
2
conf.go
@ -6,7 +6,7 @@ const ( // MOD
|
||||
|
||||
MOD_CHAN = 16
|
||||
MOD_TICK = "1s"
|
||||
MOD_BUFS = 1024
|
||||
MOD_BUFS = 4096
|
||||
|
||||
MOD_DATE = "2006-01-02"
|
||||
MOD_TIME = "2006-01-02 15:04:05"
|
||||
|
5
go.sum
5
go.sum
@ -1,7 +1,9 @@
|
||||
github.com/AaronO/go-git-http v0.0.0-20161214145340-1d9485b3a98f/go.mod h1:+6Yuq73F9068Na+mSBNXCvyuxvgw4f/g5ii40e3U8Sc=
|
||||
github.com/creack/pty v1.1.7 h1:6pwm8kMQKCmgUg0ZHTm5+/YvRK0s3THD/28+T6/kk4A=
|
||||
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
|
||||
github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
|
||||
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
github.com/kr/pty v1.1.8 h1:AkaSdXYQOWeaO3neb8EM634ahkXXe3jYbVh/F9lq+GI=
|
||||
github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw=
|
||||
github.com/shylinux/toolkits v0.2.3 h1:UdE5dUKtc+iVeco9sFrlj98BxVJADYoLNeywTnLrSMc=
|
||||
github.com/shylinux/toolkits v0.2.3/go.mod h1:oMwi/N00I2cXenmcAkqikEncTzB4u5JhTQ9mO5xj7sY=
|
||||
@ -9,9 +11,12 @@ github.com/shylinux/toolkits v0.2.4 h1:2TaRBYdt15dE9vTUTO++6aF66vOZNd+ruP3be1C4z
|
||||
github.com/shylinux/toolkits v0.2.4/go.mod h1:oMwi/N00I2cXenmcAkqikEncTzB4u5JhTQ9mO5xj7sY=
|
||||
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e h1:MRM5ITcdelLK2j1vwZ3Je0FKVCfqOLp5zO6trqMLYs0=
|
||||
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e/go.mod h1:XV66xRDqSt+GTGFMVlhk3ULuV0y9ZmzeVGR4mloJI3M=
|
||||
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 h1:It14KIkyBFYkHkwZ7k45minvA9aorojkyjGk9KJ5B/w=
|
||||
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 h1:nxC68pudNYkKU6jWhgrqdreuFiOQWj1Fs7T3VrH4Pjw=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
|
@ -58,6 +58,11 @@ func _status_list(m *ice.Message) (files, adds, dels int, last time.Time) {
|
||||
|
||||
for _, v := range strings.Split(strings.TrimSpace(diff), "\n") {
|
||||
vs := strings.SplitN(strings.TrimSpace(v), " ", 2)
|
||||
switch kit.Ext(vs[1]) {
|
||||
case "swp", "bin":
|
||||
continue
|
||||
}
|
||||
|
||||
m.Push(kit.MDB_NAME, value[kit.MDB_NAME])
|
||||
m.Push(kit.MDB_TYPE, vs[0])
|
||||
m.Push(kit.MDB_FILE, vs[1])
|
||||
@ -96,8 +101,9 @@ const (
|
||||
OPT = "opt"
|
||||
PRO = "pro"
|
||||
|
||||
DIFF = "diff"
|
||||
COMMIT = "commit"
|
||||
DIFF = "diff"
|
||||
COMMIT = "commit"
|
||||
COMMENT = "comment"
|
||||
)
|
||||
const STATUS = "status"
|
||||
|
||||
@ -130,7 +136,7 @@ func init() {
|
||||
m.Cmdy(cli.SYSTEM, GIT, ADD, m.Option(kit.MDB_FILE))
|
||||
}}, OPT: {Name: "opt", Help: "优化"}, PRO: {Name: "pro", Help: "自举"},
|
||||
|
||||
COMMIT: {Name: "commit action=add,opt,pro comment=some@key", Help: "提交", Hand: func(m *ice.Message, arg ...string) {
|
||||
COMMIT: {Name: "commit action=opt,add,pro comment=some@key", Help: "提交", Hand: func(m *ice.Message, arg ...string) {
|
||||
if arg[0] == kit.MDB_ACTION {
|
||||
m.Option(kit.MDB_TEXT, arg[1]+" "+arg[3])
|
||||
} else {
|
||||
@ -144,10 +150,9 @@ func init() {
|
||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
switch arg[0] {
|
||||
case kit.MDB_NAME:
|
||||
m.OptionFields("name,time")
|
||||
m.Cmdy(REPOS)
|
||||
m.Cmdy(REPOS, ice.OptionFields("name,time"))
|
||||
|
||||
case "comment":
|
||||
case COMMENT:
|
||||
ls := []string{}
|
||||
ls = append(ls, kit.Split(m.Option(kit.MDB_FILE), " /")...)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user