Browse Source

Added READONLY do not write to fsdb feature

Toby Chui 3 years ago
parent
commit
6341d9392f
1 changed files with 22 additions and 3 deletions
  1. 22 3
      mod/filesystem/filesystem.go

+ 22 - 3
mod/filesystem/filesystem.go

@@ -120,10 +120,15 @@ func NewFileSystemHandler(option FileSystemOption) (*FileSystemHandler, error) {
 			}
 
 		}
+
 		//Create the fsdb for this handler
-		fsdb, err := db.NewDatabase(filepath.ToSlash(filepath.Join(filepath.Clean(option.Path), "aofs.db")), false)
-		if err != nil {
-			return &FileSystemHandler{}, errors.New("Unable to create fsdb inside the target path. Is the directory read only?")
+		var fsdb *db.Database = nil
+		if option.Access != "readonly" {
+			dbp, err := db.NewDatabase(filepath.ToSlash(filepath.Join(filepath.Clean(option.Path), "aofs.db")), false)
+			if err != nil {
+				return &FileSystemHandler{}, errors.New("Unable to create fsdb inside the target path. Is the directory read only?")
+			}
+			fsdb = dbp
 		}
 
 		return &FileSystemHandler{
@@ -164,6 +169,10 @@ func NewFileSystemHandler(option FileSystemOption) (*FileSystemHandler, error) {
 
 //Create a file ownership record
 func (fsh *FileSystemHandler) CreateFileRecord(realpath string, owner string) error {
+	if fsh.FilesystemDatabase == nil {
+		//Not supported file system type
+		return errors.New("Not supported filesystem type")
+	}
 	rpabs, _ := filepath.Abs(realpath)
 	fsrabs, _ := filepath.Abs(fsh.Path)
 	reldir, err := filepath.Rel(fsrabs, rpabs)
@@ -178,6 +187,11 @@ func (fsh *FileSystemHandler) CreateFileRecord(realpath string, owner string) er
 
 //Read the owner of a file
 func (fsh *FileSystemHandler) GetFileRecord(realpath string) (string, error) {
+	if fsh.FilesystemDatabase == nil {
+		//Not supported file system type
+		return "", errors.New("Not supported filesystem type")
+	}
+
 	rpabs, _ := filepath.Abs(realpath)
 	fsrabs, _ := filepath.Abs(fsh.Path)
 	reldir, err := filepath.Rel(fsrabs, rpabs)
@@ -196,6 +210,11 @@ func (fsh *FileSystemHandler) GetFileRecord(realpath string) (string, error) {
 
 //Delete a file ownership record
 func (fsh *FileSystemHandler) DeleteFileRecord(realpath string) error {
+	if fsh.FilesystemDatabase == nil {
+		//Not supported file system type
+		return errors.New("Not supported filesystem type")
+	}
+
 	rpabs, _ := filepath.Abs(realpath)
 	fsrabs, _ := filepath.Abs(fsh.Path)
 	reldir, err := filepath.Rel(fsrabs, rpabs)