From 3c7ac779c3af02f7a8a91adc353bc99bd0f4b18d Mon Sep 17 00:00:00 2001 From: shaoying Date: Wed, 30 Sep 2020 01:38:46 +0800 Subject: [PATCH] opt init.go --- base/mdb/search.go | 2 +- base/ssh/channel.go | 9 ++++- base/ssh/connect.go | 10 ++++- base/ssh/scripts.go | 46 +++++++++++++++++----- base/ssh/service.go | 4 +- base/ssh/session.go | 9 ++++- base/ssh/ssh.go | 5 +++ base/ssh/ssh.shy | 2 + base/tcp/client.go | 16 ++++---- base/tcp/port.go | 13 +++++-- base/tcp/server.go | 17 +++++---- base/web/{group.go => _group.go} | 0 base/web/{label.go => _label.go} | 0 conf.go | 7 ---- init.go | 65 ++++++++++---------------------- logs.go | 20 ++++++++++ misc.go | 17 ++------- misc/chrome/cache.go | 2 +- type.go | 2 +- 19 files changed, 140 insertions(+), 106 deletions(-) rename base/web/{group.go => _group.go} (100%) rename base/web/{label.go => _label.go} (100%) diff --git a/base/mdb/search.go b/base/mdb/search.go index 23823ad9..7e4138ac 100644 --- a/base/mdb/search.go +++ b/base/mdb/search.go @@ -15,7 +15,7 @@ func init() { SEARCH: {Name: "search", Help: "搜索", Value: kit.Data(kit.MDB_SHORT, kit.MDB_TYPE)}, }, Commands: map[string]*ice.Command{ - SEARCH: {Name: "search type word text", Help: "搜索", Action: map[string]*ice.Action{ + SEARCH: {Name: "search type word text auto", Help: "搜索", Action: map[string]*ice.Action{ CREATE: {Name: "create type cmd ctx", Help: "创建", Hand: func(m *ice.Message, arg ...string) { m.Rich(SEARCH, nil, kit.Dict(kit.MDB_TYPE, arg[0], kit.MDB_NAME, kit.Select(arg[0], arg, 1), kit.MDB_TEXT, kit.Select("", arg, 2))) }}, diff --git a/base/ssh/channel.go b/base/ssh/channel.go index f46ff311..edddb4a5 100644 --- a/base/ssh/channel.go +++ b/base/ssh/channel.go @@ -73,13 +73,20 @@ func init() { }, Commands: map[string]*ice.Command{ CHANNEL: {Name: "channel hash id auto 清理", Help: "通道", Action: map[string]*ice.Action{ + mdb.DELETE: {Name: "delete", Help: "删除", Hand: func(m *ice.Message, arg ...string) { + m.Cmdy(mdb.DELETE, CHANNEL, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH)) + }}, mdb.PRUNES: {Name: "prunes", Help: "清理", Hand: func(m *ice.Message, arg ...string) { m.Cmdy(mdb.PRUNES, CHANNEL, "", mdb.HASH, kit.MDB_STATUS, tcp.CLOSE) }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { if len(arg) == 0 { m.Option(mdb.FIELDS, "time,hash,status,username,hostname,hostport,tty,count") - m.Cmdy(mdb.SELECT, CHANNEL, "", mdb.HASH) + if m.Cmdy(mdb.SELECT, CHANNEL, "", mdb.HASH); len(arg) == 0 { + m.Table(func(index int, value map[string]string, head []string) { + m.PushButton(kit.Select("", "删除", value[kit.MDB_STATUS] == tcp.CLOSE)) + }) + } return } diff --git a/base/ssh/connect.go b/base/ssh/connect.go index 3599d4a4..687f2c56 100644 --- a/base/ssh/connect.go +++ b/base/ssh/connect.go @@ -79,13 +79,19 @@ func init() { }) }}, + mdb.DELETE: {Name: "delete", Help: "删除", Hand: func(m *ice.Message, arg ...string) { + m.Cmdy(mdb.DELETE, CONNECT, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH)) + }}, mdb.PRUNES: {Name: "prunes", Help: "清理", Hand: func(m *ice.Message, arg ...string) { m.Cmdy(mdb.PRUNES, CONNECT, "", mdb.HASH, kit.MDB_STATUS, tcp.CLOSE) }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Option(mdb.FIELDS, kit.Select("time,hash,status,username,host,port", mdb.DETAIL, len(arg) > 0)) - m.Cmdy(mdb.SELECT, CONNECT, "", mdb.HASH, kit.MDB_HASH, arg) - m.PushAction("会话") + if m.Cmdy(mdb.SELECT, CONNECT, "", mdb.HASH, kit.MDB_HASH, arg); len(arg) == 0 { + m.Table(func(index int, value map[string]string, head []string) { + m.PushButton(kit.Select("", "删除", value[kit.MDB_STATUS] == tcp.CLOSE)) + }) + } }}, }, }, nil) diff --git a/base/ssh/scripts.go b/base/ssh/scripts.go index b72a9d70..43473dba 100644 --- a/base/ssh/scripts.go +++ b/base/ssh/scripts.go @@ -108,7 +108,7 @@ func (f *Frame) prompt(m *ice.Message, list ...string) *Frame { for _, v := range list { switch v { case "count": - fmt.Fprintf(f.stdout, "%d", f.count+1) + fmt.Fprintf(f.stdout, "%d", f.count) case "time": fmt.Fprintf(f.stdout, time.Now().Format("15:04:05")) case "target": @@ -227,15 +227,19 @@ func (f *Frame) parse(m *ice.Message, line string) string { } return "" } -func (f *Frame) scan(m *ice.Message, line string, r io.Reader) *Frame { +func (f *Frame) scan(m *ice.Message, h, line string, r io.Reader) *Frame { m.Option("ssh.return", func() { f.exit = true }) f.ps1 = kit.Simple(m.Confv("prompt", "meta.PS1")) f.ps2 = kit.Simple(m.Confv("prompt", "meta.PS2")) ps := f.ps1 + f.count = 1 m.I, m.O = r, f.stdout bio := bufio.NewScanner(r) for f.prompt(m, ps...); bio.Scan() && !f.exit; f.prompt(m, ps...) { + m.Cmdx(mdb.INSERT, SOURCE, kit.Keys(kit.MDB_HASH, h), mdb.LIST, kit.MDB_TEXT, bio.Text()) + f.count++ + if len(bio.Text()) == 0 { continue // 空行 } @@ -253,10 +257,6 @@ func (f *Frame) scan(m *ice.Message, line string, r io.Reader) *Frame { line = "" continue // 注释 } - // if line = f.history(m, line); line == "" { - // // 历史命令 - // continue - // } if ps = f.ps1; f.stdout == os.Stdout { // 清空格式 f.printf(m, "\033[0m") @@ -304,7 +304,12 @@ func (f *Frame) Start(m *ice.Message, arg ...string) bool { return true } - f.scan(m, "", r) + if f.source == STDIO { + f.scan(m, STDIO, "", r) + } else { + h := m.Cmdx(mdb.INSERT, SOURCE, "", mdb.HASH, kit.MDB_NAME, f.source) + f.scan(m, h, "", r) + } return true } func (f *Frame) Close(m *ice.Message, arg ...string) bool { @@ -324,15 +329,36 @@ const ( func init() { Index.Merge(&ice.Context{ Configs: map[string]*ice.Config{ - SOURCE: {Name: SOURCE, Help: "加载脚本", Value: kit.Data()}, + SOURCE: {Name: SOURCE, Help: "加载脚本", Value: kit.Dict( + kit.MDB_HASH, kit.Dict(STDIO, kit.Data(kit.MDB_TIME, "2020-10-01 15:04:05", kit.MDB_NAME, STDIO)), + )}, PROMPT: {Name: PROMPT, Help: "命令提示", Value: kit.Data( "PS1", []interface{}{"\033[33;44m", "count", "[", "time", "]", "\033[5m", "target", "\033[0m", "\033[44m", ">", "\033[0m ", "\033[?25h", "\033[32m"}, "PS2", []interface{}{"count", " ", "target", "> "}, )}, }, Commands: map[string]*ice.Command{ - SOURCE: {Name: "source file", Help: "脚本解析", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - m.Starts(strings.Replace(arg[0], ".", "_", -1), arg[0], arg[0:]...) + SOURCE: {Name: "source hash id auto", Help: "脚本解析", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { + if len(arg) > 0 && strings.HasSuffix(arg[0], ".shy") { + m.Starts(strings.Replace(arg[0], ".", "_", -1), arg[0], arg[0:]...) + return + } + + if len(arg) == 0 { + m.Option(mdb.FIELDS, "time,hash,name,count") + m.Cmdy(mdb.SELECT, SOURCE, "", mdb.HASH) + m.Sort(kit.MDB_NAME) + return + } + + if arg[0] == STDIO { + m.Option("_control", "page") + } else { + m.Option("cache.limit", "-1") + } + m.Option(mdb.FIELDS, kit.Select("time,id,text", mdb.DETAIL, len(arg) > 1)) + m.Cmdy(mdb.SELECT, SOURCE, kit.Keys(kit.MDB_HASH, arg[0]), mdb.LIST, kit.MDB_ID, arg[1:]) + m.Sort(kit.MDB_ID) }}, TARGET: {Name: "target name", Help: "当前模块", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Search(arg[0], func(p *ice.Context, s *ice.Context, key string) { diff --git a/base/ssh/service.go b/base/ssh/service.go index 17d321fa..f166acb8 100644 --- a/base/ssh/service.go +++ b/base/ssh/service.go @@ -164,8 +164,8 @@ func init() { if m.Richs(SERVICE, "", m.Option(tcp.PORT), func(key string, value map[string]interface{}) { kit.Value(value, "meta.status", tcp.OPEN) }) == nil { - m.Cmd(mdb.INSERT, SERVICE, "", mdb.HASH, kit.MDB_STATUS, tcp.OPEN, - tcp.PORT, m.Option(tcp.PORT), "private", m.Option("private"), "auth", m.Option("auth"), arg) + m.Cmd(mdb.INSERT, SERVICE, "", mdb.HASH, tcp.PORT, m.Option(tcp.PORT), + "private", m.Option("private"), "auth", m.Option("auth"), kit.MDB_STATUS, tcp.OPEN, arg) m.Cmd(SERVICE, mdb.IMPORT, kit.MDB_FILE, m.Option("auth")) } diff --git a/base/ssh/session.go b/base/ssh/session.go index 2395c7d7..c0f5f7e8 100644 --- a/base/ssh/session.go +++ b/base/ssh/session.go @@ -73,13 +73,20 @@ func init() { m.Cmdy(SESSION, m.Option(kit.MDB_HASH)) }}, + mdb.DELETE: {Name: "delete", Help: "删除", Hand: func(m *ice.Message, arg ...string) { + m.Cmdy(mdb.DELETE, SESSION, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH)) + }}, mdb.PRUNES: {Name: "prunes", Help: "清理", Hand: func(m *ice.Message, arg ...string) { m.Cmdy(mdb.PRUNES, SESSION, "", mdb.HASH, kit.MDB_STATUS, tcp.CLOSE) }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { if len(arg) == 0 { m.Option(mdb.FIELDS, "time,hash,status,count,connect") - m.Cmdy(mdb.SELECT, SESSION, "", mdb.HASH, kit.MDB_HASH, arg) + if m.Cmdy(mdb.SELECT, SESSION, "", mdb.HASH, kit.MDB_HASH, arg); len(arg) == 0 { + m.Table(func(index int, value map[string]string, head []string) { + m.PushButton(kit.Select("", "删除", value[kit.MDB_STATUS] == tcp.CLOSE)) + }) + } return } diff --git a/base/ssh/ssh.go b/base/ssh/ssh.go index 490b7682..1e13b5ca 100644 --- a/base/ssh/ssh.go +++ b/base/ssh/ssh.go @@ -28,6 +28,11 @@ var Index = &ice.Context{Name: SSH, Help: "终端模块", Commands: map[string]* m.Richs(CONNECT, "", kit.MDB_FOREACH, func(key string, value map[string]interface{}) { kit.Value(value, "status", tcp.CLOSE) }) + + m.Richs(SOURCE, "", STDIO, func(key string, value map[string]interface{}) { + m.Conf(SOURCE, kit.Keys(kit.MDB_HASH), "") + m.Conf(SOURCE, kit.Keys(kit.MDB_HASH, key), value) + }) m.Save() }}, }} diff --git a/base/ssh/ssh.shy b/base/ssh/ssh.shy index 1570eb6c..caa190c4 100644 --- a/base/ssh/ssh.shy +++ b/base/ssh/ssh.shy @@ -5,6 +5,8 @@ refer ` 源码 https://github.com/openssh/openssh-portable ` +field "脚本" ssh.source + field "服务" ssh.service field "通道" ssh.channel field "连接" ssh.connect diff --git a/base/tcp/client.go b/base/tcp/client.go index 32af6e3c..985e094c 100644 --- a/base/tcp/client.go +++ b/base/tcp/client.go @@ -55,14 +55,11 @@ func init() { CLIENT: {Name: CLIENT, Help: "客户端", Value: kit.Data()}, }, Commands: map[string]*ice.Command{ - CLIENT: {Name: "client hash auto 连接 清理", Help: "客户端", Action: map[string]*ice.Action{ + CLIENT: {Name: "client hash auto 清理", Help: "客户端", Action: map[string]*ice.Action{ DIAL: {Name: "dial port=9010 host=", Help: "连接", Hand: func(m *ice.Message, arg ...string) { c, e := net.Dial(TCP, m.Option(HOST)+":"+m.Option(PORT)) - h := m.Option(kit.MDB_HASH) - if h == "" { - h = m.Cmdx(mdb.INSERT, CLIENT, "", mdb.HASH, HOST, m.Option(HOST), PORT, m.Option(PORT), - kit.MDB_NAME, m.Option(kit.MDB_NAME), kit.MDB_STATUS, kit.Select(ERROR, OPEN, e == nil), kit.MDB_ERROR, kit.Format(e)) - } + h := m.Cmdx(mdb.INSERT, CLIENT, "", mdb.HASH, PORT, m.Option(PORT), HOST, m.Option(HOST), + kit.MDB_NAME, m.Option(kit.MDB_NAME), kit.MDB_STATUS, kit.Select(ERROR, OPEN, e == nil), kit.MDB_ERROR, kit.Format(e)) c = &Conn{m: m, h: h, s: &Stat{}, Conn: c} if e == nil { @@ -96,8 +93,11 @@ func init() { }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Option(mdb.FIELDS, kit.Select("time,hash,status,name,host,port,error,nread,nwrite", mdb.DETAIL, len(arg) > 0)) - m.Cmdy(mdb.SELECT, CLIENT, "", mdb.HASH, kit.MDB_HASH, arg) - m.PushAction("删除") + if m.Cmdy(mdb.SELECT, CLIENT, "", mdb.HASH, kit.MDB_HASH, arg); len(arg) == 0 { + m.Table(func(index int, value map[string]string, head []string) { + m.PushButton(kit.Select("", "删除", value[kit.MDB_STATUS] == CLOSE)) + }) + } }}, }, }, nil) diff --git a/base/tcp/port.go b/base/tcp/port.go index df94e90c..eaeaa31f 100644 --- a/base/tcp/port.go +++ b/base/tcp/port.go @@ -13,11 +13,16 @@ import ( ) func _port_list(m *ice.Message, port string, dir string) { - if m.Cmdy(nfs.DIR, path.Join("var/daemon", port, dir)); port == "" { - m.Table(func(index int, value map[string]string, head []string) { - m.Push(PORT, path.Base(value["path"])) - }) + if m.Option(nfs.DIR_ROOT, path.Join("var/daemon", port)); port != "" { + m.Cmdy(nfs.DIR, dir) + return } + + m.Cmd(nfs.DIR, "./").Table(func(index int, value map[string]string, head []string) { + m.Push(kit.MDB_TIME, value[kit.MDB_TIME]) + m.Push(kit.MDB_SIZE, value[kit.MDB_SIZE]) + m.Push(PORT, path.Base(value[kit.MDB_PATH])) + }) } func _port_right(m *ice.Message, begin string) string { current := kit.Int(kit.Select(m.Conf(PORT, "meta.current"), begin)) diff --git a/base/tcp/server.go b/base/tcp/server.go index b3cc3db2..d1ac8705 100644 --- a/base/tcp/server.go +++ b/base/tcp/server.go @@ -49,13 +49,11 @@ func init() { SERVER: {Name: SERVER, Help: "服务器", Value: kit.Data()}, }, Commands: map[string]*ice.Command{ - SERVER: {Name: "server hash auto 监听 清理", Help: "服务器", Action: map[string]*ice.Action{ - LISTEN: {Name: "LISTEN host= port=9010", Help: "监听", Hand: func(m *ice.Message, arg ...string) { + SERVER: {Name: "server hash auto 清理", Help: "服务器", Action: map[string]*ice.Action{ + LISTEN: {Name: "LISTEN port=9010 host=", Help: "监听", Hand: func(m *ice.Message, arg ...string) { l, e := net.Listen(TCP, m.Option(HOST)+":"+m.Option(PORT)) - h := m.Option(kit.MDB_HASH) - if h == "" { - h = m.Cmdx(mdb.INSERT, SERVER, "", mdb.HASH, kit.MDB_NAME, m.Option(kit.MDB_NAME), HOST, m.Option(HOST), PORT, m.Option(PORT), kit.MDB_STATUS, kit.Select(ERROR, OPEN, e == nil), kit.MDB_ERROR, kit.Format(e)) - } + h := m.Cmdx(mdb.INSERT, SERVER, "", mdb.HASH, PORT, m.Option(PORT), HOST, m.Option(HOST), + kit.MDB_NAME, m.Option(kit.MDB_NAME), kit.MDB_STATUS, kit.Select(ERROR, OPEN, e == nil), kit.MDB_ERROR, kit.Format(e)) l = &Listener{m: m, h: h, s: &Stat{}, Listener: l} if e == nil { @@ -108,8 +106,11 @@ func init() { }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Option(mdb.FIELDS, kit.Select("time,hash,status,name,host,port,error,nconn", mdb.DETAIL, len(arg) > 0)) - m.Cmdy(mdb.SELECT, SERVER, "", mdb.HASH, kit.MDB_HASH, arg) - m.PushAction("删除") + if m.Cmdy(mdb.SELECT, SERVER, "", mdb.HASH, kit.MDB_HASH, arg); len(arg) == 0 { + m.Table(func(index int, value map[string]string, head []string) { + m.PushButton(kit.Select("", "删除", value[kit.MDB_STATUS] == CLOSE)) + }) + } }}, }, }, nil) diff --git a/base/web/group.go b/base/web/_group.go similarity index 100% rename from base/web/group.go rename to base/web/_group.go diff --git a/base/web/label.go b/base/web/_label.go similarity index 100% rename from base/web/label.go rename to base/web/_label.go diff --git a/conf.go b/conf.go index a398c5a2..0307df4e 100644 --- a/conf.go +++ b/conf.go @@ -103,10 +103,3 @@ const ( // RENDER RENDER_DOWNLOAD = "_download" RENDER_TEMPLATE = "_template" ) - -const ( // TODO - EXPORT_LABEL = "lab" - EXPORT_GROUP = "grp" - FIELD_RELOAD = "field.reload" - FIELD_DETAIL = "field.detail" -) diff --git a/init.go b/init.go index eac8ce0e..5d821be1 100644 --- a/init.go +++ b/init.go @@ -3,16 +3,13 @@ package ice import ( kit "github.com/shylinux/toolkits" - "fmt" "os" "strings" "sync" "time" ) -type Frame struct { - code int -} +type Frame struct{ code int } func (f *Frame) Spawn(m *Message, c *Context, arg ...string) Server { return &Frame{} @@ -59,7 +56,6 @@ func (f *Frame) Close(m *Message, arg ...string) bool { return true } -var wait = make(chan bool, 1) var Index = &Context{Name: "ice", Help: "冰山模块", Caches: map[string]*Cache{ CTX_FOLLOW: {Value: ""}, @@ -70,19 +66,14 @@ var Index = &Context{Name: "ice", Help: "冰山模块", "help": {Value: map[string]interface{}{ "index": []interface{}{ "^_^ 欢迎使用冰山框架 ^_^", - "^_^ Welcome to Icebergs world ^_^", + "^_^ Welcome to Icebergs World ^_^", "", - "Meet: shylinuxc@gmail.com", + "More: shylinuxc@gmail.com", "More: https://shylinux.com", "More: https://github.com/shylinux/icebergs", "", }, }}, - "task": {Value: kit.Dict( - kit.MDB_STORE, "var/data", - kit.MDB_LIMIT, "110", - kit.MDB_LEAST, "100", - )}, }, Commands: map[string]*Command{ CTX_INIT: {Hand: func(m *Message, c *Context, cmd string, arg ...string) { @@ -95,34 +86,19 @@ var Index = &Context{Name: "ice", Help: "冰山模块", }}, "init": {Name: "init", Help: "启动", Hand: func(m *Message, c *Context, cmd string, arg ...string) { m.root.Cmd(CTX_INIT) - m.target.root.wg = &sync.WaitGroup{} - for _, k := range kit.Split(kit.Select("gdb,log,ssh")) { + for _, k := range kit.Split(kit.Select("gdb,log,ssh,mdb")) { m.Start(k) } - m.Cmd("ssh.source", "etc/init.shy", "init.shy", "启动配置") m.Cmdy(arg) }}, "help": {Name: "help", Help: "帮助", Hand: func(m *Message, c *Context, cmd string, arg ...string) { m.Echo(strings.Join(kit.Simple(m.Confv("help", "index")), "\n")) }}, - "name": {Name: "name", Help: "命名", Hand: func(m *Message, c *Context, cmd string, arg ...string) { - for k, v := range names { - m.Push("key", k) - switch v := v.(type) { - case *Context: - m.Push("value", v.Name) - default: - m.Push("value", "") - } - } - m.Sort("key") - }}, "exit": {Name: "exit", Help: "结束", Hand: func(m *Message, c *Context, cmd string, arg ...string) { m.root.target.server.(*Frame).code = kit.Int(kit.Select("0", arg, 0)) m.Cmd("ssh.source", "etc/exit.shy", "exit.shy", "退出配置") - m.root.Cmd(CTX_EXIT) }}, CTX_EXIT: {Hand: func(m *Message, c *Context, cmd string, arg ...string) { @@ -138,26 +114,21 @@ var Index = &Context{Name: "ice", Help: "冰山模块", }}, }, } - var Pulse = &Message{ time: time.Now(), code: 0, meta: map[string][]string{}, data: map[string]interface{}{}, source: Index, target: Index, Hand: true, - messages: []*Message{}, message: nil, root: nil, } - -var Log func(*Message, string, string) -var Loop func() +var wait = make(chan bool, 1) func Run(arg ...string) string { if len(arg) == 0 { arg = os.Args[1:] } if len(arg) == 0 { - // arg = append(arg, "web.space", "connect", "self") - arg = append(arg, "web.serve", "dev") + arg = append(arg, "help") } frame := &Frame{} @@ -168,20 +139,21 @@ func Run(arg ...string) string { Pulse.Option("cache.limit", "30") Pulse.Option("begin_time", Pulse.Time()) - if frame.Begin(Pulse.Spawns(), arg...).Start(Pulse, arg...) { - if Loop != nil { - Loop() + switch kit.Select("", arg, 0) { + case "space", "serve": + if _log_disable = false; frame.Begin(Pulse.Spawns(), arg...).Start(Pulse, arg...) { + frame.Close(Pulse.Spawns(), arg...) + } + + <-wait + os.Exit(frame.code) + default: + if m := Pulse.Cmdy(arg); m.Result() == "" { + m.Table() } - frame.Close(Pulse.Spawns(), arg...) } - if Pulse.Result() == "" { - Pulse.Table(nil) - } - fmt.Printf(Pulse.Result()) - <-wait - os.Exit(frame.code) - return "" + return Pulse.Result() } var names = map[string]interface{}{} @@ -195,6 +167,7 @@ func Name(name string, value interface{}) string { } panic(NewError(4, ErrNameExists, name, "last:", last)) } + names[name] = value return name } diff --git a/logs.go b/logs.go index e8eaf82b..cb7f19e2 100644 --- a/logs.go +++ b/logs.go @@ -14,12 +14,32 @@ var ErrNotAuth = "not auth: " var ErrNotJoin = "not join: " var ErrNotFound = "not found: " var ErrStart = "err start: " +var ErrNameExists = "name already exists:" + +var _log_disable = true + +type Error struct { + Arg []interface{} + FileLine string +} + +func (e *Error) Error() string { + return e.FileLine + " " + strings.Join(kit.Simple(e.Arg), " ") +} +func NewError(n int, arg ...interface{}) *Error { + return &Error{Arg: arg, FileLine: kit.FileLine(n, 3)} +} + +var Log func(*Message, string, string) func (m *Message) log(level string, str string, arg ...interface{}) *Message { if str = strings.TrimSpace(kit.Format(str, arg...)); Log != nil { // 日志模块 Log(m, level, str) } + if _log_disable { + return m + } // 日志颜色 prefix, suffix := "", "" diff --git a/misc.go b/misc.go index e25fea4d..75e974d0 100644 --- a/misc.go +++ b/misc.go @@ -102,22 +102,11 @@ func (m *Message) PushAction(list ...interface{}) { m.PushRender(kit.MDB_ACTION, kit.MDB_BUTTON, strings.Join(kit.Simple(list...), ",")) }) } +func (m *Message) PushButton(key string, arg ...string) { + m.PushRender("action", "button", key, arg...) +} func (m *Message) PushDetail(value interface{}, arg ...interface{}) *Message { return m.Push("detail", value, arg...) } var BinPack = map[string][]byte{} - -var ErrNameExists = "name already exists:" - -type Error struct { - Arg []interface{} - FileLine string -} - -func (e *Error) Error() string { - return e.FileLine + " " + strings.Join(kit.Simple(e.Arg), " ") -} -func NewError(n int, arg ...interface{}) *Error { - return &Error{Arg: arg, FileLine: kit.FileLine(n, 3)} -} diff --git a/misc/chrome/cache.go b/misc/chrome/cache.go index 16657a24..7ec25224 100644 --- a/misc/chrome/cache.go +++ b/misc/chrome/cache.go @@ -25,7 +25,7 @@ func init() { }, Commands: map[string]*ice.Command{ CACHE: {Name: "cache hash auto 添加 清理", Help: "爬虫缓存", Action: map[string]*ice.Action{ - mdb.CREATE: {Name: "create link type name text", Help: "添加", Hand: func(m *ice.Message, arg ...string) { + mdb.CREATE: {Name: "create", Help: "添加", Hand: func(m *ice.Message, arg ...string) { m.Option("_process", "_progress") if m.Cmdy(mdb.SELECT, m.Prefix(CACHE), "", mdb.HASH, kit.MDB_LINK, m.Option(kit.MDB_LINK)); len(m.Appendv(kit.MDB_TOTAL)) > 0 { return // 已经下载 diff --git a/type.go b/type.go index abb99fe2..77c2bbb5 100644 --- a/type.go +++ b/type.go @@ -143,7 +143,7 @@ func (c *Context) Register(s *Context, x Server, name ...string) *Context { } s.Merge(s, x) - Pulse.Log("register", "%s <- %s", c.Name, s.Name) + // Pulse.Log("register", "%s <- %s", c.Name, s.Name) if c.contexts == nil { c.contexts = map[string]*Context{} }