tftpd/lib.rs
1#![warn(missing_docs)]
2
3//! Multithreaded TFTP daemon implemented in pure Rust.
4//!
5//! This server implements [RFC 1350](https://www.rfc-editor.org/rfc/rfc1350), The TFTP Protocol (Revision 2).
6//! It also supports the following [RFC 2347](https://www.rfc-editor.org/rfc/rfc2347) TFTP Option Extensions:
7//!
8//! - [RFC 2348](https://www.rfc-editor.org/rfc/rfc2348) Blocksize Option
9//! - [RFC 2349](https://www.rfc-editor.org/rfc/rfc2349) Timeout Interval Option
10//! - [RFC 2349](https://www.rfc-editor.org/rfc/rfc2349) Transfer Size Option
11//! - [RFC 7440](https://www.rfc-editor.org/rfc/rfc7440) Windowsize Option
12//!
13//! # Security
14//!
15//! Since TFTP servers do not offer any type of login or access control mechanisms, this server only allows
16//! transfer and receiving inside a chosen folder, and disallows external file access.
17
18#[cfg(feature = "client")]
19mod client;
20
21#[cfg(feature = "client")]
22mod client_config;
23mod config;
24mod options;
25mod convert;
26mod packet;
27mod server;
28mod socket;
29mod window;
30mod worker;
31mod log;
32
33#[cfg(feature = "debug_drop")]
34mod drop;
35
36#[cfg(feature = "client")]
37pub use client::Client;
38#[cfg(feature = "client")]
39pub use client::Mode;
40#[cfg(feature = "client")]
41pub use client_config::ClientConfig;
42pub use config::Config;
43pub use convert::Convert;
44pub use options::TransferOption;
45pub use options::OptionType;
46pub use packet::ErrorCode;
47pub use packet::Opcode;
48pub use packet::Packet;
49pub use server::Server;
50pub use socket::ServerSocket;
51pub use socket::Socket;
52pub use window::Window;
53pub use worker::Worker;
54pub use log::verbosity;