3 releases (breaking)

0.2.0 Jun 29, 2020
0.1.0 Jun 11, 2020
0.0.1-alpha.1 Jun 11, 2020

#2 in #nntp

MIT license

105KB
2K SLoC

Brokaw

📰 A Usenet/NNTP library. More at 11! 📰

Brokaw is a typed Usenet library for the dozens of people still reading Netnews. It is very much in development and provides no guarantees about stability.

Brokaw (mostly) implements RFC 3977 and several popular extensions.

Getting Started

[dependencies]
brokaw = "*"
use brokaw::client::ClientConfig;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = ClientConfig::default().connect(("news.mozilla.org", 119))?;

    client.capabilities().iter()
        .for_each(|c| println!("{}", c));

    Ok(())
}

Check out in the repo the examples as well!

Features

  • TLS (aka NNTPS) courtesy of native-tls
  • A high-level client API (NntpClient) for simple interactions with news servers
  • A low-level connection API (NntpConnection) for more specialized use cases
  • AUTHINFO USER/PASS Authentication (RFC 4643
  • Typed commands and responses
  • All Most commands in RFC 3977 (POST, NEWGROUP, NEWNEWS, and LISTGROUP have yet to be implemented)

Missing Features

  • Compression (RFC 8054, Astraweb, Giganews, etc)
  • STARTTLS (RFC 4642)
  • SASL Authentication (RFC 4643)
  • Most of RFC 2980. XHDR and XOVER are supported
  • Connection pools, fine grained connection tuning
  • Async connection/client
  • Article posting

Dependencies

~1–11MB
~120K SLoC