forked from x/icebergs
opt aaa.user
This commit is contained in:
parent
cf184b384e
commit
1da4185842
@ -10,9 +10,9 @@ import (
|
||||
|
||||
func _sess_create(m *ice.Message, username string, arg ...string) (h string) {
|
||||
if msg := m.Cmd(USER, username); msg.Length() > 0 {
|
||||
h = mdb.HashCreate(m, msg.AppendSimple(USERNAME, USERNICK, USERROLE), arg)
|
||||
h = mdb.HashCreate(m, msg.AppendSimple(USERNICK, USERNAME, USERROLE), arg)
|
||||
} else {
|
||||
h = mdb.HashCreate(m, m.OptionSimple(USERNAME, USERNICK, USERROLE), arg)
|
||||
h = mdb.HashCreate(m, m.OptionSimple(USERNICK, USERNAME, USERROLE), arg)
|
||||
}
|
||||
gdb.Event(m, SESS_CREATE, SESS, h, USERNAME, username)
|
||||
return
|
||||
@ -48,7 +48,7 @@ func init() {
|
||||
CHECK: {Name: "check sessid*", Hand: func(m *ice.Message, arg ...string) {
|
||||
_sess_check(m, m.Option(SESSID))
|
||||
}},
|
||||
}, mdb.HashAction(mdb.SHORT, mdb.UNIQ, mdb.FIELD, "time,hash,username,usernick,userrole,ua,ip", mdb.EXPIRE, "720h", mdb.ImportantDataAction()))},
|
||||
}, mdb.HashAction(mdb.SHORT, mdb.UNIQ, mdb.FIELD, "time,hash,username,usernick,userrole,ua,ip", mdb.EXPIRE, mdb.MONTH, mdb.ImportantDataAction()))},
|
||||
})
|
||||
}
|
||||
|
||||
@ -56,7 +56,7 @@ func SessCreate(m *ice.Message, username string) string {
|
||||
return m.Option(ice.MSG_SESSID, m.Cmdx(SESS, mdb.CREATE, username))
|
||||
}
|
||||
func SessCheck(m *ice.Message, sessid string) bool {
|
||||
m.Options(ice.MSG_USERNAME, "", ice.MSG_USERNICK, "", ice.MSG_USERROLE, VOID, "aaa.checker", logs.FileLine(-1))
|
||||
m.Options(ice.MSG_USERNICK, "", ice.MSG_USERNAME, "", ice.MSG_USERROLE, VOID, "aaa.checker", logs.FileLine(-1))
|
||||
return sessid != "" && m.Cmdy(SESS, CHECK, sessid, logs.FileLineMeta(-1)).Option(ice.MSG_USERNAME) != ""
|
||||
}
|
||||
func SessAuth(m *ice.Message, value ice.Any, arg ...string) *ice.Message {
|
||||
|
@ -7,25 +7,13 @@ import (
|
||||
kit "shylinux.com/x/toolkits"
|
||||
)
|
||||
|
||||
func _user_create(m *ice.Message, name, word string, arg ...string) {
|
||||
mdb.HashCreate(m, USERNAME, name, PASSWORD, kit.GetValid(
|
||||
func() string { return word },
|
||||
func() string { return m.CmdAppend(USER, name, PASSWORD) },
|
||||
func() string { return kit.Hashs() },
|
||||
), arg)
|
||||
func _user_create(m *ice.Message, name string, arg ...string) {
|
||||
mdb.HashCreate(m, USERNAME, name, arg)
|
||||
gdb.Event(m, USER_CREATE, USER, name)
|
||||
}
|
||||
func _user_login(m *ice.Message, name, word string) {
|
||||
if val := mdb.HashSelectDetails(m.Spawn(), name, func(value ice.Map) bool {
|
||||
return !m.Warn(word != "" && word != kit.Format(value[PASSWORD]), ice.ErrNotValid)
|
||||
}); len(val) > 0 {
|
||||
SessAuth(m, val)
|
||||
}
|
||||
}
|
||||
|
||||
const (
|
||||
BACKGROUND = "background"
|
||||
|
||||
AVATAR = "avatar"
|
||||
GENDER = "gender"
|
||||
MOBILE = "mobile"
|
||||
@ -36,11 +24,11 @@ const (
|
||||
LANGUAGE = "language"
|
||||
)
|
||||
const (
|
||||
USERNICK = "usernick"
|
||||
USERNAME = "username"
|
||||
PASSWORD = "password"
|
||||
USERNICK = "usernick"
|
||||
USERZONE = "userzone"
|
||||
USERROLE = "userrole"
|
||||
USERZONE = "userzone"
|
||||
|
||||
USER_CREATE = "user.create"
|
||||
)
|
||||
@ -51,19 +39,16 @@ func init() {
|
||||
USER: {Name: "user username auto create", Help: "用户", Actions: ice.MergeActions(ice.Actions{
|
||||
mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) {
|
||||
switch mdb.HashInputs(m, arg); arg[0] {
|
||||
case USERNAME:
|
||||
m.Push(arg[0], m.Option(ice.MSG_USERNAME))
|
||||
case USERNICK:
|
||||
m.Push(arg[0], m.Option(ice.MSG_USERNICK))
|
||||
case USERNAME:
|
||||
m.Push(arg[0], m.Option(ice.MSG_USERNAME))
|
||||
}
|
||||
}},
|
||||
mdb.CREATE: {Name: "create username* password usernick userzone userrole=void,tech", Hand: func(m *ice.Message, arg ...string) {
|
||||
_user_create(m, m.Option(USERNAME), m.Option(PASSWORD), m.OptionSimple(USERNICK, USERZONE, USERROLE)...)
|
||||
mdb.CREATE: {Name: "create usernick username* userrole=void,tech userzone", Hand: func(m *ice.Message, arg ...string) {
|
||||
_user_create(m, m.Option(USERNAME), m.OptionSimple(USERNICK, USERROLE, USERZONE)...)
|
||||
}},
|
||||
LOGIN: {Name: "login username* password", Hand: func(m *ice.Message, arg ...string) {
|
||||
_user_login(m, m.Option(USERNAME), m.Option(PASSWORD))
|
||||
}},
|
||||
}, mdb.HashAction(mdb.SHORT, USERNAME, mdb.FIELD, "time,username,usernick,userzone,userrole"), mdb.ImportantDataAction())},
|
||||
}, mdb.HashAction(mdb.SHORT, USERNAME, mdb.FIELD, "time,usernick,username,userrole,userzone"), mdb.ImportantDataAction())},
|
||||
})
|
||||
}
|
||||
|
||||
@ -76,9 +61,6 @@ func UserInfo(m *ice.Message, name ice.Any, key, meta string) (value string) {
|
||||
func UserNick(m *ice.Message, username ice.Any) (nick string) {
|
||||
return UserInfo(m, username, USERNICK, ice.MSG_USERNICK)
|
||||
}
|
||||
func UserZone(m *ice.Message, username ice.Any) (zone string) {
|
||||
return UserInfo(m, username, USERZONE, ice.MSG_USERZONE)
|
||||
}
|
||||
func UserRole(m *ice.Message, username ice.Any) (role string) {
|
||||
if username == "" {
|
||||
return VOID
|
||||
@ -88,18 +70,17 @@ func UserRole(m *ice.Message, username ice.Any) (role string) {
|
||||
}
|
||||
return UserInfo(m, username, USERROLE, ice.MSG_USERROLE)
|
||||
}
|
||||
func UserLogin(m *ice.Message, username, password string) bool {
|
||||
m.Options(ice.MSG_USERNAME, "", ice.MSG_USERNICK, "", ice.MSG_USERROLE, VOID)
|
||||
return m.Cmdy(USER, LOGIN, username, password).Option(ice.MSG_USERNAME) != ""
|
||||
func UserZone(m *ice.Message, username ice.Any) (zone string) {
|
||||
return UserInfo(m, username, USERZONE, ice.MSG_USERZONE)
|
||||
}
|
||||
func UserRoot(m *ice.Message, arg ...string) *ice.Message {
|
||||
username := kit.Select(ice.Info.Username, arg, 0)
|
||||
usernick := kit.Select(UserNick(m, username), arg, 1)
|
||||
userrole := kit.Select(ROOT, arg, 2)
|
||||
userzone := kit.Select("", arg, 3)
|
||||
userrole := kit.Select(ROOT, arg, 2)
|
||||
username := kit.Select(ice.Info.Username, arg, 1)
|
||||
usernick := kit.Select(UserNick(m, username), arg, 0)
|
||||
if len(arg) > 0 {
|
||||
m.Cmd(USER, mdb.CREATE, username, "", usernick, userzone, userrole)
|
||||
m.Cmd(USER, mdb.CREATE, usernick, username, userrole, userzone)
|
||||
ice.Info.Username = username
|
||||
}
|
||||
return SessAuth(m, kit.Dict(USERNAME, username, USERNICK, usernick, USERROLE, userrole))
|
||||
return SessAuth(m, kit.Dict(USERNICK, usernick, USERNAME, username, USERROLE, userrole))
|
||||
}
|
||||
|
@ -17,10 +17,10 @@ import (
|
||||
|
||||
func _runtime_init(m *ice.Message) {
|
||||
count := kit.Int(m.Conf(RUNTIME, kit.Keys(BOOT, mdb.COUNT)))
|
||||
kit.Fetch(kit.UnMarshal(kit.Format(ice.Info.Make)), func(key string, value ice.Any) {
|
||||
kit.For(kit.UnMarshal(kit.Format(ice.Info.Make)), func(key string, value ice.Any) {
|
||||
m.Conf(RUNTIME, kit.Keys(MAKE, strings.ToLower(key)), value)
|
||||
})
|
||||
aaa.UserRoot(ice.Pulse, ice.Info.Make.Username, "", aaa.TECH, ice.DEV)
|
||||
aaa.UserRoot(ice.Pulse, "", ice.Info.Make.Username, aaa.TECH, ice.DEV)
|
||||
m.Conf(RUNTIME, kit.Keys(HOST, GOARCH), runtime.GOARCH)
|
||||
m.Conf(RUNTIME, kit.Keys(HOST, GOOS), runtime.GOOS)
|
||||
m.Conf(RUNTIME, kit.Keys(HOST, OSID), release(m))
|
||||
@ -47,7 +47,7 @@ func _runtime_init(m *ice.Message) {
|
||||
ice.Info.Hostname = m.Conf(RUNTIME, kit.Keys(BOOT, HOSTNAME))
|
||||
ice.Info.Pathname = m.Conf(RUNTIME, kit.Keys(BOOT, PATHNAME))
|
||||
ice.Info.Username = m.Conf(RUNTIME, kit.Keys(BOOT, USERNAME))
|
||||
aaa.UserRoot(ice.Pulse, ice.Info.Username, "", "", ice.OPS)
|
||||
aaa.UserRoot(ice.Pulse, "", ice.Info.Username, aaa.ROOT, ice.OPS)
|
||||
msg := m.Cmd(nfs.DIR, _system_find(m, os.Args[0]), "time,path,size,hash")
|
||||
m.Conf(RUNTIME, kit.Keys(BOOT, ice.BIN), msg.Append(nfs.PATH))
|
||||
m.Conf(RUNTIME, kit.Keys(BOOT, nfs.SIZE), msg.Append(nfs.SIZE))
|
||||
|
@ -13,7 +13,7 @@ import (
|
||||
|
||||
func _tail_create(m *ice.Message, arg ...string) {
|
||||
h := mdb.HashCreate(m, arg)
|
||||
kit.Fetch(kit.Split(m.Option(FILE)), func(file string) {
|
||||
kit.For(kit.Split(m.Option(FILE)), func(file string) {
|
||||
m.Options(cli.CMD_OUTPUT, Pipe(m, func(text string) { mdb.ZoneInsert(m, h, FILE, file, nfs.SIZE, len(text), mdb.TEXT, text) }), mdb.CACHE_CLEAR_ON_EXIT, ice.TRUE)
|
||||
m.Cmd(cli.DAEMON, TAIL, "-n", "0", "-f", file)
|
||||
})
|
||||
|
@ -158,7 +158,7 @@ func OptionLoad(m *ice.Message, file string) *ice.Message {
|
||||
defer f.Close()
|
||||
var data ice.Any
|
||||
m.Assert(json.NewDecoder(f).Decode(&data))
|
||||
kit.Fetch(data, func(key string, value ice.Any) { m.Option(key, kit.Simple(value)) })
|
||||
kit.For(data, func(key string, value ice.Any) { m.Option(key, kit.Simple(value)) })
|
||||
}
|
||||
return m
|
||||
}
|
||||
|
@ -27,7 +27,7 @@ func _serve_address(m *ice.Message) string {
|
||||
}
|
||||
func _serve_start(m *ice.Message) {
|
||||
defer kit.For(kit.Split(m.Option(ice.DEV)), func(v string) { m.Cmd(SPACE, tcp.DIAL, ice.DEV, v, mdb.NAME, ice.Info.NodeName) })
|
||||
kit.If(m.Option(aaa.USERNAME), func() { aaa.UserRoot(m, m.Option(aaa.USERNAME), m.Option(aaa.USERNICK)) })
|
||||
kit.If(m.Option(aaa.USERNAME), func() { aaa.UserRoot(m, m.Option(aaa.USERNICK), m.Option(aaa.USERNAME)) })
|
||||
kit.If(m.Option(tcp.PORT) == tcp.RANDOM, func() { m.Option(tcp.PORT, m.Cmdx(tcp.PORT, aaa.RIGHT)) })
|
||||
kit.If(runtime.GOOS == cli.WINDOWS, func() { m.Cmd(SPIDE, ice.OPS, _serve_address(m)+"/exit").Sleep("300ms") })
|
||||
cli.NodeInfo(m, kit.Select(ice.Info.Hostname, m.Option(tcp.NODENAME)), SERVER)
|
||||
|
@ -132,7 +132,7 @@ func init() {
|
||||
RenderMain(m)
|
||||
}
|
||||
}},
|
||||
}, mdb.HashAction(mdb.FIELD, "time,hash,username,usernick,userrole,river,storm,type,name,text", mdb.EXPIRE, "72h"), ServeAction(), aaa.WhiteAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
}, mdb.HashAction(mdb.FIELD, "time,hash,username,usernick,userrole,river,storm,type,name,text", mdb.EXPIRE, mdb.DAYS), ServeAction(), aaa.WhiteAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if ctx.PodCmd(m, SHARE, arg) {
|
||||
return
|
||||
}
|
||||
|
@ -111,7 +111,7 @@ func _spide_body(m *ice.Message, method string, arg ...string) (io.Reader, ice.M
|
||||
fallthrough
|
||||
default:
|
||||
data := ice.Map{}
|
||||
kit.Fetch(arg, func(k, v string) { kit.Value(data, k, v) })
|
||||
kit.For(arg, func(k, v string) { kit.Value(data, k, v) })
|
||||
head[ContentType], body = ContentJSON, bytes.NewBufferString(kit.Format(data))
|
||||
}
|
||||
arg = arg[:0]
|
||||
@ -155,23 +155,23 @@ func _spide_part(m *ice.Message, arg ...string) (string, io.Reader) {
|
||||
}
|
||||
func _spide_head(m *ice.Message, req *http.Request, head ice.Maps, value ice.Map) {
|
||||
m.Logs(req.Method, req.URL.String())
|
||||
kit.Fetch(value[SPIDE_HEADER], func(k string, v string) {
|
||||
kit.For(value[SPIDE_HEADER], func(k string, v string) {
|
||||
req.Header.Set(k, v)
|
||||
m.Logs("Header", k, v)
|
||||
})
|
||||
kit.Fetch(value[SPIDE_COOKIE], func(k string, v string) {
|
||||
kit.For(value[SPIDE_COOKIE], func(k string, v string) {
|
||||
req.AddCookie(&http.Cookie{Name: k, Value: v})
|
||||
m.Logs("Cookie", k, v)
|
||||
})
|
||||
kit.Fetch(kit.Simple(m.Optionv(SPIDE_COOKIE)), func(k, v string) {
|
||||
kit.For(kit.Simple(m.Optionv(SPIDE_COOKIE)), func(k, v string) {
|
||||
req.AddCookie(&http.Cookie{Name: k, Value: v})
|
||||
m.Logs("Cookie", k, v)
|
||||
})
|
||||
kit.Fetch(kit.Simple(m.Optionv(SPIDE_HEADER)), func(k, v string) {
|
||||
kit.For(kit.Simple(m.Optionv(SPIDE_HEADER)), func(k, v string) {
|
||||
req.Header.Set(k, v)
|
||||
m.Logs("Header", k, v)
|
||||
})
|
||||
kit.Fetch(head, func(k, v string) {
|
||||
kit.For(head, func(k, v string) {
|
||||
req.Header.Set(k, v)
|
||||
m.Logs("Header", k, v)
|
||||
})
|
||||
@ -194,7 +194,7 @@ func _spide_save(m *ice.Message, format, file, uri string, res *http.Response) {
|
||||
case SPIDE_MSG:
|
||||
var data map[string][]string
|
||||
m.Assert(json.NewDecoder(res.Body).Decode(&data))
|
||||
kit.Fetch(data[ice.MSG_APPEND], func(k string) { kit.Fetch(data[k], func(v string) { m.Push(k, v) }) })
|
||||
kit.For(data[ice.MSG_APPEND], func(k string) { kit.For(data[k], func(v string) { m.Push(k, v) }) })
|
||||
m.Resultv(data[ice.MSG_RESULT])
|
||||
case SPIDE_SAVE:
|
||||
_cache_download(m, res, file, m.OptionCB(SPIDE))
|
||||
|
@ -26,7 +26,7 @@ func _header_share(m *ice.Message, arg ...string) {
|
||||
if m.Warn(m.Option(ice.MSG_USERNAME) == "", ice.ErrNotLogin, "没有登录") {
|
||||
return
|
||||
}
|
||||
if kit.Fetch(arg, func(k, v string) { m.Option(k, v) }); m.Option(mdb.LINK) == "" {
|
||||
if kit.For(arg, func(k, v string) { m.Option(k, v) }); m.Option(mdb.LINK) == "" {
|
||||
m.Cmdy(web.SHARE, mdb.CREATE, mdb.TYPE, web.LOGIN, arg)
|
||||
} else {
|
||||
m.Option(mdb.LINK, tcp.PublishLocalhost(m, m.Option(mdb.LINK)))
|
||||
@ -66,11 +66,6 @@ func init() {
|
||||
Index.MergeCommands(ice.Commands{
|
||||
web.P(HEADER): {Name: "/header", Help: "标题栏", Actions: ice.MergeActions(ice.Actions{
|
||||
mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) {}},
|
||||
aaa.LOGIN: {Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) > 1 && aaa.UserLogin(m, arg[0], arg[1]) {
|
||||
web.RenderCookie(m, aaa.SessCreate(m, arg[0]))
|
||||
}
|
||||
}},
|
||||
aaa.LOGOUT: {Hand: aaa.SessLogout},
|
||||
aaa.PASSWORD: {Hand: _header_users},
|
||||
aaa.USERNICK: {Hand: _header_users},
|
||||
|
@ -79,9 +79,9 @@ var Index = &ice.Context{Name: OAUTH, Help: "认证授权", Commands: ice.Comman
|
||||
}},
|
||||
})},
|
||||
|
||||
APPLY: {Name: "apply hash auto create prunes", Help: "申请", Actions: mdb.HashAction(mdb.EXPIRE, "72h", mdb.FIELD, "time,hash,username,scope,redirect_uri")},
|
||||
REPLY: {Name: "reply hash auto create prunes", Help: "授权", Actions: mdb.HashAction(mdb.EXPIRE, "720h", mdb.SHORT, mdb.UNIQ, mdb.FIELD, "time,hash,username,scope,offer")},
|
||||
OFFER: {Name: "offer hash auto create prunes", Help: "访问", Actions: mdb.HashAction(mdb.EXPIRE, "720h", mdb.SHORT, mdb.UNIQ, mdb.FIELD, "time,hash,username,scope,redirect_uri")},
|
||||
APPLY: {Name: "apply hash auto create prunes", Help: "申请", Actions: mdb.HashAction(mdb.EXPIRE, mdb.DAYS, mdb.FIELD, "time,hash,username,scope,redirect_uri")},
|
||||
REPLY: {Name: "reply hash auto create prunes", Help: "授权", Actions: mdb.HashAction(mdb.EXPIRE, mdb.MONTH, mdb.SHORT, mdb.UNIQ, mdb.FIELD, "time,hash,username,scope,offer")},
|
||||
OFFER: {Name: "offer hash auto create prunes", Help: "访问", Actions: mdb.HashAction(mdb.EXPIRE, mdb.MONTH, mdb.SHORT, mdb.UNIQ, mdb.FIELD, "time,hash,username,scope,redirect_uri")},
|
||||
|
||||
web.P(APPLY): {Name: "/apply scope redirect_uri", Help: "申请", Actions: ctx.CmdAction(), Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Option(REDIRECT_URI) == "" {
|
||||
@ -112,8 +112,8 @@ var Index = &ice.Context{Name: OAUTH, Help: "认证授权", Commands: ice.Comman
|
||||
}},
|
||||
|
||||
AUTHORIZE: {Name: "authorize hash auto create prunes", Help: "认证", Actions: mdb.HashAction(mdb.SHORT, mdb.UNIQ, mdb.FIELD, "time,hash,redirect_uri")},
|
||||
TOKEN: {Name: "token hash auto create prunes", Help: "授权", Actions: mdb.HashAction(mdb.EXPIRE, "72h", mdb.FIELD, "time,hash,used,state,scope,redirect_uri")},
|
||||
ACCESS: {Name: "access hash auto create prunes", Help: "访问", Actions: mdb.HashAction(mdb.EXPIRE, "720h", mdb.SHORT, mdb.UNIQ, mdb.FIELD, "time,hash,username,scope,redirect_uri")},
|
||||
TOKEN: {Name: "token hash auto create prunes", Help: "授权", Actions: mdb.HashAction(mdb.EXPIRE, mdb.DAYS, mdb.FIELD, "time,hash,used,state,scope,redirect_uri")},
|
||||
ACCESS: {Name: "access hash auto create prunes", Help: "访问", Actions: mdb.HashAction(mdb.EXPIRE, mdb.MONTH, mdb.SHORT, mdb.UNIQ, mdb.FIELD, "time,hash,username,scope,redirect_uri")},
|
||||
|
||||
web.P(AUTHORIZE): {Name: "/authorize state scope client_id redirect_uri", Help: "认证", Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Option(CLIENT_ID) == "" || m.Option(REDIRECT_URI) == "" {
|
||||
|
@ -15,11 +15,11 @@ func init() {
|
||||
TEMPLATE: {Name: "template river storm index auto 删除配置 查看配置", Help: "模板", Actions: ice.MergeActions(ice.Actions{
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
|
||||
if gdb.Watch(m, RIVER_CREATE); m.Cmd("").Length() == 0 {
|
||||
kit.Fetch(_river_template, func(river string, value ice.Any) {
|
||||
kit.For(_river_template, func(river string, value ice.Any) {
|
||||
m.Cmd("", mdb.CREATE, RIVER, river)
|
||||
kit.Fetch(value, func(storm string, value ice.Any) {
|
||||
kit.For(value, func(storm string, value ice.Any) {
|
||||
m.Cmd("", mdb.INSERT, RIVER, river, STORM, storm)
|
||||
kit.Fetch(value, func(index int, value ice.Any) {
|
||||
kit.For(value, func(index int, value ice.Any) {
|
||||
m.Cmd("", "add", RIVER, river, STORM, storm, ctx.INDEX, value)
|
||||
})
|
||||
})
|
||||
|
@ -62,7 +62,7 @@ func init() {
|
||||
m.Push("name", kit.Select(kit.Format(kit.Value(tags, "name")), value["name"]))
|
||||
m.Push("value", kit.Select(kit.Format(kit.Value(tags, "value")), value["value"]))
|
||||
})
|
||||
kit.Fetch(form, func(k string, v ice.Map) {
|
||||
kit.For(form, func(k string, v ice.Map) {
|
||||
m.Push("tags", k)
|
||||
m.Push("", v, kit.Split("type,name,value"))
|
||||
})
|
||||
|
@ -41,7 +41,7 @@ func (b *Block) Init(m *ice.Message, arg ...string) wiki.Chart {
|
||||
}
|
||||
func (b *Block) Data(m *ice.Message, meta ice.Any) wiki.Chart {
|
||||
b.Text = kit.Select(b.Text, kit.Value(meta, mdb.TEXT))
|
||||
kit.Fetch(meta, func(key string, value string) {
|
||||
kit.For(meta, func(key string, value string) {
|
||||
switch key {
|
||||
case wiki.FG:
|
||||
b.TextData += kit.Format("%s='%s' %s='%s'", wiki.FILL, value, wiki.STROKE, value)
|
||||
@ -49,10 +49,10 @@ func (b *Block) Data(m *ice.Message, meta ice.Any) wiki.Chart {
|
||||
b.RectData += kit.Format("%s='%s' ", wiki.FILL, value)
|
||||
}
|
||||
})
|
||||
kit.Fetch(kit.Value(meta, "data"), func(key string, value string) {
|
||||
kit.For(kit.Value(meta, "data"), func(key string, value string) {
|
||||
b.TextData += kit.Format("%s='%s' ", key, value)
|
||||
})
|
||||
kit.Fetch(kit.Value(meta, "rect"), func(key string, value string) {
|
||||
kit.For(kit.Value(meta, "rect"), func(key string, value string) {
|
||||
b.RectData += kit.Format("%s='%s' ", key, value)
|
||||
})
|
||||
return b
|
||||
|
@ -46,7 +46,7 @@ func (c *Chain) Draw(m *ice.Message, x, y int) wiki.Chart {
|
||||
func (c *Chain) height(m *ice.Message, root ice.Map) (height int) {
|
||||
meta := kit.GetMeta(root)
|
||||
if list, ok := root[mdb.LIST].([]ice.Any); ok && len(list) > 0 {
|
||||
kit.Fetch(root[mdb.LIST], func(index int, value ice.Map) { height += c.height(m, value) })
|
||||
kit.For(root[mdb.LIST], func(index int, value ice.Map) { height += c.height(m, value) })
|
||||
} else {
|
||||
height = 1
|
||||
}
|
||||
@ -76,7 +76,7 @@ func (c *Chain) draw(m *ice.Message, root ice.Map, x, y int, p *Block, gs *wiki.
|
||||
gs.EchoTexts(TEXT, item.x+item.GetWidths()/2, item.y+item.GetHeights()/2, item.Text, item.TextData)
|
||||
|
||||
h, x := 0, x+item.GetWidths()
|
||||
if kit.Fetch(root[mdb.LIST], func(value ice.Map) { h += c.draw(m, value, x, y+h, item, gs) }); h == 0 {
|
||||
if kit.For(root[mdb.LIST], func(value ice.Map) { h += c.draw(m, value, x, y+h, item, gs) }); h == 0 {
|
||||
return item.GetHeights()
|
||||
}
|
||||
return h
|
||||
|
@ -53,7 +53,7 @@ func _field_show(m *ice.Message, name, text string, arg ...string) {
|
||||
switch arg[i] {
|
||||
case ARGS:
|
||||
count := 0
|
||||
kit.Fetch(meta[INPUTS], func(index int, value ice.Map) {
|
||||
kit.For(meta[INPUTS], func(index int, value ice.Map) {
|
||||
if value[mdb.TYPE] != "button" {
|
||||
count++
|
||||
}
|
||||
|
@ -112,7 +112,7 @@ func (m *Message) OptionTemplate() string {
|
||||
}
|
||||
add("data-", key)
|
||||
}
|
||||
kit.Fetch(m.Optionv(mdb.EXTRA), func(key string, value string) {
|
||||
kit.For(m.Optionv(mdb.EXTRA), func(key string, value string) {
|
||||
switch key {
|
||||
case PADDING:
|
||||
return
|
||||
|
2
init.go
2
init.go
@ -100,7 +100,7 @@ func Run(arg ...string) string {
|
||||
}
|
||||
}
|
||||
Pulse.meta[MSG_DETAIL] = arg
|
||||
kit.Fetch(kit.Sort(os.Environ()), func(env string) {
|
||||
kit.For(kit.Sort(os.Environ()), func(env string) {
|
||||
if ls := strings.SplitN(env, EQ, 2); strings.ToLower(ls[0]) == ls[0] && ls[0] != "_" {
|
||||
Pulse.Option(ls[0], ls[1])
|
||||
}
|
||||
|
2
misc.go
2
misc.go
@ -151,7 +151,7 @@ func (m *Message) Design(action Any, help string, input ...Any) {
|
||||
list = append(list, input)
|
||||
continue
|
||||
}
|
||||
kit.Fetch(kit.KeyValue(nil, "", input), func(k string, v Any) {
|
||||
kit.For(kit.KeyValue(nil, "", input), func(k string, v Any) {
|
||||
list = append(list, kit.Dict(NAME, k, TYPE, TEXT, VALUE, v))
|
||||
})
|
||||
default:
|
||||
|
@ -15,10 +15,10 @@ import (
|
||||
|
||||
func _run_action(m *ice.Message, cmd *ice.Command, script string, arg ...string) {
|
||||
list, args := []string{}, []string{}
|
||||
kit.Fetch(cmd.Meta["_trans"], func(k string, v string) {
|
||||
kit.For(cmd.Meta["_trans"], func(k string, v string) {
|
||||
list = append(list, k)
|
||||
args = append(args, kit.Format(` %s)`, k))
|
||||
kit.Fetch(cmd.Meta[k], func(index int, value ice.Map) {
|
||||
kit.For(cmd.Meta[k], func(index int, value ice.Map) {
|
||||
args = append(args, kit.Format(` read -p "input %s: " v; url="$url/%s/$v" `, value[mdb.NAME], value[mdb.NAME]))
|
||||
})
|
||||
args = append(args, kit.Format(` ;;`))
|
||||
|
@ -40,8 +40,8 @@ func init() {
|
||||
Index.MergeCommands(ice.Commands{
|
||||
CONFIGS: {Name: "configs name value auto create init", Help: "配置键", Actions: ice.MergeActions(ice.Actions{
|
||||
ice.INIT: {Help: "初始化", Hand: func(m *ice.Message, arg ...string) {
|
||||
kit.Fetch(mdb.Configv(m, ice.INIT), func(p string, v ice.Any) {
|
||||
kit.Fetch(v, func(k string, v string) { _configs_set(m, kit.Keys(p, k), v) })
|
||||
kit.For(mdb.Configv(m, ice.INIT), func(p string, v ice.Any) {
|
||||
kit.For(v, func(k string, v string) { _configs_set(m, kit.Keys(p, k), v) })
|
||||
})
|
||||
}},
|
||||
mdb.CREATE: {Name: "create name* value*", Hand: func(m *ice.Message, arg ...string) {
|
||||
|
@ -54,7 +54,7 @@ func init() {
|
||||
lines[kit.Ext(file)]++
|
||||
})
|
||||
})
|
||||
kit.Fetch(lines, func(k string, v int) { m.Push(mdb.TYPE, k).Push("files", files[k]).Push("lines", lines[k]) })
|
||||
kit.For(lines, func(k string, v int) { m.Push(mdb.TYPE, k).Push("files", files[k]).Push("lines", lines[k]) })
|
||||
m.StatusTimeCount().SortIntR("lines")
|
||||
}},
|
||||
"order": {Help: "排行", Hand: func(m *ice.Message, arg ...string) {
|
||||
@ -62,7 +62,7 @@ func init() {
|
||||
_count_count(m, arg, func(file string) {
|
||||
m.Cmdy(nfs.CAT, file, func(text string) { files[strings.TrimPrefix(file, arg[0])]++ })
|
||||
})
|
||||
kit.Fetch(files, func(k string, v int) { m.Push("files", k).Push("lines", v) })
|
||||
kit.For(files, func(k string, v int) { m.Push("files", k).Push("lines", v) })
|
||||
m.StatusTimeCount().SortIntR("lines")
|
||||
}},
|
||||
"tags": {Help: "索引", Hand: func(m *ice.Message, arg ...string) {
|
||||
@ -76,7 +76,7 @@ func init() {
|
||||
count[kit.Split(ls[1])[0]]++
|
||||
}
|
||||
})
|
||||
kit.Fetch(count, func(k string, v int) { m.Push(mdb.TYPE, k).Push(mdb.COUNT, v) })
|
||||
kit.For(count, func(k string, v int) { m.Push(mdb.TYPE, k).Push(mdb.COUNT, v) })
|
||||
m.StatusTimeCount().SortIntR(mdb.COUNT)
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, arg ...string) { m.Cmdy(nfs.DIR, arg) }},
|
||||
|
@ -149,7 +149,7 @@ func _repos_dir(m *ice.Message, dir, branch, commit, file string, cb func(*gogit
|
||||
return false
|
||||
})
|
||||
}
|
||||
kit.Fetch(prev, func(pp, id string) {
|
||||
kit.For(prev, func(pp, id string) {
|
||||
if path.Dir(file) != path.Dir(pp) {
|
||||
return
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ func _server_login(m *ice.Message) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if ls = strings.SplitN(string(data), ice.DF, 2); m.Cmd("web.code.git.token", ls[0]).Append(TOKEN) != ls[1] && !aaa.UserLogin(m.Spawn(), ls[0], ls[1]) {
|
||||
if ls = strings.SplitN(string(data), ice.DF, 2); m.Cmd("web.code.git.token", ls[0]).Append(TOKEN) != ls[1] {
|
||||
return fmt.Errorf("username or password error")
|
||||
}
|
||||
if aaa.UserRole(m, ls[0]) == aaa.VOID {
|
||||
|
@ -9,9 +9,9 @@ import (
|
||||
|
||||
func _company_list(m *ice.Message, appid string) {
|
||||
_, data := _lark_get(m, appid, "/open-apis/contact/v1/scope/get/")
|
||||
kit.Fetch(kit.Value(data, "data.authed_departments"), func(index int, ship_id string) {
|
||||
kit.For(kit.Value(data, "data.authed_departments"), func(index int, ship_id string) {
|
||||
_, data := _lark_get(m, appid, "/open-apis/contact/v1/department/detail/batch_get", "department_ids", ship_id)
|
||||
kit.Fetch(kit.Value(data, "data.department_infos"), func(index int, value ice.Map) {
|
||||
kit.For(kit.Value(data, "data.department_infos"), func(index int, value ice.Map) {
|
||||
m.Push(SHIP_ID, ship_id)
|
||||
m.Push(mdb.NAME, value[mdb.NAME])
|
||||
m.Push(mdb.COUNT, value["member_count"])
|
||||
@ -22,7 +22,7 @@ func _company_list(m *ice.Message, appid string) {
|
||||
}
|
||||
func _company_members(m *ice.Message, appid string, ship_id string) {
|
||||
_, data := _lark_get(m, appid, "/open-apis/contact/v1/department/user/list", "department_id", ship_id, "page_size", "100", "fetch_child", ice.TRUE)
|
||||
kit.Fetch(kit.Value(data, "data.user_list"), func(index int, value ice.Map) {
|
||||
kit.For(kit.Value(data, "data.user_list"), func(index int, value ice.Map) {
|
||||
msg := m.Cmd(EMPLOYEE, appid, value[OPEN_ID])
|
||||
m.PushImages(aaa.AVATAR, msg.Append("avatar_72"))
|
||||
m.Push(aaa.GENDER, kit.Select("女", "男", msg.Append(aaa.GENDER) == "1"))
|
||||
|
@ -16,8 +16,8 @@ func init() {
|
||||
Index.MergeCommands(ice.Commands{
|
||||
TALK: {Name: "talk text", Help: "聊天", Hand: func(m *ice.Message, arg ...string) {
|
||||
cmds := kit.Split(strings.Join(arg, " "))
|
||||
if aaa.UserLogin(m, m.Option(OPEN_ID), ""); !aaa.Right(m, cmds) {
|
||||
if aaa.UserLogin(m, m.Option(OPEN_CHAT_ID), ""); !aaa.Right(m, cmds) {
|
||||
if aaa.SessAuth(m, kit.Dict(aaa.USERNAME, m.Option(OPEN_ID))); !aaa.Right(m, cmds) {
|
||||
if aaa.SessAuth(m, kit.Dict(aaa.USERNAME, m.Option(OPEN_CHAT_ID))); !aaa.Right(m, cmds) {
|
||||
m.Cmd(DUTY, m.Option(OPEN_CHAT_ID), m.Option("text_without_at_bot"))
|
||||
m.Cmd(HOME)
|
||||
return
|
||||
|
@ -158,7 +158,7 @@ func init() {
|
||||
}},
|
||||
SCRIPT: {Name: "script name", Help: "脚本", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmd(SCRIPT, m.Option(mdb.NAME), func(value ice.Maps) {
|
||||
kit.Fetch(kit.SplitLine(value[mdb.TEXT]), func(line string) {
|
||||
kit.For(kit.SplitLine(value[mdb.TEXT]), func(line string) {
|
||||
kit.Switch(value[mdb.TYPE],
|
||||
"shell", func() { m.Cmd(CMD, _tmux_key(m.Option(SESSION), m.Option(WINDOW), m.Option(PANE)), line) },
|
||||
"vim", func() { m.Cmd(CMD, _tmux_key(m.Option(SESSION), m.Option(WINDOW), m.Option(PANE)), line) },
|
||||
|
Loading…
x
Reference in New Issue
Block a user