mirror of
https://github.com/jmcorgan/fips.git
synced 2026-07-30 19:46:15 +00:00
Add an outbound-only Nym mixnet transport that tunnels FMP peer links through a local nym-socks5-client SOCKS5 proxy into the Nym mixnet. It structurally mirrors the Tor SOCKS5 transport (connection pool, connect-on-send background promotion, FMP-v0 framing reused from TCP) with the onion, inbound-listener, and control-port machinery removed. Wires the transport through the full TransportHandle dispatch, NymConfig (standard transport-instance pattern), and node instantiation, and surfaces its counters in fipstop. Includes a mock SOCKS5 harness and unit coverage for the address-parsing paths. Also adds an isolated single-container example (examples/sidecar-nostr-mixnet-relay/) demonstrating FIPS peering across the mixnet end to end. No new crate dependencies: tokio_socks, socket2, and futures are already pulled in by the Tor transport.
71 lines
2.1 KiB
Rust
71 lines
2.1 KiB
Rust
//! FIPS: Free Internetworking Peering System
|
|
//!
|
|
//! A distributed, decentralized network routing protocol for mesh nodes
|
|
//! connecting over arbitrary transports.
|
|
|
|
pub mod bloom;
|
|
pub mod cache;
|
|
pub mod config;
|
|
pub mod control;
|
|
pub mod discovery;
|
|
#[cfg(target_os = "linux")]
|
|
pub mod gateway;
|
|
pub mod identity;
|
|
pub mod mmp;
|
|
pub mod node;
|
|
pub mod noise;
|
|
pub mod peer;
|
|
pub mod perf_profile;
|
|
pub mod protocol;
|
|
pub mod transport;
|
|
pub mod tree;
|
|
pub mod upper;
|
|
pub mod utils;
|
|
pub mod version;
|
|
|
|
// Re-export identity types
|
|
pub use identity::{
|
|
AuthChallenge, AuthResponse, FipsAddress, Identity, IdentityError, NodeAddr, PeerIdentity,
|
|
decode_npub, decode_nsec, decode_secret, encode_npub, encode_nsec,
|
|
};
|
|
|
|
// Re-export config types
|
|
pub use config::{Config, ConfigError, IdentityConfig, NymConfig, TorConfig, UdpConfig};
|
|
pub use upper::config::{DnsConfig, TunConfig};
|
|
|
|
// Re-export discovery types
|
|
pub use discovery::{BootstrapHandoffResult, EstablishedTraversal};
|
|
|
|
// Re-export tree types
|
|
pub use tree::{CoordEntry, ParentDeclaration, TreeCoordinate, TreeError, TreeState};
|
|
|
|
// Re-export bloom filter types
|
|
pub use bloom::{BloomError, BloomFilter, BloomState};
|
|
|
|
// Re-export transport types
|
|
pub use transport::udp::UdpTransport;
|
|
pub use transport::{
|
|
DiscoveredPeer, Link, LinkDirection, LinkId, LinkState, LinkStats, PacketRx, PacketTx,
|
|
ReceivedPacket, Transport, TransportAddr, TransportError, TransportHandle, TransportId,
|
|
TransportState, TransportType, packet_channel,
|
|
};
|
|
|
|
// Re-export protocol types
|
|
pub use protocol::{
|
|
CoordsRequired, FilterAnnounce, HandshakeMessageType, LinkMessageType, LookupRequest,
|
|
LookupResponse, PathBroken, ProtocolError, SessionAck, SessionDatagram, SessionFlags,
|
|
SessionMessageType, SessionSetup, TreeAnnounce,
|
|
};
|
|
|
|
// Re-export cache types
|
|
pub use cache::{CacheEntry, CacheError, CacheStats, CoordCache};
|
|
|
|
// Re-export peer types
|
|
pub use peer::{
|
|
ActivePeer, ConnectivityState, HandshakeState, PeerConnection, PeerError, PeerSlot,
|
|
PromotionResult, cross_connection_winner,
|
|
};
|
|
|
|
// Re-export node types
|
|
pub use node::{Node, NodeError, NodeState, UpdatePeersOutcome};
|