Loading fs/CMakeLists.txt +1 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,6 @@ find_package(FUSE3 REQUIRED) find_package(Boost 1.56.0 COMPONENTS system filesystem serialization) include_directories(${FUSE3_INCLUDE_DIR} include/) set(SOURCE_FILES src/main.cpp src/main.h src/fuse_ops.h src/util.cpp src/classes/metadata.h src/classes/metadata.cpp src/adafs_ops/metadata_ops.h src/adafs_ops/metadata_ops.cpp src/adafs_ops/dentry_ops.cpp src/adafs_ops/dentry_ops.h src/configure.h src/fuse_ops/file.cpp src/fuse_ops/directory.cpp src/fuse_ops/permission.cpp src/fuse_utils.h src/fuse_ops/sync.cpp) set(SOURCE_FILES src/main.cpp src/main.h src/fuse_ops.h src/util.cpp src/classes/metadata.h src/classes/metadata.cpp src/adafs_ops/metadata_ops.h src/adafs_ops/metadata_ops.cpp src/adafs_ops/dentry_ops.cpp src/adafs_ops/dentry_ops.h src/configure.h src/fuse_ops/file.cpp src/fuse_ops/directory.cpp src/fuse_ops/access.cpp src/fuse_ops/sync.cpp src/adafs_ops/access.cpp src/adafs_ops/access.h) add_executable(adafs ${SOURCE_FILES} src/main.cpp) target_link_libraries(adafs ${FUSE3_LIBRARIES} -lpthread -lboost_system -lboost_filesystem -lboost_serialization) No newline at end of file fs/src/fuse_ops/permission.cpp→fs/src/adafs_ops/access.cpp +11 −6 Original line number Diff line number Diff line // // Created by draze on 3/19/17. // Created by evie on 3/28/17. // #include "../fuse_utils.h" using namespace std; #include "access.h" /** * * @param md * @param mode * @return */ int chk_access(const Metadata& md, const int mode) { ADAFS_DATA->logger->debug("chk_access() enter: metadata_uid {} fusecontext_uid {}", md.uid(), fuse_get_context()->uid); ADAFS_DATA->logger->debug("chk_access() enter: metadata_uid {} fusecontext_uid {}", md.uid(), fuse_get_context()->uid); // root user is a god if (fuse_get_context()->uid == 0) return 0; Loading fs/src/fuse_utils.h→fs/src/adafs_ops/access.h +14 −0 Original line number Diff line number Diff line // // Created by draze on 3/19/17. // Created by evie on 3/28/17. // #ifndef FS_FUSE_UTILS_H #define FS_FUSE_UTILS_H #ifndef FS_ACCESS_H #define FS_ACCESS_H #include "../classes/metadata.h" #include "classes/metadata.h" int chk_access(const Metadata& md, const int mode); #endif //FS_FUSE_UTILS_H #endif //FS_ACCESS_H fs/src/fuse_ops.h +16 −13 Original line number Diff line number Diff line Loading @@ -6,34 +6,37 @@ #define FS_FUSE_OPS_H #include "main.h" #include "fuse_utils.h" // file int adafs_getattr(const char*, struct stat*, struct fuse_file_info*); int adafs_getattr(const char* p, struct stat* attr, struct fuse_file_info* fi); int adafs_mknod(const char*, mode_t, dev_t); int adafs_mknod(const char* p, mode_t, dev_t); int adafs_open(const char*, struct fuse_file_info*); int adafs_open(const char*, struct fuse_file_info* fi); int adafs_utimens(const char*, const struct timespec tv[2], struct fuse_file_info* fi); int adafs_unlink(const char* p); int adafs_utimens(const char* p, const struct timespec tv[2], struct fuse_file_info* fi); // directory int adafs_opendir(const char*, struct fuse_file_info*); int adafs_opendir(const char* p, struct fuse_file_info* fi); int adafs_readdir(const char*, void*, fuse_fill_dir_t, off_t, struct fuse_file_info*, enum fuse_readdir_flags); int adafs_readdir(const char* p, void* buf, fuse_fill_dir_t filler, off_t offset, struct fuse_file_info* fi, enum fuse_readdir_flags flags); int adafs_releasedir(const char*, struct fuse_file_info*); int adafs_releasedir(const char* p, struct fuse_file_info* fi); int adafs_mkdir(const char *, mode_t); int adafs_mkdir(const char* p, mode_t mode); // int adafs_flush(const char*, struct fuse_file_info*); int adafs_flush(const char* p, struct fuse_file_info* fi); // // permissions int adafs_access(const char* p, int mask); void* adafs_init(struct fuse_conn_info*, struct fuse_config*); void* adafs_init(struct fuse_conn_info* conn, struct fuse_config* cfg); void adafs_destroy(void*); void adafs_destroy(void* adafs_data); #endif //FS_FUSE_OPS_H fs/src/fuse_ops/access.cpp 0 → 100644 +24 −0 Original line number Diff line number Diff line // // Created by draze on 3/19/17. // #include "../main.h" #include "../fuse_ops.h" using namespace std; /** * Check file access permissions * * This will be called for the access() system call. If the * 'default_permissions' mount option is given, this method is not * called. * * This method is not called under Linux kernel versions 2.4.x */ int adafs_access(const char* p, int mask) { ADAFS_DATA->logger->info("##### FUSE FUNC ###### adafs_access() enter: name '{}' mask {}", p, mask); // XXX To be implemented for rm return 0; } Loading
fs/CMakeLists.txt +1 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,6 @@ find_package(FUSE3 REQUIRED) find_package(Boost 1.56.0 COMPONENTS system filesystem serialization) include_directories(${FUSE3_INCLUDE_DIR} include/) set(SOURCE_FILES src/main.cpp src/main.h src/fuse_ops.h src/util.cpp src/classes/metadata.h src/classes/metadata.cpp src/adafs_ops/metadata_ops.h src/adafs_ops/metadata_ops.cpp src/adafs_ops/dentry_ops.cpp src/adafs_ops/dentry_ops.h src/configure.h src/fuse_ops/file.cpp src/fuse_ops/directory.cpp src/fuse_ops/permission.cpp src/fuse_utils.h src/fuse_ops/sync.cpp) set(SOURCE_FILES src/main.cpp src/main.h src/fuse_ops.h src/util.cpp src/classes/metadata.h src/classes/metadata.cpp src/adafs_ops/metadata_ops.h src/adafs_ops/metadata_ops.cpp src/adafs_ops/dentry_ops.cpp src/adafs_ops/dentry_ops.h src/configure.h src/fuse_ops/file.cpp src/fuse_ops/directory.cpp src/fuse_ops/access.cpp src/fuse_ops/sync.cpp src/adafs_ops/access.cpp src/adafs_ops/access.h) add_executable(adafs ${SOURCE_FILES} src/main.cpp) target_link_libraries(adafs ${FUSE3_LIBRARIES} -lpthread -lboost_system -lboost_filesystem -lboost_serialization) No newline at end of file
fs/src/fuse_ops/permission.cpp→fs/src/adafs_ops/access.cpp +11 −6 Original line number Diff line number Diff line // // Created by draze on 3/19/17. // Created by evie on 3/28/17. // #include "../fuse_utils.h" using namespace std; #include "access.h" /** * * @param md * @param mode * @return */ int chk_access(const Metadata& md, const int mode) { ADAFS_DATA->logger->debug("chk_access() enter: metadata_uid {} fusecontext_uid {}", md.uid(), fuse_get_context()->uid); ADAFS_DATA->logger->debug("chk_access() enter: metadata_uid {} fusecontext_uid {}", md.uid(), fuse_get_context()->uid); // root user is a god if (fuse_get_context()->uid == 0) return 0; Loading
fs/src/fuse_utils.h→fs/src/adafs_ops/access.h +14 −0 Original line number Diff line number Diff line // // Created by draze on 3/19/17. // Created by evie on 3/28/17. // #ifndef FS_FUSE_UTILS_H #define FS_FUSE_UTILS_H #ifndef FS_ACCESS_H #define FS_ACCESS_H #include "../classes/metadata.h" #include "classes/metadata.h" int chk_access(const Metadata& md, const int mode); #endif //FS_FUSE_UTILS_H #endif //FS_ACCESS_H
fs/src/fuse_ops.h +16 −13 Original line number Diff line number Diff line Loading @@ -6,34 +6,37 @@ #define FS_FUSE_OPS_H #include "main.h" #include "fuse_utils.h" // file int adafs_getattr(const char*, struct stat*, struct fuse_file_info*); int adafs_getattr(const char* p, struct stat* attr, struct fuse_file_info* fi); int adafs_mknod(const char*, mode_t, dev_t); int adafs_mknod(const char* p, mode_t, dev_t); int adafs_open(const char*, struct fuse_file_info*); int adafs_open(const char*, struct fuse_file_info* fi); int adafs_utimens(const char*, const struct timespec tv[2], struct fuse_file_info* fi); int adafs_unlink(const char* p); int adafs_utimens(const char* p, const struct timespec tv[2], struct fuse_file_info* fi); // directory int adafs_opendir(const char*, struct fuse_file_info*); int adafs_opendir(const char* p, struct fuse_file_info* fi); int adafs_readdir(const char*, void*, fuse_fill_dir_t, off_t, struct fuse_file_info*, enum fuse_readdir_flags); int adafs_readdir(const char* p, void* buf, fuse_fill_dir_t filler, off_t offset, struct fuse_file_info* fi, enum fuse_readdir_flags flags); int adafs_releasedir(const char*, struct fuse_file_info*); int adafs_releasedir(const char* p, struct fuse_file_info* fi); int adafs_mkdir(const char *, mode_t); int adafs_mkdir(const char* p, mode_t mode); // int adafs_flush(const char*, struct fuse_file_info*); int adafs_flush(const char* p, struct fuse_file_info* fi); // // permissions int adafs_access(const char* p, int mask); void* adafs_init(struct fuse_conn_info*, struct fuse_config*); void* adafs_init(struct fuse_conn_info* conn, struct fuse_config* cfg); void adafs_destroy(void*); void adafs_destroy(void* adafs_data); #endif //FS_FUSE_OPS_H
fs/src/fuse_ops/access.cpp 0 → 100644 +24 −0 Original line number Diff line number Diff line // // Created by draze on 3/19/17. // #include "../main.h" #include "../fuse_ops.h" using namespace std; /** * Check file access permissions * * This will be called for the access() system call. If the * 'default_permissions' mount option is given, this method is not * called. * * This method is not called under Linux kernel versions 2.4.x */ int adafs_access(const char* p, int mask) { ADAFS_DATA->logger->info("##### FUSE FUNC ###### adafs_access() enter: name '{}' mask {}", p, mask); // XXX To be implemented for rm return 0; }