diff --git a/base/aaa/sess.go b/base/aaa/sess.go index 4a9ddf14..7b73eb9b 100644 --- a/base/aaa/sess.go +++ b/base/aaa/sess.go @@ -44,7 +44,7 @@ func SessCreate(m *ice.Message, username string) string { return m.Option(ice.MSG_SESSID, _sess_create(m, username)) } func SessIsCli(m *ice.Message) bool { - if m.Option(ice.MSG_USERUA) == "" || strings.Contains(m.Option(ice.MSG_USERUA), "curl") { + if m.Option(ice.MSG_USERUA) == "" || !strings.HasPrefix(m.Option(ice.MSG_USERUA), "Mozilla/5.0") { return true } return false diff --git a/base/aaa/user.go b/base/aaa/user.go index 72e16dba..6756cba4 100644 --- a/base/aaa/user.go +++ b/base/aaa/user.go @@ -67,11 +67,6 @@ func UserRole(m *ice.Message, username interface{}) (role string) { }) return } -func UserRoot(m *ice.Message) { - ice.Info.PassWord = kit.Hashs("uniq") - ice.Info.PassWord = ice.Info.UserName - _user_create(m, ice.Info.UserName, ice.Info.PassWord) -} func UserLogin(m *ice.Message, username, password string) bool { if _user_login(m, username, password) { m.Log_AUTH( @@ -88,8 +83,6 @@ const ( INVITE = "invite" ) const ( - BACKGROUND = "background" - AVATAR = "avatar" GENDER = "gender" MOBILE = "mobile" @@ -99,6 +92,8 @@ const ( COUNTRY = "country" PROVINCE = "province" LANGUAGE = "language" + + BACKGROUND = "background" ) const ( USERZONE = "userzone" @@ -124,9 +119,6 @@ func init() { _user_create(m, m.Option(USERNAME), m.Option(PASSWORD)) _role_user(m, m.Option(USERROLE), m.Option(USERNAME)) }}, - ROLE: {Name: "role userrole=void,tech", Help: "角色", Hand: func(m *ice.Message, arg ...string) { - _role_user(m, m.Option(USERROLE), m.Option(USERNAME)) - }}, mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) { m.Cmdy(mdb.MODIFY, USER, "", mdb.HASH, USERNAME, m.Option(USERNAME), arg) }}, @@ -138,9 +130,6 @@ func init() { _user_search(m, arg[0], arg[1], kit.Select("", arg, 2)) } }}, - "login": {Name: "login", Help: "登录", Hand: func(m *ice.Message, arg ...string) { - m.EchoQRCode("hi") - }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Fields(len(arg) == 0, "time,username,userzone,usernick") m.Cmdy(mdb.SELECT, USER, "", mdb.HASH, USERNAME, arg) diff --git a/base/ctx/command.go b/base/ctx/command.go index 0cc429ba..387035c0 100644 --- a/base/ctx/command.go +++ b/base/ctx/command.go @@ -1,8 +1,6 @@ package ctx import ( - "strings" - ice "github.com/shylinux/icebergs" "github.com/shylinux/icebergs/base/mdb" kit "github.com/shylinux/toolkits" @@ -27,7 +25,7 @@ func _command_list(m *ice.Message, name string) { m.Spawn(m.Source()).Search(name, func(p *ice.Context, s *ice.Context, key string, cmd *ice.Command) { m.Push(kit.MDB_KEY, s.Cap(ice.CTX_FOLLOW)) m.Push(kit.MDB_NAME, kit.Format(cmd.Name)) - m.Push(kit.MDB_HELP, kit.Simple(cmd.Help)[0]) + m.Push(kit.MDB_HELP, kit.Format(cmd.Help)) m.Push(kit.MDB_META, kit.Formats(cmd.Meta)) m.Push(kit.MDB_LIST, kit.Formats(cmd.List)) }) @@ -58,7 +56,7 @@ func init() { } }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - _command_list(m, strings.Join(arg, ".")) + _command_list(m, kit.Keys(arg)) }}, }}) } diff --git a/base/ctx/config.go b/base/ctx/config.go index edf49f98..3965092a 100644 --- a/base/ctx/config.go +++ b/base/ctx/config.go @@ -94,7 +94,7 @@ const CONFIG = "config" func init() { Index.Merge(&ice.Context{ Configs: map[string]*ice.Config{ - CONFIG: {Name: CONFIG, Help: "配置", Value: kit.Data(kit.MDB_PATH, "var/conf")}, + CONFIG: {Name: CONFIG, Help: "配置", Value: kit.Data(kit.MDB_PATH, ice.VAR_CONF)}, }, Commands: map[string]*ice.Command{ CONFIG: {Name: "config key auto", Help: "配置", Action: map[string]*ice.Action{ diff --git a/base/ctx/context.go b/base/ctx/context.go index 9515f5b6..8049eae8 100644 --- a/base/ctx/context.go +++ b/base/ctx/context.go @@ -7,9 +7,9 @@ import ( func _context_list(m *ice.Message, all bool) { m.Travel(func(p *ice.Context, s *ice.Context) { - m.Push(kit.MDB_NAME, kit.Select("ice", s.Cap(ice.CTX_FOLLOW))) - m.Push(ice.CTX_STATUS, s.Cap(ice.CTX_STATUS)) - m.Push(ice.CTX_STREAM, s.Cap(ice.CTX_STREAM)) + m.Push(kit.MDB_NAME, s.Cap(ice.CTX_FOLLOW)) + m.Push(kit.MDB_STATUS, s.Cap(ice.CTX_STATUS)) + m.Push(kit.MDB_STREAM, s.Cap(ice.CTX_STREAM)) m.Push(kit.MDB_HELP, s.Help) }) } diff --git a/base/ctx/ctx.go b/base/ctx/ctx.go index d7ddf789..a8e10caa 100644 --- a/base/ctx/ctx.go +++ b/base/ctx/ctx.go @@ -11,7 +11,8 @@ var Index = &ice.Context{Name: CTX, Help: "标准模块", Commands: map[string]* ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Cmd(mdb.SEARCH, mdb.CREATE, COMMAND, m.Prefix(COMMAND)) }}, - ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {}}, + ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { + }}, }} func init() { ice.Index.Register(Index, nil, CONTEXT, COMMAND, CONFIG) } diff --git a/base/ssh/scripts.go b/base/ssh/scripts.go index 1c094fec..a0c8501d 100644 --- a/base/ssh/scripts.go +++ b/base/ssh/scripts.go @@ -293,7 +293,6 @@ func (f *Frame) Start(m *ice.Message, arg ...string) bool { m.Option(ice.MSG_USERNAME, ice.Info.UserName) m.Option(ice.MSG_USERROLE, aaa.ROOT) m.Option(ice.MSG_USERZONE, "boot") - aaa.UserRoot(m) default: f.target = m.Source() diff --git a/base/web/serve.go b/base/web/serve.go index b923ec03..daf039b8 100644 --- a/base/web/serve.go +++ b/base/web/serve.go @@ -173,9 +173,13 @@ func _serve_login(msg *ice.Message, cmds []string, w http.ResponseWriter, r *htt } else if msg.Conf(SERVE, kit.Keym(aaa.WHITE, ls[1])) == "true" { if msg.Option(ice.MSG_USERNAME) == "" && msg.Option(SHARE) != "" { share := msg.Cmd(SHARE, msg.Option(SHARE)) - msg.Option(ice.MSG_USERNAME, share.Append(aaa.USERNAME)) - msg.Option(ice.MSG_USERROLE, share.Append(aaa.USERROLE)) - msg.Debug("login ") + switch share.Append(kit.MDB_TYPE) { + case LOGIN: + // Render(msg, aaa.SessCreate(msg, share.Append(aaa.USERNAME))) + case FIELD: + msg.Option(ice.MSG_USERNAME, share.Append(aaa.USERNAME)) + msg.Option(ice.MSG_USERROLE, share.Append(aaa.USERROLE)) + } } return cmds, true // 白名单 } @@ -208,13 +212,13 @@ func init() { ice.REQUIRE, true, ice.PUBLISH, true, ), "logheaders", false, - kit.SSH_STATIC, kit.Dict("/", "usr/volcanos/"), - ice.VOLCANOS, kit.Dict(kit.MDB_PATH, "usr/volcanos", kit.SSH_INDEX, "page/index.html", - kit.SSH_REPOS, "https://github.com/shylinux/volcanos", kit.SSH_BRANCH, "master", - ), ice.PUBLISH, "usr/publish/", + kit.SSH_STATIC, kit.Dict("/", ice.USR_VOLCANOS), + ice.VOLCANOS, kit.Dict(kit.MDB_PATH, ice.USR_VOLCANOS, kit.SSH_INDEX, "page/index.html", + kit.SSH_REPOS, "https://github.com/shylinux/volcanos", kit.SSH_BRANCH, kit.SSH_MASTER, + ), ice.PUBLISH, ice.USR_PUBLISH, - ice.INTSHELL, kit.Dict(kit.MDB_PATH, "usr/intshell", kit.SSH_INDEX, "index.sh", - kit.SSH_REPOS, "https://github.com/shylinux/intshell", kit.SSH_BRANCH, "master", + ice.INTSHELL, kit.Dict(kit.MDB_PATH, ice.USR_INTSHELL, kit.SSH_INDEX, "index.sh", + kit.SSH_REPOS, "https://github.com/shylinux/intshell", kit.SSH_BRANCH, kit.SSH_MASTER, ), ice.REQUIRE, ".ish/pluged", )}, }, diff --git a/conf.go b/conf.go index c5ab33a3..f2814a37 100644 --- a/conf.go +++ b/conf.go @@ -21,6 +21,14 @@ const ( // REPOS REQUIRE = "require" ) const ( // DIR + USR_VOLCANOS = "usr/volcanos" + USR_INTSHELL = "usr/intshell" + USR_PUBLISH = "usr/publish" + + PROTO_JS = "proto.js" + FRAME_JS = "frame.js" + + VAR_CONF = "var/conf" ETC_MISS = "etc/miss.sh" ETC_INIT = "etc/init.shy" ETC_EXIT = "etc/exit.shy" diff --git a/core/chat/header.go b/core/chat/header.go index c4ff9b82..438cf582 100644 --- a/core/chat/header.go +++ b/core/chat/header.go @@ -101,7 +101,7 @@ func init() { }}, code.WEBPACK: {Name: "webpack", Help: "网页打包", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(code.WEBPACK, mdb.CREATE) + m.Cmdy(code.WEBPACK, mdb.CREATE, kit.MDB_NAME, m.Option(kit.MDB_NAME)) }}, aaa.BACKGROUND: {Name: "background", Help: "背景图片", Hand: func(m *ice.Message, arg ...string) { _header_users(m, aaa.BACKGROUND, arg...) diff --git a/core/code/webpack.go b/core/code/webpack.go index 2f69db70..4112d53b 100644 --- a/core/code/webpack.go +++ b/core/code/webpack.go @@ -1,93 +1,89 @@ package code import ( + "fmt" + "path" + ice "github.com/shylinux/icebergs" "github.com/shylinux/icebergs/base/mdb" "github.com/shylinux/icebergs/base/nfs" + "github.com/shylinux/icebergs/base/web" kit "github.com/shylinux/toolkits" - - "fmt" - "path" - "strings" ) const WEBPACK = "webpack" func init() { - Index.Merge(&ice.Context{ - Configs: map[string]*ice.Config{ - WEBPACK: {Name: WEBPACK, Help: "webpack", Value: kit.Data(kit.MDB_PATH, "usr/volcanos")}, - }, - Commands: map[string]*ice.Command{ - WEBPACK: {Name: "webpack path auto create", Help: "打包", Action: map[string]*ice.Action{ - mdb.CREATE: {Name: "create name=demo", Help: "创建", Hand: func(m *ice.Message, arg ...string) { - css, _, e := kit.Create(path.Join(m.Conf(WEBPACK, kit.META_PATH), "page/cache.css")) - m.Assert(e) - defer css.Close() + Index.Merge(&ice.Context{Commands: map[string]*ice.Command{ + WEBPACK: {Name: "webpack path auto create", Help: "打包", Action: map[string]*ice.Action{ + mdb.CREATE: {Name: "create name=demo", Help: "创建", Hand: func(m *ice.Message, arg ...string) { + dir := m.Conf(web.SERVE, kit.Keym(ice.VOLCANOS, kit.SSH_PATH)) + css, _, e := kit.Create(path.Join(dir, "page/cache.css")) + m.Assert(e) + defer css.Close() - js, _, e := kit.Create(path.Join(m.Conf(WEBPACK, kit.META_PATH), "page/cache.js")) - m.Assert(e) - defer js.Close() + js, _, e := kit.Create(path.Join(dir, "page/cache.js")) + m.Assert(e) + defer js.Close() - m.Option(nfs.DIR_ROOT, m.Conf(WEBPACK, kit.META_PATH)) - m.Option(nfs.DIR_TYPE, nfs.CAT) - m.Option(nfs.DIR_DEEP, true) - - for _, k := range []string{"lib", "panel", "plugin"} { - m.Cmd(nfs.DIR, k).Table(func(index int, value map[string]string, head []string) { - if strings.HasSuffix(value[kit.MDB_PATH], ".css") { - js.WriteString(`Volcanos.meta.cache["` + path.Join("/", value[kit.MDB_PATH]) + "\"] = []\n") - css.WriteString(m.Cmdx(nfs.CAT, value[kit.MDB_PATH])) - } - }) - - m.Cmd(nfs.DIR, k).Table(func(index int, value map[string]string, head []string) { - if strings.HasSuffix(value[kit.MDB_PATH], ".js") { - js.WriteString(`_can_name = "` + path.Join("/", value[kit.MDB_PATH]) + "\";\n") - js.WriteString(m.Cmdx(nfs.CAT, value[kit.MDB_PATH])) - } - }) - } - - for _, k := range []string{"frame.js", "publish/order.js"} { - js.WriteString(`_can_name = "` + path.Join("/", k) + "\"\n") - js.WriteString(m.Cmdx(nfs.CAT, k)) - } - - if f, _, e := kit.Create("usr/publish/webpack/" + m.Option("name") + ".js"); m.Assert(e) { - defer f.Close() - - f.WriteString("\n") - f.WriteString(kit.Format(`Volcanos.meta.args = {river: "%s", storm: "%s"}`, m.Option("river"), m.Option("storm"))) - f.WriteString("\n") - f.WriteString(`Volcanos.meta.pack = ` + kit.Formats(kit.UnMarshal(kit.Select("{}", m.Option("content"))))) - } - - m.Option(nfs.DIR_ROOT, "") - if f, p, e := kit.Create("usr/publish/webpack/" + m.Option("name") + ".html"); m.Assert(e) { - f.WriteString(fmt.Sprintf(_pack, - m.Cmdx(nfs.CAT, "usr/volcanos/page/cache.css"), - m.Cmdx(nfs.CAT, "usr/volcanos/page/index.css"), - - m.Cmdx(nfs.CAT, "usr/volcanos/proto.js"), - m.Cmdx(nfs.CAT, "usr/publish/webpack/"+m.Option("name")+".js"), - m.Cmdx(nfs.CAT, "usr/volcanos/page/cache.js"), - m.Cmdx(nfs.CAT, "usr/volcanos/page/index.js"), - )) - m.Echo(p) - } - }}, - }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - m.Option(nfs.DIR_ROOT, m.Conf(PUBLISH, kit.META_PATH)) - m.Option(nfs.DIR_TYPE, nfs.CAT) + m.Option(nfs.DIR_ROOT, dir) m.Option(nfs.DIR_DEEP, true) + m.Option(nfs.DIR_TYPE, nfs.CAT) - m.Cmdy(nfs.DIR, WEBPACK).Table(func(index int, value map[string]string, head []string) { - m.PushDownload(kit.MDB_LINK, path.Join(m.Option(nfs.DIR_ROOT), value[kit.MDB_PATH])) - }) + for _, k := range []string{"lib", "panel", "plugin"} { + m.Cmd(nfs.DIR, k).Table(func(index int, value map[string]string, head []string) { + switch kit.Ext(value[kit.MDB_PATH]) { + case CSS: + js.WriteString(`Volcanos.meta.cache["` + path.Join("/", value[kit.MDB_PATH]) + "\"] = []\n") + css.WriteString(m.Cmdx(nfs.CAT, value[kit.MDB_PATH])) + + case JS: + js.WriteString(`_can_name = "` + path.Join("/", value[kit.MDB_PATH]) + "\";\n") + js.WriteString(m.Cmdx(nfs.CAT, value[kit.MDB_PATH])) + } + }) + } + + for _, k := range []string{"publish/order.js"} { + js.WriteString(`_can_name = "` + path.Join("/", k) + "\"\n") + js.WriteString(m.Cmdx(nfs.CAT, k)) + } + + if f, _, e := kit.Create("usr/publish/webpack/" + m.Option(kit.MDB_NAME) + ".js"); m.Assert(e) { + defer f.Close() + + f.WriteString("\n") + f.WriteString(kit.Format(`Volcanos.meta.args = {river: "%s", storm: "%s"}`, m.Option("river"), m.Option("storm"))) + f.WriteString("\n") + f.WriteString(`Volcanos.meta.pack = ` + kit.Formats(kit.UnMarshal(kit.Select("{}", m.Option("content"))))) + } + + m.Option(nfs.DIR_ROOT, "") + if f, p, e := kit.Create("usr/publish/webpack/" + m.Option(kit.MDB_NAME) + ".html"); m.Assert(e) { + f.WriteString(fmt.Sprintf(_pack, + m.Cmdx(nfs.CAT, path.Join(ice.USR_VOLCANOS, "page/cache.css")), + m.Cmdx(nfs.CAT, path.Join(ice.USR_VOLCANOS, "page/index.css")), + + m.Cmdx(nfs.CAT, path.Join(ice.USR_VOLCANOS, ice.PROTO_JS)), + m.Cmdx(nfs.CAT, path.Join(ice.USR_VOLCANOS, ice.FRAME_JS)), + + m.Cmdx(nfs.CAT, path.Join(ice.USR_PUBLISH, "webpack/"+m.Option(kit.MDB_NAME)+".js")), + m.Cmdx(nfs.CAT, path.Join(ice.USR_VOLCANOS, "page/cache.js")), + m.Cmdx(nfs.CAT, path.Join(ice.USR_VOLCANOS, "page/index.js")), + )) + m.Echo(p) + } }}, - }, - }) + }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { + m.Option(nfs.DIR_ROOT, m.Conf(PUBLISH, kit.META_PATH)) + m.Option(nfs.DIR_TYPE, nfs.CAT) + m.Option(nfs.DIR_DEEP, true) + + m.Cmdy(nfs.DIR, WEBPACK).Table(func(index int, value map[string]string, head []string) { + m.PushDownload(kit.MDB_LINK, path.Join(m.Option(nfs.DIR_ROOT), value[kit.MDB_PATH])) + }) + }}, + }}) } const _pack = ` diff --git a/misc.go b/misc.go index 22cada68..4736ff0f 100644 --- a/misc.go +++ b/misc.go @@ -257,6 +257,11 @@ type Option struct { func OptionFields(str string) Option { return Option{"fields", str} } func OptionHash(str string) Option { return Option{kit.MDB_HASH, str} } +type Sort struct { + Fields string + Method string +} + func (m *Message) Toast(content string, arg ...interface{}) { if len(arg) > 1 { switch val := arg[1].(type) { diff --git a/misc/wx/wx.shy b/misc/wx/wx.shy index 5fce745c..d4df6825 100644 --- a/misc/wx/wx.shy +++ b/misc/wx/wx.shy @@ -21,6 +21,7 @@ field sess aaa.sess field user aaa.user chapter "项目" -field "icebergs" web.code.git.trend args `icebergs` -field "icebergs" web.code.inner args `usr/icebergs/ misc/wx/wx.go` +field "趋势图" web.code.git.trend args `icebergs` +field "源代码" web.code.inner args `usr/icebergs/ misc/wx/wx.go` +field "架构图" web.code.git.spide args `icebergs` diff --git a/type.go b/type.go index bbb98cd2..613cdb43 100644 --- a/type.go +++ b/type.go @@ -662,6 +662,11 @@ func (m *Message) cmd(arg ...interface{}) *Message { case Option: opts[val.Name] = val.Value + case *Sort: + defer func() { m.Sort(val.Fields, val.Method) }() + case Sort: + defer func() { m.Sort(val.Fields, val.Method) }() + default: if reflect.Func == reflect.TypeOf(val).Kind() { cbs = val