Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Gopkg.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

[[constraint]]
name = "github.com/hetznercloud/hcloud-go"
version = "1.4.0"
version = "1.5.0"

[[constraint]]
name = "github.com/pelletier/go-toml"
Expand Down
39 changes: 39 additions & 0 deletions server_create.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"github.com/hetznercloud/hcloud-go/hcloud"
"github.com/spf13/cobra"
"github.com/spf13/pflag"
"golang.org/x/crypto/ssh"
)

func newServerCreateCommand(cli *CLI) *cobra.Command {
Expand Down Expand Up @@ -117,6 +118,14 @@ func optsFromFlags(cli *CLI, flags *pflag.FlagSet) (opts hcloud.ServerCreateOpts
if err != nil {
return
}

if sshKey == nil {
sshKey, err = getSSHKeyForFingerprint(cli, sshKeyIDOrName)
if err != nil {
return
}
}

if sshKey == nil {
err = fmt.Errorf("SSH key not found: %s", sshKeyIDOrName)
return
Expand All @@ -132,3 +141,33 @@ func optsFromFlags(cli *CLI, flags *pflag.FlagSet) (opts hcloud.ServerCreateOpts

return
}

func getSSHKeyForFingerprint(cli *CLI, file string) (sshKey *hcloud.SSHKey, err error) {
var (
fileContent []byte
publicKey ssh.PublicKey
)

if fileContent, err = ioutil.ReadFile(file); err == os.ErrNotExist {
err = nil
return
} else if err != nil {
err = fmt.Errorf("lookup SSH key by fingerprint: %v", err)
return
}

if publicKey, _, _, _, err = ssh.ParseAuthorizedKey(fileContent); err != nil {
err = fmt.Errorf("lookup SSH key by fingerprint: %v", err)
return
}
sshKey, _, err = cli.Client().SSHKey.GetByFingerprint(cli.Context, ssh.FingerprintLegacyMD5(publicKey))
if err != nil {
err = fmt.Errorf("lookup SSH key by fingerprint: %v", err)
return
}
if sshKey == nil {
err = fmt.Errorf("SSH key not found by using fingerprint of public key: %s", file)
return
}
return
}
3 changes: 2 additions & 1 deletion vendor/github.com/hetznercloud/hcloud-go/.travis.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions vendor/github.com/hetznercloud/hcloud-go/CHANGES.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion vendor/github.com/hetznercloud/hcloud-go/hcloud/hcloud.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 20 additions & 0 deletions vendor/github.com/hetznercloud/hcloud-go/hcloud/ssh_key.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

54 changes: 54 additions & 0 deletions vendor/github.com/hetznercloud/hcloud-go/hcloud/ssh_key_test.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions vendor/github.com/pelletier/go-toml/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 2 additions & 3 deletions vendor/github.com/pelletier/go-toml/.travis.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 15 additions & 3 deletions vendor/github.com/pelletier/go-toml/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion vendor/github.com/pelletier/go-toml/doc.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 7 additions & 2 deletions vendor/github.com/pelletier/go-toml/doc_test.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

31 changes: 31 additions & 0 deletions vendor/github.com/pelletier/go-toml/fuzz.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions vendor/github.com/pelletier/go-toml/fuzz.sh

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading