forked from TrueCloudLab/rclone
crypt: preserve leading / in wrapped remote path
When combining the remote value and the root path, preserve the absence or presence of the / at the beginning of the wrapped remote path. e.g. a remote "cloud:" and root path "dir" becomes "cloud:dir" instead of "cloud:/dir".
This commit is contained in:
parent
5b1c162fb2
commit
eb5a95e7de
1 changed files with 9 additions and 5 deletions
|
@ -130,16 +130,20 @@ func NewFs(name, rpath string, m configmap.Mapper) (fs.Fs, error) {
|
||||||
if strings.HasPrefix(remote, name+":") {
|
if strings.HasPrefix(remote, name+":") {
|
||||||
return nil, errors.New("can't point crypt remote at itself - check the value of the remote setting")
|
return nil, errors.New("can't point crypt remote at itself - check the value of the remote setting")
|
||||||
}
|
}
|
||||||
|
wInfo, wName, wPath, wConfig, err := fs.ConfigFs(remote)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrapf(err, "failed to parse remote %q to wrap", remote)
|
||||||
|
}
|
||||||
// Look for a file first
|
// Look for a file first
|
||||||
remotePath := path.Join(remote, cipher.EncryptFileName(rpath))
|
remotePath := path.Join(wPath, cipher.EncryptFileName(rpath))
|
||||||
wrappedFs, err := fs.NewFs(remotePath)
|
wrappedFs, err := wInfo.NewFs(wName, remotePath, wConfig)
|
||||||
// if that didn't produce a file, look for a directory
|
// if that didn't produce a file, look for a directory
|
||||||
if err != fs.ErrorIsFile {
|
if err != fs.ErrorIsFile {
|
||||||
remotePath = path.Join(remote, cipher.EncryptDirName(rpath))
|
remotePath = path.Join(wPath, cipher.EncryptDirName(rpath))
|
||||||
wrappedFs, err = fs.NewFs(remotePath)
|
wrappedFs, err = wInfo.NewFs(wName, remotePath, wConfig)
|
||||||
}
|
}
|
||||||
if err != fs.ErrorIsFile && err != nil {
|
if err != fs.ErrorIsFile && err != nil {
|
||||||
return nil, errors.Wrapf(err, "failed to make remote %q to wrap", remotePath)
|
return nil, errors.Wrapf(err, "failed to make remote %s:%q to wrap", wName, remotePath)
|
||||||
}
|
}
|
||||||
f := &Fs{
|
f := &Fs{
|
||||||
Fs: wrappedFs,
|
Fs: wrappedFs,
|
||||||
|
|
Loading…
Add table
Reference in a new issue