1
0
mirror of https://shylinux.com/x/icebergs synced 2025-04-26 01:24:05 +08:00
This commit is contained in:
shylinux 2021-05-06 11:10:21 +08:00
parent 054c3ebca7
commit 3527c4275d
14 changed files with 115 additions and 109 deletions

View File

@ -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

View File

@ -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)

View File

@ -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))
}},
}})
}

View File

@ -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{

View File

@ -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)
})
}

View File

@ -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) }

View File

@ -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()

View File

@ -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",
)},
},

View File

@ -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"

View File

@ -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...)

View File

@ -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 = `

View File

@ -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) {

View File

@ -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`

View File

@ -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