forked from x/icebergs
opt some
This commit is contained in:
parent
afd68e0c0b
commit
95d42317a9
@ -2,8 +2,11 @@ package aaa
|
||||
|
||||
import ice "shylinux.com/x/icebergs"
|
||||
|
||||
const (
|
||||
RSA = "rsa"
|
||||
)
|
||||
const AAA = "aaa"
|
||||
|
||||
var Index = &ice.Context{Name: AAA, Help: "认证模块"}
|
||||
|
||||
func init() { ice.Index.Register(Index, nil, ROLE, SESS, TOTP, USER) }
|
||||
func init() { ice.Index.Register(Index, nil, ROLE, SESS, TOTP, USER, RSA) }
|
||||
|
@ -2,9 +2,11 @@ package code
|
||||
|
||||
import (
|
||||
ice "shylinux.com/x/icebergs"
|
||||
"shylinux.com/x/icebergs/base/aaa"
|
||||
"shylinux.com/x/icebergs/base/ctx"
|
||||
"shylinux.com/x/icebergs/base/mdb"
|
||||
"shylinux.com/x/icebergs/base/web"
|
||||
"shylinux.com/x/icebergs/misc/ssh"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
)
|
||||
|
||||
@ -31,14 +33,33 @@ func init() {
|
||||
data := kit.UnMarshal(m.Cmdx(web.SPIDE_GET, "https://api.github.com/user"))
|
||||
m.Cmdy(mdb.MODIFY, m.PrefixKey(), "", mdb.HASH, m.OptionSimple(mdb.HASH), kit.Simple(data))
|
||||
}},
|
||||
ACCESS_TOKEN: {Name: "access_token", Help: "访问", Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.CREATE: {Name: "create code", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(mdb.INSERT, m.PrefixKey(), "", mdb.HASH, m.OptionSimple(CODE))
|
||||
}},
|
||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||
if arg[0] == mdb.HASH {
|
||||
m.Cmdy(aaa.RSA).Cut("hash,title,public")
|
||||
return
|
||||
}
|
||||
m.Cmdy(mdb.INPUTS, m.PrefixKey(), "", mdb.HASH, arg)
|
||||
}},
|
||||
ACCESS_TOKEN: {Name: "access_token", Help: "令牌", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(web.SPIDE_HEADER, "Accept", web.ContentJSON)
|
||||
data := kit.UnMarshal(m.Cmdx(web.SPIDE_POST, kit.MergeURL2(LOGIN_OAUTH, ACCESS_TOKEN), m.ConfigSimple(CLIENT_ID, CLIENT_SECRET), m.OptionSimple(CODE)))
|
||||
m.Cmdy(mdb.MODIFY, m.PrefixKey(), "", mdb.HASH, m.OptionSimple(mdb.HASH), kit.Simple(data))
|
||||
}},
|
||||
"public": {Name: "public hash", Help: "公钥", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(web.SPIDE_HEADER, "Accept", web.ContentJSON, "Authorization", "token "+m.Option(ACCESS_TOKEN))
|
||||
msg := m.Cmd("aaa.rsa", m.Option(mdb.HASH))
|
||||
res := kit.UnMarshal(m.Cmdx(web.SPIDE_POST, kit.MergeURL2("https://api.github.com", "/user/keys"), web.SPIDE_JSON,
|
||||
"key", msg.Append(ssh.PUBLIC), msg.AppendSimple("title")))
|
||||
m.Push("", res)
|
||||
m.Echo("https://github.com/settings/keys")
|
||||
}},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
if mdb.HashSelect(m, arg...).PushAction("user", ACCESS_TOKEN, mdb.REMOVE); len(arg) == 0 {
|
||||
m.Echo(kit.MergeURL2(LOGIN_OAUTH, "authorize", m.ConfigSimple(REDIRECT_URI, CLIENT_ID)))
|
||||
if mdb.HashSelect(m, arg...).PushAction("user", "public", ACCESS_TOKEN, mdb.REMOVE); len(arg) == 0 {
|
||||
m.Action(mdb.CREATE)
|
||||
m.Echo(kit.MergeURL2(LOGIN_OAUTH, "authorize", m.ConfigSimple(REDIRECT_URI, CLIENT_ID), "scope", "read:user read:public_key write:public_key repo"))
|
||||
}
|
||||
}},
|
||||
"/oauth": {Name: "/oauth", Help: "授权", Action: ice.MergeAction(map[string]*ice.Action{}, ctx.CmdAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
|
@ -5,11 +5,13 @@ import (
|
||||
"crypto/rsa"
|
||||
"crypto/x509"
|
||||
"encoding/pem"
|
||||
"path"
|
||||
|
||||
"golang.org/x/crypto/ssh"
|
||||
ice "shylinux.com/x/icebergs"
|
||||
"shylinux.com/x/icebergs/base/aaa"
|
||||
"shylinux.com/x/icebergs/base/mdb"
|
||||
"shylinux.com/x/icebergs/base/nfs"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
)
|
||||
|
||||
@ -21,37 +23,35 @@ const RSA = "rsa"
|
||||
|
||||
func init() {
|
||||
aaa.Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
||||
RSA: {Name: RSA, Help: "角色", Value: kit.Data(mdb.SHORT, mdb.HASH, mdb.FIELD, "time,hash,public,private")},
|
||||
RSA: {Name: RSA, Help: "角色", Value: kit.Data(mdb.SHORT, mdb.HASH, mdb.FIELD, "time,hash,title,public,private")},
|
||||
}, Commands: map[string]*ice.Command{
|
||||
RSA: {Name: "rsa hash auto create import", Help: "公钥", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
|
||||
// m.Cmd(m.PrefixKey(), mdb.IMPORT)
|
||||
}},
|
||||
RSA: {Name: "rsa hash auto", Help: "公钥", Action: ice.MergeAction(map[string]*ice.Action{
|
||||
mdb.IMPORT: {Name: "import key=.ssh/id_rsa pub=.ssh/id_rsa.pub", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Conf(m.PrefixKey(), kit.Keys(mdb.HASH, "id_rsa"), kit.Data(mdb.TIME, m.Time(),
|
||||
PRIVATE, m.Cmdx("nfs.cat", kit.HomePath(m.Option("key"))),
|
||||
PUBLIC, m.Cmdx("nfs.cat", kit.HomePath(m.Option("pub"))),
|
||||
m.Conf(m.PrefixKey(), kit.Keys(mdb.HASH, path.Base(m.Option("key"))), kit.Data(mdb.TIME, m.Time(),
|
||||
"title", kit.Format("%s@%s", ice.Info.UserName, ice.Info.HostName),
|
||||
PRIVATE, m.Cmdx(nfs.CAT, kit.HomePath(m.Option("key"))),
|
||||
PUBLIC, m.Cmdx(nfs.CAT, kit.HomePath(m.Option("pub"))),
|
||||
))
|
||||
}},
|
||||
mdb.EXPORT: {Name: "export key=.ssh/id_rsa pub=.ssh/id_rsa.pub", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmd(m.PrefixKey(), m.Option(mdb.HASH)).Table(func(index int, value map[string]string, head []string) {
|
||||
m.Cmdx("nfs.save", kit.HomePath(m.Option("key")), value[PRIVATE])
|
||||
m.Cmdx("nfs.save", kit.HomePath(m.Option("pub")), value[PUBLIC])
|
||||
m.Cmdx(nfs.SAVE, kit.HomePath(m.Option("key")), value[PRIVATE])
|
||||
m.Cmdx(nfs.SAVE, kit.HomePath(m.Option("pub")), value[PUBLIC])
|
||||
})
|
||||
}},
|
||||
mdb.CREATE: {Name: "create bits=2048,4096", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.CREATE: {Name: "create bits=2048,4096 title=some", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
|
||||
if key, err := rsa.GenerateKey(rand.Reader, kit.Int(m.Option("bits"))); m.Assert(err) {
|
||||
if pub, err := ssh.NewPublicKey(key.Public()); m.Assert(err) {
|
||||
m.Cmdy(mdb.INSERT, m.PrefixKey(), "", mdb.HASH,
|
||||
m.Cmdy(mdb.INSERT, m.PrefixKey(), "", mdb.HASH, m.OptionSimple("title"), PUBLIC, string(ssh.MarshalAuthorizedKey(pub)),
|
||||
PRIVATE, string(pem.EncodeToMemory(&pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(key)})),
|
||||
PUBLIC, string(ssh.MarshalAuthorizedKey(pub)),
|
||||
)
|
||||
}
|
||||
}
|
||||
}},
|
||||
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
mdb.HashSelect(m, arg...)
|
||||
m.PushAction(mdb.EXPORT, mdb.REMOVE)
|
||||
if mdb.HashSelect(m, arg...).PushAction(mdb.EXPORT, mdb.REMOVE); len(arg) == 0 {
|
||||
m.Action(mdb.CREATE, mdb.IMPORT)
|
||||
}
|
||||
}},
|
||||
}})
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user