# README
docker-proxy
docker 代理设置
import "github.com/clarechu/docker-proxy/pkg/models"
import "github.com/clarechu/docker-proxy/pkg/router"
func main() {
root := &models.Root{
App: &models.App{
DockerRegistryHost: "localhost:9001",
RegistryType: models.NexusRegistry,
Nexus: models.Nexus{
Username: "admin",
Password: "admin123",
},
Schema: models.HttpSchema,
OAuth2EventHandlerFuncs: models.OAuth2EventHandlerFuncs{
LoginFunc: LoginFunc,
CheckTokenFunc: CheckTokenFunc,
PostTokenFunc: PostTokenFunc,
},
},
Port: 7777,
}
server := router.NewServer(root)
go server.Run()
}
- 重写LoginFunc 登陆handler
// LoginFunc 登陆的function
func LoginFunc(user *models.User) (*models.OAuth2, error) {
password := fmt.Sprintf("Basic %s", base64.EncodeToString("qwer:admin"))
if user.Account == "qwer" && user.BasicToken == password {
return &models.OAuth2{
RefreshToken: "kas9Da81Dfa8",
AccessToken: "eyJhbGciOiJFUzI1NiIsInR5",
ExpiresIn: 900,
}, nil
}
return nil, errors.New("no token")
}
- 重写CheckTokenFunc 验证token是否合法
// CheckTokenFunc 校验token 是否合法
func CheckTokenFunc(token string) bool {
if "Bearer eyJhbGciOiJFUzI1NiIsInR5" == token {
return true
}
return false
}
- 重写PostTokenFunc 更新和获取新的token
// PostTokenFunc 获取token令牌 和 刷新令牌
func PostTokenFunc(token *models.Token) (*models.OAuth2, error) {
if token.RefreshToken == "kas9Da81Dfa8" {
return &models.OAuth2{
RefreshToken: "kas9Da81Dfa8",
AccessToken: "eyJhbGciOiJFUzI1NiIsInR5",
ExpiresIn: 900000,
}, nil
}
return nil, errors.New("get oauth error ")
}
- 注意当前仅支持http 协议暂时不支持http 的schema