Skip to content

Commit 4c992e8

Browse files
committed
Added support for passing rsa key as a flag
1 parent 83cf646 commit 4c992e8

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

.gitignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
docker-volume-sshfs
2-
plugin/
2+
plugin/
3+
.idea/

main.go

+23-1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ type sshfsVolume struct {
2828

2929
Mountpoint string
3030
connections int
31+
ID_RSA string
3132
}
3233

3334
type sshfsDriver struct {
@@ -90,6 +91,8 @@ func (d *sshfsDriver) Create(r *volume.CreateRequest) error {
9091
v.Password = val
9192
case "port":
9293
v.Port = val
94+
case "id_rsa":
95+
v.ID_RSA = val
9396
default:
9497
if val != "" {
9598
v.Options = append(v.Options, key+"="+val)
@@ -128,6 +131,11 @@ func (d *sshfsDriver) Remove(r *volume.RemoveRequest) error {
128131
if err := os.RemoveAll(v.Mountpoint); err != nil {
129132
return logError(err.Error())
130133
}
134+
135+
if err := os.RemoveAll(v.Mountpoint + "_id_rsa"); err != nil {
136+
return logError(err.Error())
137+
}
138+
131139
delete(d.volumes, r.Name)
132140
d.saveState()
133141
return nil
@@ -163,6 +171,17 @@ func (d *sshfsDriver) Mount(r *volume.MountRequest) (*volume.MountResponse, erro
163171
if os.IsNotExist(err) {
164172
if err := os.MkdirAll(v.Mountpoint, 0755); err != nil {
165173
return &volume.MountResponse{}, logError(err.Error())
174+
} else {
175+
if v.ID_RSA != "" {
176+
id_rsa := v.Mountpoint + "_id_rsa"
177+
f, err := os.Create(id_rsa)
178+
if err != nil {
179+
logrus.Error(err)
180+
}
181+
f.WriteString(v.ID_RSA)
182+
f.Chmod(0600)
183+
f.Close()
184+
}
166185
}
167186
} else if err != nil {
168187
return &volume.MountResponse{}, logError(err.Error())
@@ -239,14 +258,17 @@ func (d *sshfsDriver) Capabilities() *volume.CapabilitiesResponse {
239258

240259
func (d *sshfsDriver) mountVolume(v *sshfsVolume) error {
241260
cmd := exec.Command("sshfs", "-oStrictHostKeyChecking=no", v.Sshcmd, v.Mountpoint)
261+
242262
if v.Port != "" {
243263
cmd.Args = append(cmd.Args, "-p", v.Port)
244264
}
245265
if v.Password != "" {
246266
cmd.Args = append(cmd.Args, "-o", "workaround=rename", "-o", "password_stdin")
247267
cmd.Stdin = strings.NewReader(v.Password)
248268
}
249-
269+
if v.ID_RSA != "" {
270+
cmd.Args = append(cmd.Args, "-o", "IdentityFile=" + v.Mountpoint + "_id_rsa")
271+
}
250272
for _, option := range v.Options {
251273
cmd.Args = append(cmd.Args, "-o", option)
252274
}

0 commit comments

Comments
 (0)