added fs encryption overlay
This commit is contained in:
parent
2039086696
commit
fd1e8118a4
28 changed files with 3994 additions and 30 deletions
|
|
@ -4,7 +4,8 @@ package parse
|
|||
|
||||
import (
|
||||
"cachefs/pkg/provider"
|
||||
"cachefs/pkg/provider/mount"
|
||||
"cachefs/pkg/provider/crypto"
|
||||
"cachefs/pkg/provider/os"
|
||||
"cachefs/pkg/provider/sftp"
|
||||
"errors"
|
||||
"fmt"
|
||||
|
|
@ -19,7 +20,7 @@ var (
|
|||
ErrUnsupportedScheme = errors.New("unsupported scheme")
|
||||
)
|
||||
|
||||
func FS(url string) (provider.FS, error) {
|
||||
func FS(url string, key []byte) (provider.FS, error) {
|
||||
u, err := neturl.Parse(url)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
@ -27,11 +28,20 @@ func FS(url string) (provider.FS, error) {
|
|||
if !filepath.IsAbs(u.Path) {
|
||||
return nil, ErrPathNotAbsolute
|
||||
}
|
||||
var fs provider.FS
|
||||
switch u.Scheme {
|
||||
case "file":
|
||||
return mount.NewFS(u.Path)
|
||||
fs, err = os.NewFS(u.Path)
|
||||
case "sftp":
|
||||
return sftp.NewFS(u, klogr.New().WithName("sftp"))
|
||||
fs, err = sftp.NewFS(u, klogr.New().WithName("sftp"))
|
||||
default:
|
||||
return nil, fmt.Errorf("%w: %s", ErrUnsupportedScheme, u.Scheme)
|
||||
}
|
||||
return nil, fmt.Errorf("%w: %s", ErrUnsupportedScheme, u.Scheme)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if key != nil {
|
||||
fs, err = crypto.NewFS(fs, key)
|
||||
}
|
||||
return fs, err
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue