Skip to main content

Crate sherlock_nsf_parser

Crate sherlock_nsf_parser 

Source
Expand description

Read-only parser for IBM / HCL Lotus Notes Storage Facility (NSF) databases. Pure Rust, no FFI, no Notes client required.

Current capability surface:

Coming in subsequent slices:

  • Form-based dispatch (Memo / Person / Appointment / …)
  • Item-level encryption decryption (detected + flagged today)

See the project README for current capability status and the companion priorart_nsf_format.md for the design rationale and format reference.

§Versioning

This crate is pre-1.0 and under active development. Public API may break between 0.x releases as format coverage grows.

Re-exports§

pub use bdb::BucketDescriptorBlock;
pub use bdb::RrvBucketDescriptor;
pub use bdb::RrvBucketKind;
pub use cd::Attachment;
pub use cd::AttachmentKind;
pub use cd::NoteContent;
pub use bdt::BucketDescriptorTable;
pub use bucket::Bucket;
pub use bucket::BucketHeader;
pub use bucket::BucketSlot;
pub use database::Database;
pub use database::NoteEnumeration;
pub use database::ResolvedNote;
pub use detect::identify_file;
pub use detect::FileKind;
pub use error::NsfError;
pub use header::DbHeader;
pub use info2::BdbSlot;
pub use info2::Information2;
pub use info2::SuperblockSlot;
pub use item::field_kind;
pub use item::parse_items;
pub use item::FieldKind;
pub use item::NoteItem;
pub use note::NoteHeader;
pub use ods::Ods;
pub use rrv::RrvBucketHeader;
pub use rrv::RrvEntry;
pub use rrv::RrvIter;
pub use rrv::RrvLocation;
pub use superblock::select_freshest;
pub use superblock::Superblock;
pub use time::DecodedTimedate;
pub use time::Timedate;

Modules§

bdb
Bucket Descriptor Block (BDB) - the master index of every RRV bucket.
bdt
Bucket Descriptor Table (BDT) - the bucket_index -> file_offset map.
bucket
Generic bucket (and bucket-shaped page) parsing.
cd
Composite Data (CD) record parsing - Lotus Notes rich text + attachments.
cx
Domino “CX” decompression - used for the superblock body.
database
High-level Database::open API.
detect
File-identification: tell an NSF from a non-NSF without committing to parsing the rest of the database.
error
Error taxonomy for the parser.
header
Database header (DBINFO) parsing.
info2
Database information extension block 2 (nsfdb_database_information2_t).
item
Note item parsing - the fields inside a note record.
note
Note record parsing.
ods
On-Disk Structure (ODS) version mapping.
rrv
Record Relocation Vector (RRV) bucket parsing.
superblock
Superblock parsing.
time
Notes TIMEDATE (8-byte timestamp) parsing.