mirror of
https://shylinux.com/x/ContextOS
synced 2025-04-26 01:04:06 +08:00
opt plugin
This commit is contained in:
parent
4eb290d72c
commit
4a9a7d8865
@ -55,7 +55,7 @@ main() {
|
|||||||
trap HUP hup
|
trap HUP hup
|
||||||
log "\nstarting..."
|
log "\nstarting..."
|
||||||
while true; do
|
while true; do
|
||||||
date && ${ctx_bin} "$@" && break
|
date && ${ctx_bin} "$@" 2>var/log/boot.log && break
|
||||||
log "\n\nrestarting..." && sleep 1
|
log "\n\nrestarting..." && sleep 1
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
@ -203,12 +203,12 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心",
|
|||||||
m.Append("NumCPU", runtime.NumCPU())
|
m.Append("NumCPU", runtime.NumCPU())
|
||||||
m.Append("NumGo", runtime.NumGoroutine())
|
m.Append("NumGo", runtime.NumGoroutine())
|
||||||
m.Append("NumGC", mem.NumGC)
|
m.Append("NumGC", mem.NumGC)
|
||||||
m.Append("other", kit.FmtSize(mem.OtherSys))
|
m.Append("other", kit.FmtSize(int64(mem.OtherSys)))
|
||||||
m.Append("stack", kit.FmtSize(mem.StackSys))
|
m.Append("stack", kit.FmtSize(int64(mem.StackSys)))
|
||||||
m.Append("heapsys", kit.FmtSize(mem.HeapSys))
|
m.Append("heapsys", kit.FmtSize(int64(mem.HeapSys)))
|
||||||
m.Append("heapidle", kit.FmtSize(mem.HeapIdle))
|
m.Append("heapidle", kit.FmtSize(int64(mem.HeapIdle)))
|
||||||
m.Append("heapinuse", kit.FmtSize(mem.HeapInuse))
|
m.Append("heapinuse", kit.FmtSize(int64(mem.HeapInuse)))
|
||||||
m.Append("heapalloc", kit.FmtSize(mem.HeapAlloc))
|
m.Append("heapalloc", kit.FmtSize(int64(mem.HeapAlloc)))
|
||||||
m.Append("objects", mem.HeapObjects)
|
m.Append("objects", mem.HeapObjects)
|
||||||
m.Append("lookups", mem.Lookups)
|
m.Append("lookups", mem.Lookups)
|
||||||
m.Table()
|
m.Table()
|
||||||
@ -248,6 +248,7 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心",
|
|||||||
"cmd_temp": -1,
|
"cmd_temp": -1,
|
||||||
"cmd_parse": 2,
|
"cmd_parse": 2,
|
||||||
"cmd_error": 0,
|
"cmd_error": 0,
|
||||||
|
"cmd_select": -1,
|
||||||
"app_log": 1,
|
"app_log": 1,
|
||||||
}, Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
}, Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
||||||
// 管道参数
|
// 管道参数
|
||||||
@ -443,6 +444,9 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心",
|
|||||||
}
|
}
|
||||||
m.Echo(out.String())
|
m.Echo(out.String())
|
||||||
}
|
}
|
||||||
|
if m.Has("cmd_select") {
|
||||||
|
m.Cmd("select", m.Meta["cmd_select"])
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
// 命令超时
|
// 命令超时
|
||||||
@ -962,7 +966,7 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心",
|
|||||||
// 加载模块
|
// 加载模块
|
||||||
if p, e := plugin.Open(path.Join(m.Conf("publish", "path"), arg[0], "index.so")); e == nil {
|
if p, e := plugin.Open(path.Join(m.Conf("publish", "path"), arg[0], "index.so")); e == nil {
|
||||||
if s, e := p.Lookup("Index"); m.Assert(e) {
|
if s, e := p.Lookup("Index"); m.Assert(e) {
|
||||||
m.Spawn(c.Register(*(s.(**ctx.Context)), nil, arg[0])).Cmd("_init", arg[1:])
|
m.Spawn(c.Register(*(s.(**ctx.Context)), nil, arg[0]).Begin(m, arg[1:]...)).Cmd("_init", arg[1:])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -974,7 +978,7 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心",
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 查找脚本
|
// 查找脚本
|
||||||
p := msg.Cmdx("nfs.path", path.Join(msg.Conf("project", "plugin.path"), arg[0], "index.shy"))
|
p := m.Cmdx("nfs.path", path.Join(msg.Conf("project", "plugin.path"), arg[0], "index.shy"))
|
||||||
if p == "" {
|
if p == "" {
|
||||||
p = m.Cmdx("nfs.hash", m.Cmdx("web.get", "dev", fmt.Sprintf("publish/%s", arg[0]),
|
p = m.Cmdx("nfs.hash", m.Cmdx("web.get", "dev", fmt.Sprintf("publish/%s", arg[0]),
|
||||||
"GOARCH", m.Conf("runtime", "host.GOARCH"),
|
"GOARCH", m.Conf("runtime", "host.GOARCH"),
|
||||||
|
@ -4,5 +4,5 @@ var version = struct {
|
|||||||
host string
|
host string
|
||||||
self int
|
self int
|
||||||
}{
|
}{
|
||||||
"2019-08-25 17:36:48", "mac", 429,
|
"2019-08-27 21:20:24", "centos", 428,
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,7 @@ func (ctx *CTX) Begin(m *Message, arg ...string) Server {
|
|||||||
m.Option("log.disable", true)
|
m.Option("log.disable", true)
|
||||||
m.Option("ctx.chain", "aaa", "ssh", "cli", "nfs")
|
m.Option("ctx.chain", "aaa", "ssh", "cli", "nfs")
|
||||||
|
|
||||||
m.Option("table.limit", 10)
|
m.Option("table.limit", 30)
|
||||||
m.Option("table.offset", 0)
|
m.Option("table.offset", 0)
|
||||||
m.Optionv("ctx.form", map[string]int{
|
m.Optionv("ctx.form", map[string]int{
|
||||||
"table.limit": 1, "table.offset": 1,
|
"table.limit": 1, "table.offset": 1,
|
||||||
@ -89,7 +89,7 @@ var Index = &Context{Name: "ctx", Help: "模块中心", Server: &CTX{},
|
|||||||
}, Help: "时间参数"},
|
}, Help: "时间参数"},
|
||||||
"table": &Config{Name: "table", Value: map[string]interface{}{
|
"table": &Config{Name: "table", Value: map[string]interface{}{
|
||||||
"space": " ", "compact": "false", "col_sep": " ", "row_sep": "\n",
|
"space": " ", "compact": "false", "col_sep": " ", "row_sep": "\n",
|
||||||
"offset": 0, "limit": 10,
|
"offset": 0, "limit": 30,
|
||||||
}, Help: "制表"},
|
}, Help: "制表"},
|
||||||
"call_timeout": &Config{Name: "call_timeout", Value: "60s", Help: "回调超时"},
|
"call_timeout": &Config{Name: "call_timeout", Value: "60s", Help: "回调超时"},
|
||||||
},
|
},
|
||||||
@ -839,7 +839,6 @@ var Index = &Context{Name: "ctx", Help: "模块中心", Server: &CTX{},
|
|||||||
msg.Push(k, kit.Select("", arg, i))
|
msg.Push(k, kit.Select("", arg, i))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
msg.Log("fuck", "waht %v", msg.Meta)
|
|
||||||
return
|
return
|
||||||
}},
|
}},
|
||||||
"option": &Command{Name: "option", Help: "查看或添加选项", Hand: func(m *Message, c *Context, key string, arg ...string) (e error) {
|
"option": &Command{Name: "option", Help: "查看或添加选项", Hand: func(m *Message, c *Context, key string, arg ...string) (e error) {
|
||||||
|
@ -55,7 +55,7 @@ func (m *Message) Show(str string, args ...interface{}) *Message {
|
|||||||
res := fmt.Sprintf(str, args...)
|
res := fmt.Sprintf(str, args...)
|
||||||
|
|
||||||
if m.Option("bio.modal") == "action" {
|
if m.Option("bio.modal") == "action" {
|
||||||
fmt.Printf(res)
|
fmt.Fprintf(os.Stderr, res)
|
||||||
} else if kit.STDIO != nil {
|
} else if kit.STDIO != nil {
|
||||||
kit.STDIO.Show(res)
|
kit.STDIO.Show(res)
|
||||||
} else {
|
} else {
|
||||||
|
@ -574,6 +574,12 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心",
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
p := path.Join("src/plugin", m.Option("plugin"), arg[0])
|
||||||
|
if _, e := os.Stat(p); e == nil {
|
||||||
|
m.Echo(p)
|
||||||
|
return e
|
||||||
|
}
|
||||||
|
|
||||||
m.Confm("pwd", func(index int, value string) bool {
|
m.Confm("pwd", func(index int, value string) bool {
|
||||||
p := path.Join(value, arg[0])
|
p := path.Join(value, arg[0])
|
||||||
if _, e := os.Stat(p); e == nil {
|
if _, e := os.Stat(p); e == nil {
|
||||||
@ -609,7 +615,7 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心",
|
|||||||
"dir": &ctx.Command{Name: "dir [path [fields...]]", Help: []string{
|
"dir": &ctx.Command{Name: "dir [path [fields...]]", Help: []string{
|
||||||
"查看目录, path: 路径, fields...: 查询字段, time|type|full|path|name|tree|size|line|hash|hashs",
|
"查看目录, path: 路径, fields...: 查询字段, time|type|full|path|name|tree|size|line|hash|hashs",
|
||||||
"dir_deep: 递归查询", "dir_type both|file|dir|all: 文件类型", "dir_reg reg: 正则表达式", "dir_sort field order: 排序"},
|
"dir_deep: 递归查询", "dir_type both|file|dir|all: 文件类型", "dir_reg reg: 正则表达式", "dir_sort field order: 排序"},
|
||||||
Form: map[string]int{"dir_deep": 0, "dir_type": 1, "dir_reg": 1, "dir_sort": 2, "dir_sed": -1},
|
Form: map[string]int{"dir_deep": 0, "dir_type": 1, "dir_reg": 1, "dir_sort": 2, "dir_sed": -1, "dir_select": -1},
|
||||||
Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
||||||
if len(arg) == 0 {
|
if len(arg) == 0 {
|
||||||
arg = append(arg, "")
|
arg = append(arg, "")
|
||||||
@ -679,7 +685,11 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心",
|
|||||||
m.Echo(v).Echo(" ")
|
m.Echo(v).Echo(" ")
|
||||||
}
|
}
|
||||||
} else if !skip {
|
} else if !skip {
|
||||||
m.Table()
|
if m.Has("dir_select") {
|
||||||
|
m.Cmd("select", m.Meta["dir_select"])
|
||||||
|
} else {
|
||||||
|
m.Table()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}},
|
}},
|
||||||
|
@ -275,7 +275,7 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
|
|||||||
|
|
||||||
case "trust":
|
case "trust":
|
||||||
if len(arg) > 1 {
|
if len(arg) > 1 {
|
||||||
m.Conf("trust", arg[1], kit.Right(arg[2]))
|
m.Conf("trust", arg[1], kit.Right(kit.Select("true", arg, 2)))
|
||||||
}
|
}
|
||||||
if len(arg) > 1 {
|
if len(arg) > 1 {
|
||||||
m.Cmdy("ctx.config", "trust", arg[1])
|
m.Cmdy("ctx.config", "trust", arg[1])
|
||||||
@ -352,6 +352,7 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
|
|||||||
|
|
||||||
switch arg[0] {
|
switch arg[0] {
|
||||||
case "run":
|
case "run":
|
||||||
|
m.Option("plugin", arg[1])
|
||||||
tool := m.Confm("componet", []string{arg[1], arg[2]})
|
tool := m.Confm("componet", []string{arg[1], arg[2]})
|
||||||
if m.Option("userrole") != "root" {
|
if m.Option("userrole") != "root" {
|
||||||
switch kit.Format(tool["componet_type"]) {
|
switch kit.Format(tool["componet_type"]) {
|
||||||
@ -376,10 +377,15 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
|
|||||||
arg = arg[4:]
|
arg = arg[4:]
|
||||||
args := []string{}
|
args := []string{}
|
||||||
for _, v := range kit.Trans(tool["componet_args"]) {
|
for _, v := range kit.Trans(tool["componet_args"]) {
|
||||||
if v == "$$" {
|
if strings.HasPrefix(v, "__") {
|
||||||
if len(arg) > 0 {
|
if len(arg) > 0 {
|
||||||
args = append(args, arg[0])
|
args, arg = append(args, arg...), nil
|
||||||
arg = arg[1:]
|
} else {
|
||||||
|
args = append(args, "")
|
||||||
|
}
|
||||||
|
} else if strings.HasPrefix(v, "_") {
|
||||||
|
if len(arg) > 0 {
|
||||||
|
args, arg = append(args, arg[0]), arg[1:]
|
||||||
} else {
|
} else {
|
||||||
args = append(args, "")
|
args = append(args, "")
|
||||||
}
|
}
|
||||||
|
@ -1081,7 +1081,7 @@ var Index = &ctx.Context{Name: "yac", Help: "语法中心",
|
|||||||
m.Log("stack", "push %v", p.String("\\"))
|
m.Log("stack", "push %v", p.String("\\"))
|
||||||
|
|
||||||
if len(arg) > 2 {
|
if len(arg) > 2 {
|
||||||
m.Cmd("kit", "kit", arg[5], arg[1:5], arg[1], arg[6:])
|
m.Cmd("kit", "kit", arg[1:6], arg[1], arg[6:])
|
||||||
}
|
}
|
||||||
self := &ctx.Command{Name: strings.Join(arg[1:], " "), Help: []string{"pwd", "ls"}}
|
self := &ctx.Command{Name: strings.Join(arg[1:], " "), Help: []string{"pwd", "ls"}}
|
||||||
self.Hand = func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
self.Hand = func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
||||||
@ -1147,11 +1147,11 @@ var Index = &ctx.Context{Name: "yac", Help: "语法中心",
|
|||||||
}
|
}
|
||||||
|
|
||||||
m.Confv("_index", []interface{}{-2}, map[string]interface{}{
|
m.Confv("_index", []interface{}{-2}, map[string]interface{}{
|
||||||
"componet_type": kit.Select("public", arg, 1),
|
"componet_type": kit.Select("public", arg, 5),
|
||||||
"componet_name": kit.Select("", arg, 2),
|
"componet_name": kit.Select("", arg, 1),
|
||||||
"componet_help": kit.Select("", arg, 3),
|
"componet_help": kit.Select("", arg, 2),
|
||||||
"componet_view": kit.Select("componet", arg, 4),
|
"componet_view": kit.Select("componet", arg, 3),
|
||||||
"componet_init": kit.Select("", arg, 5),
|
"componet_init": kit.Select("", arg, 4),
|
||||||
|
|
||||||
"componet_ctx": m.Cap("module"),
|
"componet_ctx": m.Cap("module"),
|
||||||
"componet_cmd": kit.Select("", arg, 6),
|
"componet_cmd": kit.Select("", arg, 6),
|
||||||
|
@ -58,7 +58,7 @@ func Split(str string, n int) []string {
|
|||||||
}
|
}
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
func FmtSize(size uint64) string {
|
func FmtSize(size int64) string {
|
||||||
if size > 1<<30 {
|
if size > 1<<30 {
|
||||||
return fmt.Sprintf("%d.%dG", size>>30, (size>>20)%1024*100/1024)
|
return fmt.Sprintf("%d.%dG", size>>30, (size>>20)%1024*100/1024)
|
||||||
}
|
}
|
||||||
@ -73,15 +73,19 @@ func FmtSize(size uint64) string {
|
|||||||
|
|
||||||
return fmt.Sprintf("%dB", size)
|
return fmt.Sprintf("%dB", size)
|
||||||
}
|
}
|
||||||
func FmtTime(time int64) string {
|
func FmtTime(t int64) string {
|
||||||
|
sign, time := "", t
|
||||||
|
if time < 0 {
|
||||||
|
sign, time = "-", -t
|
||||||
|
}
|
||||||
if time > 1000000000 {
|
if time > 1000000000 {
|
||||||
return fmt.Sprintf("%d.%ds", time/1000000000, (time/1000000)%1000*100/1000)
|
return fmt.Sprintf("%s%d.%ds", sign, time/1000000000, (time/1000000)%1000*100/1000)
|
||||||
}
|
}
|
||||||
if time > 1000000 {
|
if time > 1000000 {
|
||||||
return fmt.Sprintf("%d.%dms", time/1000000, (time/1000)%1000*100/1000)
|
return fmt.Sprintf("%s%d.%dms", sign, time/1000000, (time/1000)%1000*100/1000)
|
||||||
}
|
}
|
||||||
if time > 1000 {
|
if time > 1000 {
|
||||||
return fmt.Sprintf("%d.%dus", time/1000, (time/1000)%1000*100/1000)
|
return fmt.Sprintf("%s%d.%dus", sign, time/1000, (time/1000)%1000*100/1000)
|
||||||
}
|
}
|
||||||
return fmt.Sprintf("%dns", time)
|
return fmt.Sprintf("%s%dns", sign, time)
|
||||||
}
|
}
|
||||||
|
@ -48,6 +48,9 @@ fieldset>form.option div.cmd input.args {
|
|||||||
background-color: black;
|
background-color: black;
|
||||||
width:160px;
|
width:160px;
|
||||||
}
|
}
|
||||||
|
fieldset>form.option div.tiny input.args {
|
||||||
|
width:20px;
|
||||||
|
}
|
||||||
fieldset>form.option div.long input.args {
|
fieldset>form.option div.long input.args {
|
||||||
width:240px;
|
width:240px;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user