Skip to content
This repository has been archived by the owner on Oct 16, 2023. It is now read-only.

SubconsciousCompute/naughtyfy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

79 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📁 Naughtyfy

A modern fanotify wrapper.

Open issue for any feature/bug.

Example

use naughtyfy::api::*;
use naughtyfy::flags::*;

fn main() {
    unsafe {
        // Use carefully in multi thread.
        FAN_EVENT_BUFFER_LEN = 230.into();
    }
    // Initialise fanotify
    let fd = &init(FAN_CLASS_NOTIF, 0).unwrap();

    // Mark file descriptor for events
    mark(fd, FAN_MARK_ADD | FAN_MARK_MOUNT, FAN_ACCESS, AT_FDCWD, "/").unwrap();

    // Try extracting events from the buffer and print it
    let mut iter = 1;
    loop {
        let res = read(fd).unwrap();
        println!("{res:#?}");
        res.iter().for_each(|e| close(e.fd).unwrap());
        iter += 1;
        if iter > 100 {
            break;
        }
    }
}

Docs

Goals

  • Safe
  • Less overhead
  • Documented
  • Desciptive errors
  • Only 1 dependency (libc)
  • and, Fast ofc.

TODO

  • Add more example
  • Higher level API maybe?

Thanks