Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

Donate Ethereum: 0x83FBC94FBca4e2f10Bede63e16C5b0Bb31a1Fed1

For OSX version: 0x3dF505eC53620Df8F0bc1895bcBF53a990BEc7Bb

## Description

LoggedFS is a fuse-based filesystem which can log every operations that happens in it.
Expand Down Expand Up @@ -110,4 +112,23 @@ If you have a configuration file to use you should use this command :

If you want to log what other users do on your filesystem, you should use the -p option to allow them to see your mounted files. For a complete documentation see the manual page

## About OSX implementation

The main implementation of loggedfs is working with the one path specified in arguments.
It mounts the fuse volume to the path specified and intercepts operations by splitting paths
to realPath and absolutePath.

On OSX, all volumes should be mounted to /Volumes directory.

Only root can mount to the other directory. But if you mount fuse volume as root, the regular
user will not have access to it. So this way is not appropriate.

That is why OSX version is needed to deal with two pathes: the one where is fuse volume
mounted (/Volumes/LoggedFS), and the one specified in program arguments.


## Authors

Rémi Flament - remipouak at gmail.com

OSX implementation - Danil Korotenko
5 changes: 5 additions & 0 deletions loggedfs.entitlements
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict/>
</plist>
359 changes: 359 additions & 0 deletions loggedfs.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,359 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 50;
objects = {

/* Begin PBXBuildFile section */
DA690C3424F5635E00BFE910 /* easylogging++.cc in Sources */ = {isa = PBXBuildFile; fileRef = DA690C3324F5635E00BFE910 /* easylogging++.cc */; };
DA690C3724F564BB00BFE910 /* libxml2.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = DA690C3624F564BB00BFE910 /* libxml2.tbd */; };
DACAD53924F53B4600BDB0FF /* Config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DACAD53424F53B4600BDB0FF /* Config.cpp */; };
DACAD53B24F53B4600BDB0FF /* Filter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DACAD53624F53B4600BDB0FF /* Filter.cpp */; };
DAF7D1F4261EED870035C543 /* loggedfs_osx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DAF7D1F3261EED870035C543 /* loggedfs_osx.cpp */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
DA690C3224F5635E00BFE910 /* easylogging++.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "easylogging++.h"; sourceTree = "<group>"; };
DA690C3324F5635E00BFE910 /* easylogging++.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "easylogging++.cc"; sourceTree = "<group>"; };
DA690C3624F564BB00BFE910 /* libxml2.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libxml2.tbd; path = usr/lib/libxml2.tbd; sourceTree = SDKROOT; };
DA690C3824F5655A00BFE910 /* loggedfs.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = loggedfs.entitlements; sourceTree = "<group>"; };
DA690C3924F5704F00BFE910 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
DACAD52924F53AF700BDB0FF /* loggedfs */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = loggedfs; sourceTree = BUILT_PRODUCTS_DIR; };
DACAD53424F53B4600BDB0FF /* Config.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Config.cpp; sourceTree = "<group>"; };
DACAD53524F53B4600BDB0FF /* loggedfs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loggedfs.cpp; sourceTree = "<group>"; };
DACAD53624F53B4600BDB0FF /* Filter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Filter.cpp; sourceTree = "<group>"; };
DACAD53724F53B4600BDB0FF /* Config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Config.h; sourceTree = "<group>"; };
DACAD53824F53B4600BDB0FF /* Filter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Filter.h; sourceTree = "<group>"; };
DAF7D1F3261EED870035C543 /* loggedfs_osx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loggedfs_osx.cpp; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
DACAD52624F53AF700BDB0FF /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
DA690C3724F564BB00BFE910 /* libxml2.tbd in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
DA690C3124F5634B00BFE910 /* src */ = {
isa = PBXGroup;
children = (
DA690C3324F5635E00BFE910 /* easylogging++.cc */,
DA690C3224F5635E00BFE910 /* easylogging++.h */,
);
path = src;
sourceTree = "<group>";
};
DA690C3524F564BA00BFE910 /* Frameworks */ = {
isa = PBXGroup;
children = (
DA690C3624F564BB00BFE910 /* libxml2.tbd */,
);
name = Frameworks;
sourceTree = "<group>";
};
DACAD52024F53AF700BDB0FF = {
isa = PBXGroup;
children = (
DA690C3924F5704F00BFE910 /* README.md */,
DA690C3824F5655A00BFE910 /* loggedfs.entitlements */,
DACAD53C24F53B4D00BDB0FF /* vendor */,
DACAD53324F53B2900BDB0FF /* src */,
DACAD52A24F53AF700BDB0FF /* Products */,
DA690C3524F564BA00BFE910 /* Frameworks */,
);
sourceTree = "<group>";
};
DACAD52A24F53AF700BDB0FF /* Products */ = {
isa = PBXGroup;
children = (
DACAD52924F53AF700BDB0FF /* loggedfs */,
);
name = Products;
sourceTree = "<group>";
};
DACAD53324F53B2900BDB0FF /* src */ = {
isa = PBXGroup;
children = (
DACAD53424F53B4600BDB0FF /* Config.cpp */,
DACAD53724F53B4600BDB0FF /* Config.h */,
DACAD53624F53B4600BDB0FF /* Filter.cpp */,
DACAD53824F53B4600BDB0FF /* Filter.h */,
DACAD53524F53B4600BDB0FF /* loggedfs.cpp */,
DAF7D1F3261EED870035C543 /* loggedfs_osx.cpp */,
);
path = src;
sourceTree = "<group>";
};
DACAD53C24F53B4D00BDB0FF /* vendor */ = {
isa = PBXGroup;
children = (
DACAD53D24F53B6200BDB0FF /* github.com */,
);
path = vendor;
sourceTree = "<group>";
};
DACAD53D24F53B6200BDB0FF /* github.com */ = {
isa = PBXGroup;
children = (
DACAD53E24F53B7500BDB0FF /* muflihun */,
);
path = github.com;
sourceTree = "<group>";
};
DACAD53E24F53B7500BDB0FF /* muflihun */ = {
isa = PBXGroup;
children = (
DACAD53F24F53B8B00BDB0FF /* easyloggingpp */,
);
path = muflihun;
sourceTree = "<group>";
};
DACAD53F24F53B8B00BDB0FF /* easyloggingpp */ = {
isa = PBXGroup;
children = (
DA690C3124F5634B00BFE910 /* src */,
);
path = easyloggingpp;
sourceTree = "<group>";
};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
DACAD52824F53AF700BDB0FF /* loggedfs */ = {
isa = PBXNativeTarget;
buildConfigurationList = DACAD53024F53AF700BDB0FF /* Build configuration list for PBXNativeTarget "loggedfs" */;
buildPhases = (
DACAD52524F53AF700BDB0FF /* Sources */,
DACAD52624F53AF700BDB0FF /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = loggedfs;
productName = loggedfs;
productReference = DACAD52924F53AF700BDB0FF /* loggedfs */;
productType = "com.apple.product-type.tool";
};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
DACAD52124F53AF700BDB0FF /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1160;
ORGANIZATIONNAME = DanilKorotenko;
TargetAttributes = {
DACAD52824F53AF700BDB0FF = {
CreatedOnToolsVersion = 11.6;
};
};
};
buildConfigurationList = DACAD52424F53AF700BDB0FF /* Build configuration list for PBXProject "loggedfs" */;
compatibilityVersion = "Xcode 9.3";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = DACAD52024F53AF700BDB0FF;
productRefGroup = DACAD52A24F53AF700BDB0FF /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
DACAD52824F53AF700BDB0FF /* loggedfs */,
);
};
/* End PBXProject section */

