mirror of
https://shylinux.com/x/ContextOS
synced 2025-04-25 16:58:06 +08:00
mac pro ctx
This commit is contained in:
parent
5ca0bca18b
commit
72aa85d5a2
@ -1,7 +1,8 @@
|
||||
~file1
|
||||
history load etc/history.txt
|
||||
~shell1
|
||||
alias import nfs
|
||||
return
|
||||
~file1
|
||||
history load etc/history.txt
|
||||
|
||||
source etc/local.shy
|
||||
config debug on
|
||||
|
@ -126,6 +126,8 @@ var Index = &ctx.Context{Name: "aaa", Help: "认证中心",
|
||||
Configs: map[string]*ctx.Config{
|
||||
"rootname": &ctx.Config{Name: "根用户名", Value: "root", Help: "根用户名"},
|
||||
"expire": &ctx.Config{Name: "会话超时(s)", Value: "7200", Help: "会话超时"},
|
||||
"cert": &ctx.Config{Name: "证书文件", Value: "etc/cert.pem", Help: "证书文件"},
|
||||
"key": &ctx.Config{Name: "私钥文件", Value: "etc/key.pem", Help: "私钥文件"},
|
||||
},
|
||||
Commands: map[string]*ctx.Command{
|
||||
"login": &ctx.Command{Name: "login [sessid]|[[group] username password]]", Help: "用户登录", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
||||
@ -153,7 +155,7 @@ var Index = &ctx.Context{Name: "aaa", Help: "认证中心",
|
||||
m.Append("username", m.Cap("username"))
|
||||
m.Append("userrole", m.Cap("group"))
|
||||
m.Appendv("aaa", m)
|
||||
m.Sesss("aaa", m)
|
||||
m.Sess("aaa", m)
|
||||
case 2, 3:
|
||||
group, username, password := arg[0], arg[0], arg[1]
|
||||
if len(arg) == 3 {
|
||||
@ -179,7 +181,7 @@ var Index = &ctx.Context{Name: "aaa", Help: "认证中心",
|
||||
m.Append("username", msg.Cap("username"))
|
||||
m.Append("userrole", msg.Cap("group"))
|
||||
m.Appendv("aaa", msg)
|
||||
m.Sesss("aaa", msg)
|
||||
m.Sess("aaa", msg)
|
||||
}
|
||||
// }}}
|
||||
}},
|
||||
@ -192,7 +194,7 @@ var Index = &ctx.Context{Name: "aaa", Help: "认证中心",
|
||||
return
|
||||
}
|
||||
|
||||
group := m.Sesss("aaa").Cap("group")
|
||||
group := m.Sess("aaa").Cap("group")
|
||||
m.Travel(func(msg *ctx.Message, i int) bool {
|
||||
aaa := msg.Target().Server.(*AAA)
|
||||
if aaa.share == nil {
|
||||
|
@ -90,7 +90,7 @@ func (cli *CLI) Begin(m *ctx.Message, arg ...string) ctx.Server { // {{{
|
||||
// }}}
|
||||
func (cli *CLI) Start(m *ctx.Message, arg ...string) bool { // {{{
|
||||
cli.Message = m
|
||||
yac := m.Sesss("yac")
|
||||
yac := m.Sess("yac")
|
||||
if yac.Cap("status") != "start" {
|
||||
yac.Target().Start(yac)
|
||||
yac.Cmd("train", "void", "void", "[\t ]+")
|
||||
@ -190,6 +190,7 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心",
|
||||
"nshell": &ctx.Cache{Name: "nshell", Value: "0", Help: "终端数量"},
|
||||
},
|
||||
Configs: map[string]*ctx.Config{
|
||||
"init.shy": &ctx.Config{Name: "init.shy", Value: "etc/init.shy", Help: "启动脚本"},
|
||||
"cli_name": &ctx.Config{Name: "cli_name", Value: "shell", Help: "模块命名", Hand: func(m *ctx.Message, x *ctx.Config, arg ...string) string {
|
||||
if len(arg) > 0 { // {{{
|
||||
return arg[0]
|
||||
@ -211,7 +212,7 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心",
|
||||
if _, ok := m.Target().Server.(*CLI); m.Assert(ok) { // {{{
|
||||
m.Start(m.Confx("cli_name", arg, 2), m.Confx("cli_help", arg, 3), key, arg[0])
|
||||
if len(arg) < 2 || arg[1] != "async" {
|
||||
m.Target().Wait()
|
||||
m.Wait()
|
||||
}
|
||||
} // }}}
|
||||
}},
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -4,7 +4,6 @@ import ( // {{{
|
||||
"contexts"
|
||||
"fmt"
|
||||
Log "log"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
@ -44,16 +43,7 @@ func (log *LOG) Begin(m *ctx.Message, arg ...string) ctx.Server { // {{{
|
||||
log.Configs["flag_action"] = &ctx.Config{Name: "输出类型", Value: "true", Help: "模块日志类型"}
|
||||
log.Configs["flag_name"] = &ctx.Config{Name: "输出名称", Value: "true", Help: "模块日志输出消息源模块与消息目的模块"}
|
||||
|
||||
log.Configs["bench.log"] = &ctx.Config{Name: "日志文件", Value: "var/bench.log", Help: "模块日志输出的文件", Hand: func(m *ctx.Message, x *ctx.Config, arg ...string) string {
|
||||
if len(arg) > 0 {
|
||||
if nfs := m.Sesss("nfs"); nfs != nil {
|
||||
os.Create(arg[0])
|
||||
log.nfs = nfs.Cmd("open", arg[0], "", "日志文件")
|
||||
}
|
||||
return arg[0]
|
||||
}
|
||||
return x.Value
|
||||
}}
|
||||
log.Configs["bench.log"] = &ctx.Config{Name: "日志文件", Value: "var/bench.log", Help: "模块日志输出的文件"}
|
||||
|
||||
return log
|
||||
}
|
||||
@ -61,6 +51,7 @@ func (log *LOG) Begin(m *ctx.Message, arg ...string) ctx.Server { // {{{
|
||||
// }}}
|
||||
func (log *LOG) Start(m *ctx.Message, arg ...string) bool { // {{{
|
||||
log.Message = m
|
||||
log.nfs = m.Sess("nfs").Cmd("append", m.Confx("bench.log", arg, 0), "", "日志文件")
|
||||
return false
|
||||
}
|
||||
|
||||
@ -167,10 +158,10 @@ var Index = &ctx.Context{Name: "log", Help: "日志中心",
|
||||
cmd := strings.Join(arg[1:], "")
|
||||
|
||||
if log.nfs != nil {
|
||||
if log.nfs.Options("log", false); color > 0 {
|
||||
log.nfs.Cmd("write", fmt.Sprintf("%s\033[%dm%s%s %s\033[0m\n", date, color, code, action, cmd))
|
||||
if color > 0 {
|
||||
m.Spawn(log.nfs.Target()).Cmd("write", fmt.Sprintf("%s\033[%dm%s%s %s\033[0m\n", date, color, code, action, cmd))
|
||||
} else {
|
||||
log.nfs.Cmd("write", fmt.Sprintf("%s%s%s %s\n", date, code, action, cmd))
|
||||
m.Spawn(log.nfs.Target()).Cmd("write", fmt.Sprintf("%s%s%s %s\n", date, code, action, cmd))
|
||||
}
|
||||
}
|
||||
} // }}}
|
||||
|
@ -529,7 +529,7 @@ func (nfs *NFS) Read(p []byte) (n int, err error) { // {{{
|
||||
|
||||
func (nfs *NFS) Spawn(m *ctx.Message, c *ctx.Context, arg ...string) ctx.Server { // {{{
|
||||
nfs.Message = m
|
||||
if len(arg) > 0 && (arg[0] == "scan" || arg[0] == "open") {
|
||||
if len(arg) > 0 && (arg[0] == "scan" || arg[0] == "open" || arg[0] == "append") {
|
||||
c.Caches = map[string]*ctx.Cache{
|
||||
"pos": &ctx.Cache{Name: "pos", Value: "0", Help: "pos"},
|
||||
"size": &ctx.Cache{Name: "size", Value: "0", Help: "size"},
|
||||
@ -629,22 +629,25 @@ func (nfs *NFS) Start(m *ctx.Message, arg ...string) bool { // {{{
|
||||
return true
|
||||
}
|
||||
|
||||
if len(arg) > 0 && arg[0] == "open" {
|
||||
if len(arg) > 0 && (arg[0] == "open" || arg[0] == "append") {
|
||||
nfs.out = m.Optionv("out").(*os.File)
|
||||
nfs.in = m.Optionv("in").(*os.File)
|
||||
s, e := nfs.in.Stat()
|
||||
m.Assert(e)
|
||||
m.Capi("size", int(s.Size()))
|
||||
m.Cap("stream", arg[1])
|
||||
if arg[0] == "append" {
|
||||
m.Capi("pos", int(s.Size()))
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
m.Sesss("nfs", m)
|
||||
m.Sess("nfs", m)
|
||||
|
||||
nfs.Message = m
|
||||
if socket, ok := m.Data["io"]; ok {
|
||||
m.Cap("stream", m.Source().Name)
|
||||
// m.Sesss("aaa", "aaa").Cmd("login", "demo", "demo")
|
||||
// m.Sess("aaa", "aaa").Cmd("login", "demo", "demo")
|
||||
m.Options("stdio", false)
|
||||
|
||||
nfs.io = socket.(io.ReadWriteCloser)
|
||||
@ -666,7 +669,7 @@ func (nfs *NFS) Start(m *ctx.Message, arg ...string) bool { // {{{
|
||||
for {
|
||||
line, e := nfs.Reader.ReadString('\n')
|
||||
if msg == nil {
|
||||
msg = m.Sesss("ssh")
|
||||
msg = m.Sess("ssh")
|
||||
m.Cap("target", msg.Target().Name)
|
||||
}
|
||||
|
||||
@ -976,6 +979,18 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心",
|
||||
m.Echo(m.Target().Name)
|
||||
// }}}
|
||||
}},
|
||||
"append": &ctx.Command{
|
||||
Name: "append filename [nfs_name [nfs_help]]",
|
||||
Help: "打开文件, filename: 文件名, nfs_name: 模块名, nfs_help: 模块帮助",
|
||||
Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
||||
if m.Has("io") { // {{{
|
||||
} else if f, e := os.OpenFile(arg[0], os.O_RDWR|os.O_CREATE|os.O_APPEND, os.ModePerm); m.Assert(e) {
|
||||
m.Put("option", "in", f).Put("option", "out", f)
|
||||
}
|
||||
m.Start(m.Confx("nfs_name", arg, 1), m.Confx("nfs_help", arg, 2), "append", arg[0])
|
||||
m.Echo(m.Target().Name)
|
||||
// }}}
|
||||
}},
|
||||
"read": &ctx.Command{Name: "read [buf_size [pos]]", Help: "读取文件, buf_size: 读取大小, pos: 读取位置", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
||||
if nfs, ok := m.Target().Server.(*NFS); m.Assert(ok) && nfs.in != nil { // {{{
|
||||
n, e := strconv.Atoi(m.Confx("buf_size", arg, 0))
|
||||
|
@ -53,7 +53,7 @@ func (ssh *SSH) Close(m *ctx.Message, arg ...string) bool { // {{{
|
||||
if m.Target() == Index {
|
||||
go func() {
|
||||
m.Target().Begin(m)
|
||||
m.Sesss("nfs", "nfs")
|
||||
m.Sess("nfs", "nfs")
|
||||
for !m.Caps("stream") {
|
||||
time.Sleep(time.Second * time.Duration(m.Confi("interval")))
|
||||
go ssh.Message.Spawn(m.Target()).Copy(ssh.Message, "detail").Cmd()
|
||||
@ -117,7 +117,7 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
|
||||
m.Find("nfs").Call(func(file *ctx.Message) *ctx.Message {
|
||||
sub := file.Spawn(m.Target())
|
||||
sub.Start(fmt.Sprintf("host%d", Pulse.Capi("nhost", 1)), "远程主机")
|
||||
m.Sesss("ssh", sub)
|
||||
m.Sess("ssh", sub)
|
||||
return sub
|
||||
}, m.Meta["detail"])
|
||||
m.Spawn(m.Target()).Cmd("save")
|
||||
@ -130,7 +130,7 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
|
||||
sub := file.Spawn(m.Target())
|
||||
sub.Copy(m, "detail")
|
||||
sub.Target().Start(sub)
|
||||
m.Sesss("ssh", sub)
|
||||
m.Sess("ssh", sub)
|
||||
|
||||
sub.Spawn(sub.Target()).Cmd("pwd", m.Conf("domain"))
|
||||
return sub
|
||||
@ -169,7 +169,7 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
|
||||
m.Copy(msg, "result").Copy(msg, "append")
|
||||
m.Back(m)
|
||||
} else { //发送命令
|
||||
ssh.Message.Sesss("nfs").CallBack(m.Options("stdio"), func(host *ctx.Message) *ctx.Message {
|
||||
ssh.Message.Sess("nfs").CallBack(m.Options("stdio"), func(host *ctx.Message) *ctx.Message {
|
||||
m.Back(m.Copy(host, "result").Copy(host, "append"))
|
||||
return nil
|
||||
}, "send", "send", arg)
|
||||
@ -261,14 +261,14 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
|
||||
}, c)
|
||||
}},
|
||||
"save": &ctx.Command{Name: "save", Help: "远程执行", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
||||
json := m.Sesss("nfs") // {{{
|
||||
json := m.Sess("nfs") // {{{
|
||||
json.Put("option", "data", map[string]string{"domain": m.Cap("domain")})
|
||||
json.Cmd("json", m.Conf("domain.json"))
|
||||
m.Sesss("nfs").Cmd("genqr", m.Conf("domain.png"), json.Result(0))
|
||||
m.Sess("nfs").Cmd("genqr", m.Conf("domain.png"), json.Result(0))
|
||||
// }}}
|
||||
}},
|
||||
"who": &ctx.Command{Name: "who", Help: "远程执行", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) {
|
||||
aaa := m.Sesss("aaa") // {{{
|
||||
aaa := m.Sess("aaa") // {{{
|
||||
if aaa != nil {
|
||||
m.Echo(aaa.Cap("group"))
|
||||
}
|
||||
@ -312,7 +312,7 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
|
||||
if len(arg) > 2 {
|
||||
cmds = arg[2]
|
||||
}
|
||||
current := m.Sesss(arg[1], arg[1], "search").Target()
|
||||
current := m.Sess(arg[1], arg[1], "search").Target()
|
||||
if x, ok := current.Index[cmds]; ok {
|
||||
current = x
|
||||
} else if cmds != "" && cmds != "root" {
|
||||
|
@ -603,7 +603,7 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
||||
msg.Option("current_module", m.Option("dir"))
|
||||
msg.Option("current_domain", m.Option("domain"))
|
||||
m.Add("option", "tmpl", v)
|
||||
m.Sesss(v, msg)
|
||||
m.Sess(v, msg)
|
||||
}
|
||||
}
|
||||
m.Append("template", m.Conf("travel_main"), m.Conf("travel_tmpl"))
|
||||
@ -632,7 +632,7 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
||||
}
|
||||
|
||||
// 共享列表
|
||||
share := m.Sesss("share", m.Target())
|
||||
share := m.Sess("share", m.Target())
|
||||
index := share.Target().Index
|
||||
if index != nil && index[aaa.Append("userrole")] != nil {
|
||||
for k, v := range index[aaa.Append("userrole")].Index {
|
||||
@ -656,7 +656,7 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
||||
fs, e := ioutil.ReadDir(m.Option("dir"))
|
||||
m.Assert(e)
|
||||
fs = append(fs, s)
|
||||
list := m.Sesss("list", m.Target())
|
||||
list := m.Sess("list", m.Target())
|
||||
list.Option("dir", m.Option("dir"))
|
||||
|
||||
for _, v := range fs {
|
||||
@ -712,7 +712,7 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心",
|
||||
// 执行命令
|
||||
switch m.Option("cmd") {
|
||||
case "git":
|
||||
git := m.Sesss("git", m.Target())
|
||||
git := m.Sess("git", m.Target())
|
||||
|
||||
branch := m.Find("nfs").Cmd("git", "-C", m.Option("dir"), "branch")
|
||||
git.Option("branch", branch.Result(0))
|
||||
|
@ -94,8 +94,8 @@ func (yac *YAC) train(m *ctx.Message, page, hash int, word []string) (int, []*Po
|
||||
default:
|
||||
x, ok := yac.page[word[i]]
|
||||
if !ok {
|
||||
if x = m.Sesss("lex").Cmd("parse", word[i], yac.name(s)).Resulti(0); x == 0 {
|
||||
x = m.Sesss("lex").Cmd("train", word[i], len(yac.mat[s]), yac.name(s)).Resulti(0)
|
||||
if x = m.Sess("lex").Cmd("parse", word[i], yac.name(s)).Resulti(0); x == 0 {
|
||||
x = m.Sess("lex").Cmd("train", word[i], len(yac.mat[s]), yac.name(s)).Resulti(0)
|
||||
}
|
||||
}
|
||||
c := byte(x)
|
||||
@ -193,7 +193,7 @@ func (yac *YAC) parse(m *ctx.Message, out *ctx.Message, page int, void int, line
|
||||
hash, word := 0, []string{}
|
||||
for star, s := 0, page; s != 0 && len(line) > 0; {
|
||||
//解析空白
|
||||
lex := m.Sesss("lex")
|
||||
lex := m.Sess("lex")
|
||||
lex.Cmd("parse", line, yac.name(void))
|
||||
if lex.Result(0) == "-1" {
|
||||
break
|
||||
@ -201,7 +201,7 @@ func (yac *YAC) parse(m *ctx.Message, out *ctx.Message, page int, void int, line
|
||||
|
||||
//解析单词
|
||||
line = lex.Result(1)
|
||||
lex = m.Sesss("lex")
|
||||
lex = m.Sess("lex")
|
||||
lex.Cmd("parse", line, yac.name(s))
|
||||
if lex.Result(0) == "-1" {
|
||||
break
|
||||
@ -212,7 +212,7 @@ func (yac *YAC) parse(m *ctx.Message, out *ctx.Message, page int, void int, line
|
||||
state := yac.mat[s][c]
|
||||
|
||||
if state != nil { //全局语法检查
|
||||
if key := m.Sesss("lex").Cmd("parse", line, "key"); key.Resulti(0) == 0 || len(key.Result(2)) <= len(lex.Result(2)) {
|
||||
if key := m.Sess("lex").Cmd("parse", line, "key"); key.Resulti(0) == 0 || len(key.Result(2)) <= len(lex.Result(2)) {
|
||||
line, word = lex.Result(1), append(word, lex.Result(2))
|
||||
} else {
|
||||
state = nil
|
||||
@ -308,7 +308,7 @@ func (yac *YAC) Start(m *ctx.Message, arg ...string) (close bool) { // {{{
|
||||
yac.Message = m
|
||||
|
||||
if len(arg) > 0 && arg[0] == "parse" {
|
||||
lex := m.Sesss("lex")
|
||||
lex := m.Sess("lex")
|
||||
if lex.Cap("status") != "start" {
|
||||
lex.Target().Start(lex)
|
||||
}
|
||||
@ -326,7 +326,7 @@ func (yac *YAC) Start(m *ctx.Message, arg ...string) (close bool) { // {{{
|
||||
}()
|
||||
|
||||
//加载文件
|
||||
nfs := m.Sesss("nfs").Call(func(buf *ctx.Message) *ctx.Message {
|
||||
nfs := m.Sess("nfs").Call(func(buf *ctx.Message) *ctx.Message {
|
||||
out = buf
|
||||
data <- buf.Detail(0) + "; "
|
||||
<-next
|
||||
@ -442,7 +442,7 @@ var Index = &ctx.Context{Name: "yac", Help: "语法中心",
|
||||
yac.hand[hash] = arg[1]
|
||||
}
|
||||
|
||||
// if m.Sesss("lex") == nil {
|
||||
// if m.Sess("lex") == nil {
|
||||
// lex := m.Sess("lex", "lex")
|
||||
// if lex.Cap("status") == "start" {
|
||||
// lex.Start(yac.Context.Name+"lex", "语法词法")
|
||||
|
Loading…
x
Reference in New Issue
Block a user