diff --git a/src/contexts/aaa/aaa.go b/src/contexts/aaa/aaa.go index 9e52a50f..b67587e6 100644 --- a/src/contexts/aaa/aaa.go +++ b/src/contexts/aaa/aaa.go @@ -107,7 +107,7 @@ var Index = &ctx.Context{Name: "aaa", Help: "认证中心", "nuser": &ctx.Cache{Name: "nuser", Value: "0", Help: "用户数量"}, }, Configs: map[string]*ctx.Config{ - "expire": &ctx.Config{Name: "expire(s)", Value: "7200", Help: "会话超时"}, + "expire": &ctx.Config{Name: "expire(s)", Value: "72000", Help: "会话超时"}, "cert": &ctx.Config{Name: "cert", Value: "etc/pem/cert.pem", Help: "证书文件"}, "pub": &ctx.Config{Name: "pub", Value: "etc/pem/pub.pem", Help: "公钥文件"}, "key": &ctx.Config{Name: "key", Value: "etc/pem/key.pem", Help: "私钥文件"}, diff --git a/src/contexts/cli/cli.go b/src/contexts/cli/cli.go index 7520517f..ecfee7e9 100644 --- a/src/contexts/cli/cli.go +++ b/src/contexts/cli/cli.go @@ -341,7 +341,9 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心", } m.Target().Message().Set("result").Set("append").Copy(msg, "result").Copy(msg, "append") - m.Set("append").Set("result").Copy(msg, "append").Copy(msg, "result") + m.Set("append").Copy(msg, "append") + m.Set("result").Copy(msg, "result") + // m.Capi("last_msg", 0, msg.Code()) // m.Capi("ps_count", 1) } @@ -580,55 +582,57 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心", } m.Add("append", "return", arg[1:]) }}, - "source": &ctx.Command{Name: "source [stdio [init.shy [exit.shy]]]|[filename [async]]|string", Help: "解析脚本, filename: 文件名, async: 异步执行", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) { - if _, ok := m.Source().Server.(*CLI); ok { - msg := m.Spawn(c) - m.Copy(msg, "target") - } - - if len(arg) == 0 || arg[0] == "stdio" { - m.Sess("log", false).Cmd("init") - - if m.Start("shy", "shell", "stdio"); m.Sess("nfs").Cmd("path", m.Confx("init.shy", arg, 1)).Results(0) { - msg := m.Spawn().Add("option", "scan_end", "false").Cmd("source", m.Conf("init.shy")) - m.Cap("ps_target", msg.Append("last_target")) - m.Option("prompt", m.Conf("prompt")) - m.Find("nfs.stdio").Cmd("prompt") + "source": &ctx.Command{Name: "source [stdio [init.shy [exit.shy]]]|[filename [async]]|string", Help: "解析脚本, filename: 文件名, async: 异步执行", + Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) { + if _, ok := m.Source().Server.(*CLI); ok { + msg := m.Spawn(c) + m.Copy(msg, "target") } - if m.Wait(); m.Sess("nfs").Cmd("path", m.Confx("exit.shy", arg, 2)).Results(0) { - m.Spawn().Add("option", "scan_end", "false").Cmd("source", m.Conf("exit.shy")) - } - return - } - if m.Sess("nfs").Cmd("path", arg[0]).Results(0) { - m.Start(fmt.Sprintf("shell%d", m.Capi("nshell", 1)), "shell", arg...) - if len(arg) < 2 || arg[1] != "async" { - m.Wait() - } else { - m.Options("async", true) - } - return - } + if len(arg) == 0 || arg[0] == "stdio" { + m.Sess("log", false).Cmd("init") - m.Confv("source_list", -1, map[string]interface{}{ - "source_time": m.Time(), - "source_ctx": m.Option("current_ctx"), - "source_cmd": strings.Join(arg, " "), - }) - - if m.Options("current_ctx") { - args := []string{"context", m.Option("current_ctx")} - arg = append(args, arg...) - } - m.Sess("yac").Call(func(msg *ctx.Message) *ctx.Message { - switch msg.Cmd().Detail(0) { - case "cmd": - m.Set("append").Copy(msg, "append").Set("result").Copy(msg, "result") + if m.Start("shy", "shell", "stdio"); m.Sess("nfs").Cmd("path", m.Confx("init.shy", arg, 1)).Results(0) { + msg := m.Spawn().Add("option", "scan_end", "false").Cmd("source", m.Conf("init.shy")) + m.Cap("ps_target", msg.Append("last_target")) + m.Option("prompt", m.Conf("prompt")) + m.Find("nfs.stdio").Cmd("prompt") + } + if m.Wait(); m.Sess("nfs").Cmd("path", m.Confx("exit.shy", arg, 2)).Results(0) { + m.Spawn().Add("option", "scan_end", "false").Cmd("source", m.Conf("exit.shy")) + } + return } - return nil - }, "parse", "line", "void", strings.Join(arg, " ")) - }}, + + if m.Sess("nfs").Cmd("path", arg[0]).Results(0) { + m.Start(fmt.Sprintf("shell%d", m.Capi("nshell", 1)), "shell", arg...) + if len(arg) < 2 || arg[1] != "async" { + m.Wait() + } else { + m.Options("async", true) + } + return + } + + m.Confv("source_list", -1, map[string]interface{}{ + "source_time": m.Time(), + "source_ctx": m.Option("current_ctx"), + "source_cmd": strings.Join(arg, " "), + }) + + if m.Options("current_ctx") { + args := []string{"context", m.Option("current_ctx")} + arg = append(args, arg...) + } + m.Sess("yac").Call(func(msg *ctx.Message) *ctx.Message { + switch msg.Cmd().Detail(0) { + case "cmd": + m.Set("append").Copy(msg, "append") + m.Set("result").Copy(msg, "result") + } + return nil + }, "parse", "line", "void", strings.Join(arg, " ")) + }}, "arguments": &ctx.Command{Name: "arguments", Help: "脚本参数", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) { if cli, ok := m.Source().Server.(*CLI); ok { msg := cli.Message().Spawn().Cmd("detail", arg) diff --git a/usr/librarys/code.js b/usr/librarys/code.js index 601229b6..5f32acbe 100644 --- a/usr/librarys/code.js +++ b/usr/librarys/code.js @@ -7,6 +7,8 @@ var code = { ncommand: 1, show_result: true, show_height: "30px", + scroll_x: 50, + scroll_y: 50, } function copy_to_clipboard(text) { @@ -225,6 +227,53 @@ function onaction(event, action) { var dataset = target.dataset switch (action) { + case "scroll": + var body = document.getElementsByTagName("body")[0] + if (target.tagName == "BODY") { + switch (event.key) { + case "h": + if (event.ctrlKey) { + window.scrollBy(-code.scroll_x*10, 0) + } else { + window.scrollBy(-code.scroll_x, 0) + } + break + case "H": + window.scrollBy(-body.scrollWidth, 0) + break + case "l": + if (event.ctrlKey) { + window.scrollBy(code.scroll_x*10, 0) + } else { + window.scrollBy(code.scroll_x, 0) + } + break + case "L": + window.scrollBy(body.scrollWidth, 0) + break + case "j": + if (event.ctrlKey) { + window.scrollBy(0, code.scroll_y*10) + } else { + window.scrollBy(0, code.scroll_y) + } + break + case "J": + window.scrollBy(0, body.scrollHeight) + break + case "k": + if (event.ctrlKey) { + window.scrollBy(0, -code.scroll_y*10) + } else { + window.scrollBy(0, -code.scroll_y) + } + break + case "K": + window.scrollBy(0, -body.scrollHeight) + break + } + } + return case "keymap": if (target.tagName == "INPUT" && target.type == "text") { return @@ -236,12 +285,6 @@ function onaction(event, action) { item.className = code.showmap? "keymap show": "keymap hide" }) break - case "j": - window.scrollBy(0, context.scroll_by) - break - case "k": - window.scrollBy(0, -context.scroll_by) - break case "m": add_command() break @@ -249,10 +292,10 @@ function onaction(event, action) { code.show_result = !code.show_result document.querySelectorAll("form.option input[name=cmd]").forEach(function(input) { for (var command = input; command.tagName != "FIELDSET"; command = command.parentElement) {} - var result = command.querySelector("code.result pre") var append = command.querySelector("table.append") + var result = command.querySelector("code.result pre") + // append.style.display = (code.show_result||!append.querySelector("tr"))? "": "none" result.style.height = (code.show_result||result.innerText=="")? "": code.show_height - append.style.display = (code.show_result||!append.querySelector("tr"))? "": "none" }) break case "0": @@ -367,13 +410,11 @@ function onaction(event, action) { result.innerHTML = "" break case "z": - append.style.display = (result.style.height||!append.querySelector("tr"))? "": "none" + // append.style.display = (result.style.height||!append.querySelector("tr"))? "": "none" result.style.height = result.style.height? "": code.show_height break case "x": - target.value = "" - append.innerHTML = "" - result.innerHTML = "" + result.style.height = result.style.height? "": "1px" break case "s": copy_to_clipboard(result.innerText) @@ -457,6 +498,8 @@ function init_option() { case "g".charCodeAt(0): case "j".charCodeAt(0): case "k".charCodeAt(0): + case "h".charCodeAt(0): + case "l".charCodeAt(0): case "z".charCodeAt(0): case "m".charCodeAt(0): continue diff --git a/usr/template/code/code.tmpl b/usr/template/code/code.tmpl index ae022139..998ea449 100644 --- a/usr/template/code/code.tmpl +++ b/usr/template/code/code.tmpl @@ -99,7 +99,7 @@ } - + {{end}} {{define "void"}}{{end}}