From 7a23a1b7ab08b2265b16c585ca290120a720dba1 Mon Sep 17 00:00:00 2001
From: ThorstenHeck <simonparmesan@outlook.de>
Date: Sun, 23 Jan 2022 05:33:50 +0100
Subject: [PATCH] Add the option to change SSH_USER and SSH_PORT

---
 driver.go | 31 +++++++++++++++++++++++++++++--
 1 file changed, 29 insertions(+), 2 deletions(-)

diff --git a/driver.go b/driver.go
index b274958..345dda3 100644
--- a/driver.go
+++ b/driver.go
@@ -76,11 +76,17 @@ const (
 	flagPlacementGroup    = "hetzner-placement-group"
 	flagAutoSpread        = "hetzner-auto-spread"
 
+	flagSshUser           = "hetzner-ssh-user"
+	flagSshPort           = "hetzner-ssh-port"
+	
 	labelNamespace    = "docker-machine"
 	labelAutoSpreadPg = "auto-spread"
 	labelAutoCreated  = "auto-created"
 
 	autoSpreadPgName = "__auto_spread"
+	
+	defaultSSHPort = 22
+	defaultSSHUser = "root"
 )
 
 // NewDriver initializes a new driver instance; see [drivers.Driver.NewDriver]
@@ -90,8 +96,6 @@ func NewDriver() *Driver {
 		Type:          defaultType,
 		IsExistingKey: false,
 		BaseDriver: &drivers.BaseDriver{
-			SSHUser: drivers.DefaultSSHUser,
-			SSHPort: drivers.DefaultSSHPort,
 		},
 	}
 }
@@ -203,6 +207,18 @@ func (d *Driver) GetCreateFlags() []mcnflag.Flag {
 			Name:   flagAutoSpread,
 			Usage:  "Auto-spread on a docker-machine-specific default placement group",
 		},
+		mcnflag.StringFlag{
+			EnvVar: "HETZNER_SSH_USER",
+			Name:   flagSshUser,
+			Usage:  "SSH username",
+			Value:  defaultSSHUser,
+		},
+		mcnflag.IntFlag{
+			EnvVar: "HETZNER_SSH_PORT",
+			Name:   flagSshPort,
+			Usage:  "SSH port",
+			Value:  defaultSSHPort,
+		},
 	}
 }
 
@@ -224,6 +240,9 @@ func (d *Driver) SetConfigFromFlags(opts drivers.DriverOptions) error {
 	d.Firewalls = opts.StringSlice(flagFirewalls)
 	d.AdditionalKeys = opts.StringSlice(flagAdditionalKeys)
 
+	d.SSHUser = opts.String(flagSshUser)
+	d.SSHPort = opts.Int(flagSshPort)
+	
 	d.placementGroup = opts.String(flagPlacementGroup)
 	if opts.Bool(flagAutoSpread) {
 		if d.placementGroup != "" {
@@ -250,6 +269,14 @@ func (d *Driver) SetConfigFromFlags(opts drivers.DriverOptions) error {
 	return nil
 }
 
+func (d *Driver) GetSSHUsername() string {
+	return d.SSHUser
+}
+
+func (d *Driver) GetSSHPort() (int, error) {
+	return d.SSHPort, nil
+}
+
 func (d *Driver) setLabelsFromFlags(opts drivers.DriverOptions) error {
 	d.ServerLabels = make(map[string]string)
 	for _, label := range opts.StringSlice(flagServerLabel) {
-- 
GitLab