diff options
Diffstat (limited to 'internal/fusefrontend_reverse')
| -rw-r--r-- | internal/fusefrontend_reverse/rfs.go | 30 | ||||
| -rw-r--r-- | internal/fusefrontend_reverse/rpath.go | 4 | 
2 files changed, 20 insertions, 14 deletions
| diff --git a/internal/fusefrontend_reverse/rfs.go b/internal/fusefrontend_reverse/rfs.go index 36f49be..91ec543 100644 --- a/internal/fusefrontend_reverse/rfs.go +++ b/internal/fusefrontend_reverse/rfs.go @@ -128,6 +128,20 @@ func (rfs *reverseFS) isNameFile(relPath string) bool {  	return fileType == nametransform.LongNameFilename  } +// isTranslatedConfig returns true if the default config file name is in +// and the ciphertext path is "gocryptfs.conf". +// "gocryptfs.conf" then maps to ".gocryptfs.reverse.conf" in the plaintext +// directory. +func (rfs *reverseFS) isTranslatedConfig(relPath string) bool { +	if rfs.args.ConfigCustom { +		return false +	} +	if relPath == configfile.ConfDefaultName { +		return true +	} +	return false +} +  func (rfs *reverseFS) inoAwareStat(relPlainPath string) (*fuse.Attr, fuse.Status) {  	absPath, err := rfs.abs(relPlainPath, nil)  	if err != nil { @@ -165,7 +179,7 @@ func (rfs *reverseFS) inoAwareStat(relPlainPath string) (*fuse.Attr, fuse.Status  // GetAttr - FUSE call  func (rfs *reverseFS) GetAttr(relPath string, context *fuse.Context) (*fuse.Attr, fuse.Status) { -	if relPath == configfile.ConfDefaultName { +	if rfs.isTranslatedConfig(relPath) {  		return rfs.inoAwareStat(configfile.ConfReverseName)  	}  	// Handle virtual files @@ -207,11 +221,11 @@ func (rfs *reverseFS) GetAttr(relPath string, context *fuse.Context) (*fuse.Attr  // Access - FUSE call  func (rfs *reverseFS) Access(relPath string, mode uint32, context *fuse.Context) fuse.Status { -	if rfs.isDirIV(relPath) { +	if rfs.isTranslatedConfig(relPath) {  		return fuse.OK  	} -	if rfs.isFiltered(relPath) { -		return fuse.EPERM +	if rfs.isDirIV(relPath) { +		return fuse.OK  	}  	absPath, err := rfs.abs(rfs.decryptPath(relPath))  	if err != nil { @@ -222,8 +236,7 @@ func (rfs *reverseFS) Access(relPath string, mode uint32, context *fuse.Context)  // Open - FUSE call  func (rfs *reverseFS) Open(relPath string, flags uint32, context *fuse.Context) (fuseFile nodefs.File, status fuse.Status) { -	if relPath == configfile.ConfDefaultName { -		// gocryptfs.conf maps to .gocryptfs.reverse.conf in the plaintext directory +	if rfs.isTranslatedConfig(relPath) {  		return rfs.loopbackfs.Open(configfile.ConfReverseName, flags, context)  	}  	if rfs.isDirIV(relPath) { @@ -232,9 +245,6 @@ func (rfs *reverseFS) Open(relPath string, flags uint32, context *fuse.Context)  	if rfs.isNameFile(relPath) {  		return rfs.newNameFile(relPath)  	} -	if rfs.isFiltered(relPath) { -		return nil, fuse.EPERM -	}  	return rfs.NewFile(relPath, flags)  } @@ -294,7 +304,7 @@ func (rfs *reverseFS) OpenDir(cipherPath string, context *fuse.Context) ([]fuse.  	for i := range entries {  		var cName string  		// ".gocryptfs.reverse.conf" in the root directory is mapped to "gocryptfs.conf" -		if cipherPath == "" && entries[i].Name == configfile.ConfReverseName { +		if cipherPath == "" && rfs.isTranslatedConfig(entries[i].Name) {  			cName = configfile.ConfDefaultName  		} else {  			cName = rfs.nameTransform.EncryptName(entries[i].Name, dirIV) diff --git a/internal/fusefrontend_reverse/rpath.go b/internal/fusefrontend_reverse/rpath.go index ca8c442..5288dcd 100644 --- a/internal/fusefrontend_reverse/rpath.go +++ b/internal/fusefrontend_reverse/rpath.go @@ -85,7 +85,3 @@ func (rfs *reverseFS) decryptPath(relPath string) (string, error) {  	}  	return filepath.Join(transformedParts...), nil  } - -func (rfs *reverseFS) isFiltered(relPath string) bool { -	return false -} | 
