mirror of
https://shylinux.com/x/ContextOS
synced 2025-04-26 01:04:06 +08:00
add some
This commit is contained in:
parent
497d721fa1
commit
23f4133695
@ -485,8 +485,6 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心",
|
|||||||
if cmd, ok := m.Confm("daemon", pid)["sub"].(*exec.Cmd); ok {
|
if cmd, ok := m.Confm("daemon", pid)["sub"].(*exec.Cmd); ok {
|
||||||
switch arg[0] {
|
switch arg[0] {
|
||||||
case "stop":
|
case "stop":
|
||||||
kit.Log("error", "kill: %s", cmd.Process.Pid)
|
|
||||||
m.Log("kill", "kill: %d", cmd.Process.Pid)
|
|
||||||
m.Echo("%s", cmd.Process.Signal(os.Interrupt))
|
m.Echo("%s", cmd.Process.Signal(os.Interrupt))
|
||||||
default:
|
default:
|
||||||
m.Echo("%v", cmd)
|
m.Echo("%v", cmd)
|
||||||
@ -1034,7 +1032,6 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心",
|
|||||||
}
|
}
|
||||||
|
|
||||||
if m.Confs("ssh.node", arg[0]) {
|
if m.Confs("ssh.node", arg[0]) {
|
||||||
m.Log("fuck", "waht %v", arg[1])
|
|
||||||
switch kit.Select("", arg, 1) {
|
switch kit.Select("", arg, 1) {
|
||||||
case "stop":
|
case "stop":
|
||||||
m.Cmdy("ssh._route", arg[0], "context", "cli", "quit", 0)
|
m.Cmdy("ssh._route", arg[0], "context", "cli", "quit", 0)
|
||||||
|
@ -4,5 +4,5 @@ var version = struct {
|
|||||||
host string
|
host string
|
||||||
self int
|
self int
|
||||||
}{
|
}{
|
||||||
"2019-08-05 15:48:07", "ZYB-20190522USI", 372,
|
"2019-08-06 21:00:10", "ZYB-20190522USI", 379,
|
||||||
}
|
}
|
||||||
|
@ -752,11 +752,13 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心",
|
|||||||
}},
|
}},
|
||||||
|
|
||||||
"temp": &ctx.Command{Name: "temp data", Help: "查找文件路径", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
"temp": &ctx.Command{Name: "temp data", Help: "查找文件路径", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
||||||
if f, p, e := kit.Create(path.Join(m.Conf("dir", "temp"), kit.Hashs("uniq"))); m.Assert(e) {
|
if f, p, e := kit.Create(path.Join(m.Conf("dir", "temp"), kit.Hashs(arg[0]))); m.Assert(e) {
|
||||||
defer f.Close()
|
defer f.Close()
|
||||||
|
|
||||||
for _, v := range arg {
|
for _, v := range arg {
|
||||||
f.WriteString(v)
|
if n, e := f.WriteString(v); e == nil {
|
||||||
|
m.Log("info", "save %v %v", n, p)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
m.Echo(p)
|
m.Echo(p)
|
||||||
}
|
}
|
||||||
@ -1044,14 +1046,14 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心",
|
|||||||
|
|
||||||
"open": &ctx.Command{Name: "open file", Help: "打开文件, file: 文件名", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
"open": &ctx.Command{Name: "open file", Help: "打开文件, file: 文件名", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
||||||
if m.Has("io") {
|
if m.Has("io") {
|
||||||
} else if p, f, e := open(m, arg[0], os.O_RDWR|os.O_CREATE); e == nil {
|
} else if p, f, e := open(m, arg[0], os.O_RDWR|os.O_CREATE|os.O_TRUNC); e == nil {
|
||||||
m.Put("option", "in", f).Put("option", "out", f)
|
m.Put("option", "in", f).Put("option", "out", f)
|
||||||
arg[0] = p
|
arg[0] = p
|
||||||
} else {
|
} else {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
m.Start(fmt.Sprintf("file%d", m.Capi("nfile")), fmt.Sprintf("file %s", arg[0]), "open", arg[0])
|
m.Start(fmt.Sprintf("file%d", m.Capi("nfile", 1)), fmt.Sprintf("file %s", arg[0]), "open", arg[0])
|
||||||
m.Append("bio.ctx1", m.Cap("module"))
|
m.Append("bio.ctx1", m.Cap("module"))
|
||||||
m.Echo(m.Cap("module"))
|
m.Echo(m.Cap("module"))
|
||||||
return
|
return
|
||||||
@ -1075,18 +1077,16 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心",
|
|||||||
}},
|
}},
|
||||||
"write": &ctx.Command{Name: "write string [pos]", Help: "写入文件, string: 写入内容, pos: 写入位置", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
"write": &ctx.Command{Name: "write string [pos]", Help: "写入文件, string: 写入内容, pos: 写入位置", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
||||||
if nfs, ok := m.Target().Server.(*NFS); m.Assert(ok) && nfs.out != nil {
|
if nfs, ok := m.Target().Server.(*NFS); m.Assert(ok) && nfs.out != nil {
|
||||||
if len(arg) > 1 {
|
|
||||||
m.Cap("pos", arg[1])
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(arg[0]) == 0 {
|
if len(arg[0]) == 0 {
|
||||||
m.Assert(nfs.out.Truncate(int64(m.Capi("pos"))))
|
m.Assert(nfs.out.Truncate(int64(m.Capi("pos"))))
|
||||||
m.Cap("size", m.Cap("pos"))
|
m.Cap("size", m.Cap("pos"))
|
||||||
m.Cap("pos", "0")
|
m.Cap("pos", "0")
|
||||||
} else {
|
} else {
|
||||||
n, e := nfs.out.WriteAt([]byte(arg[0]), int64(m.Capi("pos")))
|
for _, v := range arg {
|
||||||
if m.Capi("nwrite", n); m.Assert(e) && m.Capi("pos", n) > m.Capi("size") {
|
n, e := nfs.out.WriteAt([]byte(v), int64(m.Capi("pos")))
|
||||||
m.Cap("size", m.Cap("pos"))
|
if m.Capi("nwrite", n); m.Assert(e) && m.Capi("pos", n) > m.Capi("size") {
|
||||||
|
m.Cap("size", m.Cap("pos"))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
nfs.out.Sync()
|
nfs.out.Sync()
|
||||||
}
|
}
|
||||||
@ -1143,7 +1143,7 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心",
|
|||||||
}},
|
}},
|
||||||
|
|
||||||
"socket": &ctx.Command{Name: "remote listen|dial args...", Help: "启动文件服务, args: 参考tcp模块, listen命令的参数", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
"socket": &ctx.Command{Name: "remote listen|dial args...", Help: "启动文件服务, args: 参考tcp模块, listen命令的参数", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) {
|
||||||
if _, ok := m.Target().Server.(*NFS); m.Assert(ok) { //{{{
|
if _, ok := m.Target().Server.(*NFS); m.Assert(ok) {
|
||||||
m.Sess("tcp").Call(func(msg *ctx.Message) *ctx.Message {
|
m.Sess("tcp").Call(func(msg *ctx.Message) *ctx.Message {
|
||||||
if msg.Has("node.port") {
|
if msg.Has("node.port") {
|
||||||
return msg
|
return msg
|
||||||
|
@ -471,7 +471,7 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 注册脚本
|
// 注册脚本
|
||||||
m.Cmd("nfs.source", m.Cmdx("nfs.hash", m.Append("work.script")))
|
m.Cmd("nfs.source", m.Cmdx("nfs.temp", m.Append("work.script")))
|
||||||
return nil
|
return nil
|
||||||
}, "send", "", "_add", m.Conf("runtime", "node.name"), m.Conf("runtime", "node.type"), m.Conf("runtime", "boot.ctx_type"))
|
}, "send", "", "_add", m.Conf("runtime", "node.name"), m.Conf("runtime", "node.type"), m.Conf("runtime", "boot.ctx_type"))
|
||||||
return nil
|
return nil
|
||||||
@ -673,7 +673,6 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
|
|||||||
if m.Option("user.cert", m.Cmd("aaa.auth", "username", m.Option("username"), "cert").Append("meta")); !m.Options("user.cert") {
|
if m.Option("user.cert", m.Cmd("aaa.auth", "username", m.Option("username"), "cert").Append("meta")); !m.Options("user.cert") {
|
||||||
m.Option("user.cert", m.Cmd("ssh._route", m.Option("user.route"), "_check", "user").Append("user.cert"))
|
m.Option("user.cert", m.Cmd("ssh._route", m.Option("user.route"), "_check", "user").Append("user.cert"))
|
||||||
m.Cmd("aaa.auth", "username", m.Option("username"), "cert", m.Option("user.cert"))
|
m.Cmd("aaa.auth", "username", m.Option("username"), "cert", m.Option("user.cert"))
|
||||||
m.Cmd("aaa.auth", "username", m.Option("username"), "userrole", "void")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if !m.Options("user.cert") || !m.Cmds("aaa.rsa", "verify", m.Option("user.cert"), m.Option("user.sign"), arg[2]) {
|
if !m.Options("user.cert") || !m.Cmds("aaa.rsa", "verify", m.Option("user.cert"), m.Option("user.sign"), arg[2]) {
|
||||||
|
@ -501,7 +501,7 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
"get": &ctx.Command{Name: "get [which] name [method GET|POST] url arg...", Help: "访问服务, method: 请求方法, url: 请求地址, arg: 请求参数",
|
"get": &ctx.Command{Name: "get [which] name [method GET|POST] url arg...", Help: "访问服务, method: 请求方法, url: 请求地址, arg: 请求参数",
|
||||||
Form: map[string]int{
|
Form: map[string]int{
|
||||||
"which": 1, "method": 1, "args": 1, "headers": 2,
|
"which": 1, "method": 1, "args": 1, "headers": 2,
|
||||||
"content_type": 1, "body": 1, "file": 2,
|
"content_type": 1, "content_data": 1, "body": 1, "file": 2,
|
||||||
"parse": 1, "temp": -1, "temp_expire": 1, "save": 1,
|
"parse": 1, "temp": -1, "temp_expire": 1, "save": 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) {
|
||||||
// 查看配置
|
// 查看配置
|
||||||
@ -687,10 +687,16 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
|||||||
switch {
|
switch {
|
||||||
// 解析数据
|
// 解析数据
|
||||||
case parse == "json" || strings.HasPrefix(ct, "application/json") || strings.HasPrefix(ct, "application/javascript"):
|
case parse == "json" || strings.HasPrefix(ct, "application/json") || strings.HasPrefix(ct, "application/javascript"):
|
||||||
if json.NewDecoder(res.Body).Decode(&result); !m.Has("temp") {
|
if json.NewDecoder(res.Body).Decode(&result); m.Options("temp_expire") {
|
||||||
m.Option("temp", "")
|
if !m.Has("temp") {
|
||||||
|
m.Option("temp", "")
|
||||||
|
}
|
||||||
|
m.Put("option", "data", result).Cmdy("mdb.temp", "url", uri+uri_arg, "data", "data", m.Meta["temp"])
|
||||||
|
} else {
|
||||||
|
if b, e := json.MarshalIndent(result, "", " "); m.Assert(e) {
|
||||||
|
m.Echo(string(b))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
m.Put("option", "data", result).Cmdy("mdb.temp", "url", uri+uri_arg, "data", "data", m.Meta["temp"])
|
|
||||||
|
|
||||||
// 解析网页
|
// 解析网页
|
||||||
case parse == "html":
|
case parse == "html":
|
||||||
|
@ -41,9 +41,6 @@ type YAC struct {
|
|||||||
label map[string]string
|
label map[string]string
|
||||||
*ctx.Context
|
*ctx.Context
|
||||||
}
|
}
|
||||||
type Parser interface {
|
|
||||||
Parse(m *ctx.Message, line []byte, page string) (hash int, rest []byte, word []byte)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (yac *YAC) name(page int) string {
|
func (yac *YAC) name(page int) string {
|
||||||
if name, ok := yac.word[page]; ok {
|
if name, ok := yac.word[page]; ok {
|
||||||
@ -196,29 +193,30 @@ func (yac *YAC) train(m *ctx.Message, page, hash int, word []string, level int)
|
|||||||
m.Log("debug", "%s %s/%d word: %d point: %d end: %d", "train", strings.Repeat("#", level), level, len(word), len(points), len(ends))
|
m.Log("debug", "%s %s/%d word: %d point: %d end: %d", "train", strings.Repeat("#", level), level, len(word), len(points), len(ends))
|
||||||
return len(word), points, ends
|
return len(word), points, ends
|
||||||
}
|
}
|
||||||
func (yac *YAC) parse(m *ctx.Message, msg *ctx.Message, stack *kit.Stack, page int, void int, line []byte, level int) (rest []byte, word []string, hash int) {
|
func (yac *YAC) parse(m *ctx.Message, msg *ctx.Message, stack *kit.Stack, page int, void int, line string, level int) (string, []string, int) {
|
||||||
m.Log("debug", "%s %s\\%d %s(%d): %s", "parse", strings.Repeat("#", level), level, yac.name(page), page, string(line))
|
m.Log("debug", "%s %s\\%d %s(%d): %s", "parse", strings.Repeat("#", level), level, yac.name(page), page, line)
|
||||||
|
|
||||||
h, r, w := 0, []byte{}, []byte{}
|
|
||||||
p, _ := yac.lex.Target().Server.(Parser)
|
|
||||||
|
|
||||||
|
lex, hash, word := yac.lex, 0, []string{}
|
||||||
for star, s := 0, page; s != 0 && len(line) > 0; {
|
for star, s := 0, page; s != 0 && len(line) > 0; {
|
||||||
//解析空白
|
//解析空白
|
||||||
if h, r, _ = p.Parse(m, line, yac.name(void)); h == -1 {
|
if lex = yac.lex.Spawn().Cmd("parse", line, yac.name(void)); lex.Result(0) == "-1" {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
line = lex.Result(1)
|
||||||
|
|
||||||
//解析单词
|
//解析单词
|
||||||
if h, r, w = p.Parse(m, r, yac.name(s)); h == -1 {
|
if lex = yac.lex.Spawn().Cmd("parse", line, yac.name(s)); lex.Result(0) == "-1" {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
result := append([]string{}, lex.Meta["result"]...)
|
||||||
|
|
||||||
//解析状态
|
//解析状态
|
||||||
state := yac.mat[s][byte(h)]
|
state := yac.mat[s][byte(kit.Int(result[0]))]
|
||||||
|
|
||||||
//全局语法检查
|
//全局语法检查
|
||||||
if state != nil {
|
if state != nil {
|
||||||
if hh, _, ww := p.Parse(m, line, "key"); hh == 0 || len(ww) <= len(w) {
|
if key := yac.lex.Spawn().Cmd("parse", line, "key"); key.Result(0) == "0" || len(key.Result(2)) <= len(result[2]) {
|
||||||
line, word = r, append(word, string(w))
|
line, word = result[1], append(word, result[2])
|
||||||
} else {
|
} else {
|
||||||
state = nil
|
state = nil
|
||||||
}
|
}
|
||||||
@ -227,7 +225,7 @@ func (yac *YAC) parse(m *ctx.Message, msg *ctx.Message, stack *kit.Stack, page i
|
|||||||
if state == nil {
|
if state == nil {
|
||||||
for i := 0; i < m.Confi("meta", "ncell"); i++ {
|
for i := 0; i < m.Confi("meta", "ncell"); i++ {
|
||||||
if x := yac.mat[s][byte(i)]; i < m.Confi("meta", "nlang") && x != nil {
|
if x := yac.mat[s][byte(i)]; i < m.Confi("meta", "nlang") && x != nil {
|
||||||
if l, w, _ := yac.parse(m, msg, stack, i, void, line, level+1); len(l) != len(line) {
|
if l, w, _ := yac.parse(m, msg, stack, i, void, line, level+1); l != line {
|
||||||
line, word, state = l, append(word, w...), x
|
line, word, state = l, append(word, w...), x
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@ -340,9 +338,7 @@ var Index = &ctx.Context{Name: "yac", Help: "语法中心",
|
|||||||
map[string]interface{}{"page": "stm", "hash": "let", "word": []interface{}{"let", "key", "=", "\\[", "rep{", "exp", "}", "\\]"}},
|
map[string]interface{}{"page": "stm", "hash": "let", "word": []interface{}{"let", "key", "=", "\\[", "rep{", "exp", "}", "\\]"}},
|
||||||
map[string]interface{}{"page": "stm", "hash": "let", "word": []interface{}{"let", "key", "=", "\\{", "rep{", "exp", "}", "\\}"}},
|
map[string]interface{}{"page": "stm", "hash": "let", "word": []interface{}{"let", "key", "=", "\\{", "rep{", "exp", "}", "\\}"}},
|
||||||
map[string]interface{}{"page": "stm", "hash": "if", "word": []interface{}{"if", "exp"}},
|
map[string]interface{}{"page": "stm", "hash": "if", "word": []interface{}{"if", "exp"}},
|
||||||
map[string]interface{}{"page": "stm", "hash": "for", "word": []interface{}{"for", "key", "key", "key", "in", "key"}},
|
map[string]interface{}{"page": "stm", "hash": "for", "word": []interface{}{"for", "key", "rep{", "key", "}"}},
|
||||||
map[string]interface{}{"page": "stm", "hash": "for", "word": []interface{}{"for", "key", "key", "in", "key"}},
|
|
||||||
map[string]interface{}{"page": "stm", "hash": "for", "word": []interface{}{"for", "key", "in", "key"}},
|
|
||||||
map[string]interface{}{"page": "stm", "hash": "for", "word": []interface{}{"for", "rep{", "exp", "}"}},
|
map[string]interface{}{"page": "stm", "hash": "for", "word": []interface{}{"for", "rep{", "exp", "}"}},
|
||||||
map[string]interface{}{"page": "stm", "hash": "fun", "word": []interface{}{"fun", "key", "rep{", "exp", "}"}},
|
map[string]interface{}{"page": "stm", "hash": "fun", "word": []interface{}{"fun", "key", "rep{", "exp", "}"}},
|
||||||
map[string]interface{}{"page": "stm", "hash": "kit", "word": []interface{}{"kit", "rep{", "exp", "}"}},
|
map[string]interface{}{"page": "stm", "hash": "kit", "word": []interface{}{"kit", "rep{", "exp", "}"}},
|
||||||
@ -445,7 +441,7 @@ var Index = &ctx.Context{Name: "yac", Help: "语法中心",
|
|||||||
m.Optioni("yac.page", yac.page[m.Conf("nline")])
|
m.Optioni("yac.page", yac.page[m.Conf("nline")])
|
||||||
m.Optioni("yac.void", yac.page[m.Conf("nvoid")])
|
m.Optioni("yac.void", yac.page[m.Conf("nvoid")])
|
||||||
|
|
||||||
_, word, _ := yac.parse(m, m, stack, m.Optioni("yac.page"), m.Optioni("yac.void"), []byte(arg[0]), 1)
|
_, word, _ := yac.parse(m, m, stack, m.Optioni("yac.page"), m.Optioni("yac.void"), arg[0], 1)
|
||||||
m.Result(word)
|
m.Result(word)
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
@ -576,7 +576,7 @@ function Plugin(page, pane, field) {
|
|||||||
var plugin = field.Script || {}; plugin.__proto__ = {
|
var plugin = field.Script || {}; plugin.__proto__ = {
|
||||||
__proto__: pane,
|
__proto__: pane,
|
||||||
Append: function(item, name) {
|
Append: function(item, name) {
|
||||||
name = item.name || ""
|
name = item.name || "input"
|
||||||
|
|
||||||
item.onfocus = function(event) {
|
item.onfocus = function(event) {
|
||||||
page.pane = pane.Field, page.plugin = field, page.input = event.target
|
page.pane = pane.Field, page.plugin = field, page.input = event.target
|
||||||
|
Loading…
x
Reference in New Issue
Block a user