Skip to content

Commit

Permalink
adding the ability to set the RSA key as a string value on drone star…
Browse files Browse the repository at this point in the history
…tup instead of a file that has to be mounted.
  • Loading branch information
josmo committed Feb 1, 2017
1 parent 4a57d93 commit c413565
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 9 deletions.
5 changes: 5 additions & 0 deletions drone/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,11 @@ var serverCmd = cli.Command{
Name: "stash-consumer-rsa",
Usage: "stash oauth1 private key file",
},
cli.StringFlag{
EnvVar: "DRONE_STASH_CONSUMER_RSA_STRING",
Name: "stash-consumer-rsa-string",
Usage: "stash oauth1 private key string",
},
cli.StringFlag{
EnvVar: "DRONE_STASH_GIT_USERNAME",
Name: "stash-git-username",
Expand Down
30 changes: 21 additions & 9 deletions remote/bitbucketserver/bitbucketserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ type Opts struct {
Password string // Git machine account password.
ConsumerKey string // Oauth1 consumer key.
ConsumerRSA string // Oauth1 consumer key file.
ConsumerRSAString string
SkipVerify bool // Skip ssl verification.
}

Expand Down Expand Up @@ -60,19 +61,30 @@ func New(opts Opts) (remote.Remote, error) {
return nil, fmt.Errorf("Must have a git machine account password")
case opts.ConsumerKey == "":
return nil, fmt.Errorf("Must have a oauth1 consumer key")
case opts.ConsumerRSA == "":
return nil, fmt.Errorf("Must have a oauth1 consumer key file")
}

keyFile, err := ioutil.ReadFile(opts.ConsumerRSA)
if err != nil {
return nil, err
if opts.ConsumerRSA == "" && opts.ConsumerRSAString == "" {
return nil, fmt.Errorf("must have CONSUMER_RSA_KEY set to the path of a oauth1 consumer key file or CONSUMER_RSA_KEY_STRING set to the value of a oauth1 consumer key")
}
block, _ := pem.Decode(keyFile)
PrivateKey, err := x509.ParsePKCS1PrivateKey(block.Bytes)
if err != nil {
return nil, err

var keyFileBytes []byte;
if opts.ConsumerRSA != "" {
var err error;
keyFileBytes, err = ioutil.ReadFile(opts.ConsumerRSA)
if err != nil {
return nil, err
}
} else {
keyFileBytes = []byte(opts.ConsumerRSAString)
}

block, _ := pem.Decode(keyFileBytes)
PrivateKey, err := x509.ParsePKCS1PrivateKey(block.Bytes)
if err != nil {
return nil, err
}


config.Consumer = CreateConsumer(opts.URL, opts.ConsumerKey, PrivateKey)
return config, nil
}
Expand Down
1 change: 1 addition & 0 deletions router/middleware/remote.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ func setupStash(c *cli.Context) (remote.Remote, error) {
Password: c.String("stash-git-password"),
ConsumerKey: c.String("stash-consumer-key"),
ConsumerRSA: c.String("stash-consumer-rsa"),
ConsumerRSAString: c.String("stash-consumer-rsa-string"),
SkipVerify: c.Bool("stash-skip-verify"),
})
}
Expand Down

0 comments on commit c413565

Please sign in to comment.