4 releases (breaking)
0.3.0 | Sep 10, 2024 |
---|---|
0.2.0 | Feb 1, 2024 |
0.1.0 | Jan 27, 2024 |
0.0.0 | Nov 22, 2023 |
#13 in #async-dns
Used in edge-net
16KB
311 lines
edge-captive
Async + no_std
+ no-alloc implementation of a Captive Portal DNS (i.e. a DNS server that resolves every domain name to a fixed IP address).
The implementation is based on the splendid domain library.
For other protocols, look at the edge-net aggregator crate documentation.
Example
use core::net::{IpAddr, Ipv4Addr, SocketAddr};
use core::time::Duration;
use edge_captive::io::run;
use log::*;
fn main() {
env_logger::init_from_env(
env_logger::Env::default().filter_or(env_logger::DEFAULT_FILTER_ENV, "info"),
);
let stack = edge_nal_std::Stack::new();
let mut tx_buf = [0; 1500];
let mut rx_buf = [0; 1500];
info!("Running Captive Portal DNS on UDP port 8853...");
futures_lite::future::block_on(run(
&stack,
// Can't use DEFAULT_SOCKET because it uses DNS port 53 which needs root
SocketAddr::new(IpAddr::V4(Ipv4Addr::UNSPECIFIED), 8853),
&mut tx_buf,
&mut rx_buf,
Ipv4Addr::new(192, 168, 0, 1),
Duration::from_secs(60),
))
.unwrap();
}
Dependencies
~4.5MB
~87K SLoC