1
0
mirror of https://github.com/docker/docker-credential-helpers.git synced 2026-06-13 16:01:28 +05:30

🌅 complete OS X keychain implementation.

Signed-off-by: David Calavera <david.calavera@gmail.com>
This commit is contained in:
David Calavera
2016-02-07 17:16:54 -08:00
commit b7ffbdb74f
13 changed files with 478 additions and 0 deletions
+38
View File
@@ -0,0 +1,38 @@
package plugin
import (
"net/rpc"
"github.com/calavera/docker-credential-helpers/credentials"
"github.com/hashicorp/go-plugin"
)
var handshakeConfig = plugin.HandshakeConfig{
ProtocolVersion: 1,
MagicCookieKey: "DOCKER_CREDENTIAL_PLUGIN",
MagicCookieValue: "nyzGgJQpfOYO$oUVHo4RsLaYaNmCqeWLEqZnZG}peMVq4nXdFp",
}
type credentialsPlugin struct {
helper credentials.Helper
}
func (p *credentialsPlugin) Server(*plugin.MuxBroker) (interface{}, error) {
return p, nil
}
func (*credentialsPlugin) Client(b *plugin.MuxBroker, c *rpc.Client) (interface{}, error) {
return nil, nil
}
// Serve initializes the socket connection to a store helper.
func Serve(helper credentials.Helper) {
pluginMap := map[string]plugin.Plugin{
"credentials": &credentialsPlugin{helper},
}
plugin.Serve(&plugin.ServeConfig{
HandshakeConfig: handshakeConfig,
Plugins: pluginMap,
})
}
+43
View File
@@ -0,0 +1,43 @@
package plugin
import "github.com/calavera/docker-credential-helpers/credentials"
// CredentialsGetResponse holds the information sent to docker after
// a request for credentials.
type CredentialsGetResponse struct {
Error string
Username string
Password string
}
func (p *credentialsPlugin) Get(c *credentials.Credentials, resp *CredentialsGetResponse) error {
username, password, err := p.helper.Get(c.ServerURL)
if err != nil {
*resp = CredentialsGetResponse{
Error: err.Error(),
}
return nil
}
*resp = CredentialsGetResponse{
Username: username,
Password: password,
}
return nil
}
func (p *credentialsPlugin) Add(c *credentials.Credentials, resp *string) error {
err := p.helper.Add(c)
if err != nil {
*resp = err.Error()
}
return nil
}
func (p *credentialsPlugin) Delete(c *credentials.Credentials, resp *string) error {
err := p.helper.Delete(c.ServerURL)
if err != nil {
*resp = err.Error()
}
return nil
}