backend/sftp: Add sftp.args option

Allow setting custom arguments for the `sftp` backend, by using the
`sftp.args` option. This is similar to the approach already implemented
in the `rclone` backend, to support new arguments without requiring
future code changes for each different SSH argument.

Closes #4241
This commit is contained in:
Michael Manganiello 2023-10-17 22:21:06 -03:00 committed by Michael Eischer
parent 17f2301cc2
commit 41f70f1f4f
5 changed files with 45 additions and 8 deletions

View file

@ -213,6 +213,9 @@ func buildSSHCommand(cfg Config) (cmd string, args []string, err error) {
if err != nil {
return "", nil, err
}
if cfg.Args != "" {
return "", nil, errors.New("cannot specify both sftp.command and sftp.args options")
}
return args[0], args[1:], nil
}
@ -226,11 +229,19 @@ func buildSSHCommand(cfg Config) (cmd string, args []string, err error) {
args = append(args, "-p", port)
}
if cfg.User != "" {
args = append(args, "-l")
args = append(args, cfg.User)
args = append(args, "-l", cfg.User)
}
args = append(args, "-s")
args = append(args, "sftp")
if cfg.Args != "" {
a, err := backend.SplitShellStrings(cfg.Args)
if err != nil {
return "", nil, err
}
args = append(args, a...)
}
args = append(args, "-s", "sftp")
return cmd, args, nil
}