40 lines
1.6 KiB
Rust
40 lines
1.6 KiB
Rust
//! `usenet-feeder` library surface. The binary (`main.rs`) wraps the plugin in
|
|
//! [`meta_feeder_sdk::serve_feeders`].
|
|
//!
|
|
//! This feeder owns the **metadata half** of Usenet: it searches an nntmux
|
|
//! header-scan indexer we run ourselves (the separate NNTmux app, over its
|
|
//! Newznab API) and mints a portable `nzb-posting` (`0x1003`)
|
|
//! cid from each release's article Message-IDs. Unlike `meta-feeder-indexer`'s
|
|
//! `0x1005` locator, that cid embeds no indexer host, so any peer with a plain
|
|
//! NNTP provider can redeem it — no indexer credential anywhere in the path.
|
|
//!
|
|
//! It ADDS a source alongside meta-feeder-indexer; it replaces nothing.
|
|
//!
|
|
//! It also **redeems** external Newznab releases: an `nzb-release` (`0x1005`)
|
|
//! cid minted by meta-feeder-torznab is grabbed here, with this feeder's
|
|
//! per-host indexer keys, when the gateway calls `/compute` on a real play
|
|
//! ([`newznab`]). Indexer keys live on this feeder, not on meta-share.
|
|
//!
|
|
//! Like every feeder it is meta-core-free and blockstore-free: it finds records
|
|
//! and serves bytes, and the gateway core owns hashing-into-the-blockstore, the
|
|
//! meta-core store-back, and the libp2p wire (gateway invariant 10).
|
|
//!
|
|
//! See `meta-gateway/docs/others/self-hosted-usenet-indexer-study.md`.
|
|
|
|
/// Our own nntmux, reached only over its Newznab HTTP API: the client, the
|
|
/// per-release `.nzb` cache, the release type and the Message-ID extraction.
|
|
pub mod nntmux {
|
|
pub mod api;
|
|
pub mod cache;
|
|
pub mod catalog;
|
|
pub mod nzb;
|
|
}
|
|
|
|
/// The `t=get` grab that redeems an external `nzb-release` locator.
|
|
pub mod newznab;
|
|
|
|
/// The `usenet` upstream itself.
|
|
pub mod anchor;
|
|
|
|
pub mod usenet;
|