All Projects → slavaim → MacOSX-VFS-redirector

slavaim / MacOSX-VFS-redirector

Licence: other
Mac OS X file system filter to redirect file operations

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to MacOSX-VFS-redirector

MacOSX-FileSystem-Filter
A file system filter for Mac OS X
Stars: ✭ 72 (+89.47%)
Mutual labels:  filter, kext, vfs
mac-notes
macOS notes
Stars: ✭ 92 (+142.11%)
Mutual labels:  kext, vfs
redirfs
A Linux file system filter based on redirfs
Stars: ✭ 27 (-28.95%)
Mutual labels:  filter, vfs
Tablefilter
A Javascript library making HTML tables filterable and a bit more :)
Stars: ✭ 248 (+552.63%)
Mutual labels:  filter
redirect ynh
Redirection app for YunoHost
Stars: ✭ 37 (-2.63%)
Mutual labels:  redirection
UnChain
A tool to find redirection chains in multiple URLs
Stars: ✭ 77 (+102.63%)
Mutual labels:  redirection
Hackintosh-ASUS-A455LF-Notebook
EFI Folder for ASUS A455LF-WX039D Notebook Series with Clover/OpenCore Legacy or UEFI
Stars: ✭ 27 (-28.95%)
Mutual labels:  kext
Rack Reducer
Declaratively filter data via URL params, in any Rack app, with any ORM.
Stars: ✭ 241 (+534.21%)
Mutual labels:  filter
rtss
Relative TimeStamps for Stuff
Stars: ✭ 42 (+10.53%)
Mutual labels:  filter
glare
gracefully download (latest) releases from GitHub
Stars: ✭ 64 (+68.42%)
Mutual labels:  redirection
prox
A Scala library for working with system processes
Stars: ✭ 93 (+144.74%)
Mutual labels:  redirection
AspNetCoreMvcAngular
ASP.NET Core MVC with angular in MVC View OpenID Connect Hybrid Flow
Stars: ✭ 54 (+42.11%)
Mutual labels:  redirection
raptor
A fast and space-efficient pre-filter for querying very large collections of nucleotide sequences.
Stars: ✭ 37 (-2.63%)
Mutual labels:  filter
Svg Filters
🔮 Fildrop. A set of custom SVG Filters
Stars: ✭ 251 (+560.53%)
Mutual labels:  filter
OS-X-Yosemite-on-Unsupported-Macs
Install OS X Yosemite on Unsupported Macs
Stars: ✭ 23 (-39.47%)
Mutual labels:  kext
Sndfilter
Algorithms for sound filters, like reverb, dynamic range compression, lowpass, highpass, notch, etc
Stars: ✭ 246 (+547.37%)
Mutual labels:  filter
get-css-data
A micro-library for collecting stylesheet data from link and style nodes
Stars: ✭ 29 (-23.68%)
Mutual labels:  shadow
outbound-go
URL shortener and Redirection As A Service
Stars: ✭ 21 (-44.74%)
Mutual labels:  redirection
mongoose-slug-plugin
Slugs for Mongoose with history and i18n support (uses speakingurl by default, but you can use any slug library such as limax, slugify, mollusc, or slugme)
Stars: ✭ 21 (-44.74%)
Mutual labels:  redirection
SocketHook
Socket hook is an injector based on EasyHook (win only) which redirect the traffic to your local server.
Stars: ✭ 38 (+0%)
Mutual labels:  redirection

MacOSX-VFS-redirector

License

The license model is a BSD Open Source License. This is a non-viral license, only asking that if you use it, you acknowledge the authors, in this case Slava Imameev.

Design

The filter is based on MacOSX-FileSystem-Filter. The filter design description can be found here https://github.com/slavaim/MacOSX-FileSystem-Filter .

The filter redirects file creation, open requests, rename and data IO (read, write) from an application to a shadow directory where shadow copies for files are created. The shadow directory path can cross mount points. An application under control doesn't aware about redirection and believes it works with original files by using unmodified paths. Applications under control are registered in gApplicationsData array. The array is declared in https://github.com/slavaim/MacOSX-VFS-redirector/blob/master/VFSFilter0/VFSFilter0/ApplicationsData.cpp .

The filter employs a user mode client for data modification and shadow file creation. See processing for VFSDataType_PreOperationCallback in https://github.com/slavaim/MacOSX-VFS-redirector/blob/master/VFSFilter0Client/VFSFilterClient/main.cpp .

The filter's core is https://github.com/slavaim/MacOSX-VFS-redirector/blob/master/VFSFilter0/VFSFilter0/VFSHooks.cpp . It contains VFS hooks to intercept file creation and open, redirect IO and call a user client.

The filter was tested on Mac OS X Yosemite (10.10) and Mac OS X El Capitan (10.11). A Sierra (10.12) support was added with https://github.com/slavaim/MacOSX-VFS-redirector/commit/48b7868d64b76b5da72bfce890180a0da323f028 commit. The vnode structure definition has changed in Sierra. A preprocessor condition in VersionDependent.cpp

#if !defined(MAC_OS_X_VERSION_10_11) || MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_11

is used to choose the target OS version during compilation. If the condition is evaluated as true a kext will support Yosemite (10.10) and El Capitan (10.11), else a kext for Sierra (10.12) is being built. There is an alternative macOS version independent hooker implementation that uses a vnode structure inference, for details take a look at https://github.com/slavaim/MacOSX-FileSystem-Filter/blob/master/FsdFilter/FltFakeFSD.cpp#L1902 .

Filter loading

The filter module is loaded by kextload command. The user client connects to the filter IOKit object to receive callbacks and modify data.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].