/* Begin PBXSourcesBuildPhase section */
DACAD52524F53AF700BDB0FF /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
DAF7D1F4261EED870035C543 /* loggedfs_osx.cpp in Sources */,
DACAD53B24F53B4600BDB0FF /* Filter.cpp in Sources */,
DACAD53924F53B4600BDB0FF /* Config.cpp in Sources */,
DA690C3424F5635E00BFE910 /* easylogging++.cc in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */

/* Begin XCBuildConfiguration section */
DACAD52E24F53AF700BDB0FF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"_FILE_OFFSET_BITS=64",
"FUSE_USE_VERSION=26",
ELPP_NO_DEFAULT_LOG_FILE,
ELPP_THREAD_SAFE,
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.15;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
};
name = Debug;
};
DACAD52F24F53AF700BDB0FF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.15;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
SDKROOT = macosx;
};
name = Release;
};
DACAD53124F53AF700BDB0FF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_ENTITLEMENTS = loggedfs.entitlements;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = XS293XGL58;
ENABLE_HARDENED_RUNTIME = NO;
HEADER_SEARCH_PATHS = /usr/local/include/osxfuse;
LIBRARY_SEARCH_PATHS = /usr/local/lib;
OTHER_LDFLAGS = "-losxfuse";
PRODUCT_NAME = "$(TARGET_NAME)";
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/vendor/github.com/muflihun/easyloggingpp/src";
};
name = Debug;
};
DACAD53224F53AF700BDB0FF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_ENTITLEMENTS = loggedfs.entitlements;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = XS293XGL58;
ENABLE_HARDENED_RUNTIME = NO;
HEADER_SEARCH_PATHS = /usr/local/include/osxfuse;
LIBRARY_SEARCH_PATHS = /usr/local/lib;
OTHER_LDFLAGS = "-losxfuse";
PRODUCT_NAME = "$(TARGET_NAME)";
USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/vendor/github.com/muflihun/easyloggingpp/src";
};
name = Release;
};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
DACAD52424F53AF700BDB0FF /* Build configuration list for PBXProject "loggedfs" */ = {
isa = XCConfigurationList;
buildConfigurations = (
DACAD52E24F53AF700BDB0FF /* Debug */,
DACAD52F24F53AF700BDB0FF /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
DACAD53024F53AF700BDB0FF /* Build configuration list for PBXNativeTarget "loggedfs" */ = {
isa = XCConfigurationList;
buildConfigurations = (
DACAD53124F53AF700BDB0FF /* Debug */,
DACAD53224F53AF700BDB0FF /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = DACAD52124F53AF700BDB0FF /* Project object */;
}
Loading