From 906183a52201d2e37321220e6427c72946cd4b00 Mon Sep 17 00:00:00 2001 From: shy Date: Thu, 11 Jul 2024 20:08:39 +0800 Subject: [PATCH] opt some --- base/web/space.go | 4 ++++ misc/git/service.go | 24 +++++++++++++++++------- misc/wx/access.go | 1 + 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/base/web/space.go b/base/web/space.go index dac5d22b..d0d91e1b 100644 --- a/base/web/space.go +++ b/base/web/space.go @@ -462,6 +462,10 @@ func init() { AdminCmd(m, SPACE).Table(func(value ice.Maps) { kit.If(kit.IsIn(value[mdb.TYPE], WORKER, SERVER), func() { m.Push(arg[0], value[mdb.NAME]) }) }) + case SERVER: + AdminCmd(m, SPACE).Table(func(value ice.Maps) { + kit.If(kit.IsIn(value[mdb.TYPE], SERVER), func() { m.Push(arg[0], value[mdb.NAME]) }) + }) case ORIGIN: m.SetAppend().Push(arg[0], SpideOrigin(m, ice.DEV)) m.Copy(m.Cmd(SPIDE, kit.Dict(ice.MSG_FIELDS, CLIENT_ORIGIN)).CutTo(CLIENT_ORIGIN, arg[0]).Sort(arg[0])) diff --git a/misc/git/service.go b/misc/git/service.go index ae2e5b4a..b3a26539 100644 --- a/misc/git/service.go +++ b/misc/git/service.go @@ -123,20 +123,20 @@ func init() { m.RenderResult(kit.Format(``, kit.Format(`%s git %s`, strings.TrimSuffix(strings.Split(p, "://")[1], nfs.PT+GIT), p))) return } - switch repos, service := _service_param(m, arg...); service { + repos, service := _service_param(m, arg...) + right := func(msg *ice.Message) bool { + return msg.Append(mdb.TYPE) == STATUS || (msg.Append(mdb.TYPE) == web.SERVER && msg.Append(mdb.TEXT) == path.Base(repos)) || (msg.Append(mdb.TYPE) == nfs.REPOS && msg.Append(mdb.TEXT) == path.Base(repos)) + } + switch service { case RECEIVE_PACK: - if !web.BasicCheck(m, "git server", func(msg *ice.Message) bool { - return msg.Append(mdb.TYPE) == STATUS || (msg.Append(mdb.TYPE) == web.SERVER && msg.Append(mdb.TEXT) == path.Base(repos)) - }) { + if !web.BasicCheck(m, "git server", right) { return } else if !nfs.Exists(m, repos) { m.Cmd(Prefix(SERVICE), mdb.CREATE, mdb.NAME, path.Base(repos)) } case UPLOAD_PACK: if mdb.Conf(m, Prefix(SERVICE), kit.Keym(aaa.AUTH)) == aaa.PRIVATE { - if !web.BasicCheck(m, "git server", func(msg *ice.Message) bool { - return msg.Append(mdb.TYPE) == STATUS || msg.Append(mdb.TYPE) == web.SERVER && msg.Append(mdb.TEXT) == path.Base(repos) - }) { + if !web.BasicCheck(m, "git server", right) { return } } @@ -158,6 +158,15 @@ func init() { ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { m.Cmd(nfs.DIR, ice.USR_LOCAL_REPOS, func(value ice.Maps) { _repos_insert(m, value[nfs.PATH]) }) }}, + aaa.AUTH: {Name: "auth scope=private,public", Hand: func(m *ice.Message, arg ...string) { + mdb.Config(m, aaa.AUTH, m.Option("scope")) + }}, + "settoken": {Name: "settoken server*", Hand: func(m *ice.Message, arg ...string) { + token := m.Cmdx(web.TOKEN, mdb.CREATE, mdb.TYPE, nfs.REPOS, mdb.NAME, m.Option(web.SERVER), mdb.TEXT, m.Option(nfs.REPOS)) + m.Cmd(web.SPACE, m.Option(web.SERVER), web.CODE_GIT_STATUS, web.DEV_CREATE_TOKEN, kit.Dict( + ice.MSG_USERNAME, m.Option(web.SERVER), web.TOKEN, token, web.ORIGIN, m.Option(ice.MSG_USERHOST), + )) + }}, CLONE: {Name: "clone name*=demo origin", Hand: func(m *ice.Message, arg ...string) { git.PlainClone(_service_path(m, m.Option(mdb.NAME)), true, &git.CloneOptions{URL: m.Option(ORIGIN), Auth: _repos_auth(m, m.Option(ORIGIN))}) _repos_insert(m, _service_path(m, m.Option(mdb.NAME))) @@ -195,6 +204,7 @@ func init() { }).Sort(REPOS) kit.If(!m.IsCliUA(), func() { m.Cmdy(web.CODE_PUBLISH, ice.CONTEXTS, ice.DEV) }) kit.If(mdb.Config(m, aaa.AUTH) == aaa.PRIVATE, func() { m.StatusTimeCount(aaa.AUTH, aaa.PRIVATE) }) + m.PushAction("settoken", mdb.REMOVE).Action(mdb.CREATE, aaa.AUTH) } else if repos := _repos_open(m, arg[0]); len(arg) == 1 { defer m.PushScript(kit.Format("git clone %s", _service_link(m, arg[0]))) _repos_branch(m, repos) diff --git a/misc/wx/access.go b/misc/wx/access.go index 6f9ad248..f60ab7ac 100644 --- a/misc/wx/access.go +++ b/misc/wx/access.go @@ -68,6 +68,7 @@ func init() { msg := mdb.HashSelect(m.Spawn(), m.Option(ACCESS)) if msg.Append(TOKENS) == "" || m.Time() > msg.Append(EXPIRES) { res := m.Cmd(web.SPIDE, WX, http.MethodGet, TOKEN_CREDENTIAL, msg.AppendSimple(APPID, SECRET)) + m.Debug("what %v", res.FormatMeta()) mdb.HashModify(m, m.OptionSimple(ACCESS), EXPIRES, m.Time(kit.Format("%vs", res.Append(oauth.EXPIRES_IN))), TOKENS, res.Append(oauth.ACCESS_TOKEN)) msg = mdb.HashSelect(m.Spawn(), m.Option(ACCESS)) }