[−][src]Crate ift
IFT (interface templates)
Template strings to extract the correct interface and IpAddr to bind to. Heavily inspired by https://github.com/hashicorp/go-sockaddr
What is it?
eval
(docs)
takes an interface template string. The template is a string that starts with a
producer
and is followed by filters
and sorts
each of which is pipe |
delimited. eval
returns a vector of IpAddr objects
that can then be used as bindings
Usage
general
use ift::eval; print!("{:?}", eval(r#"GetInterface "en0""#).unwrap());
actix
use actix_web::{ server, App, }; let mut s = server::new(|| { App::new() }); for ip in ift::eval("GetPrivateInterfaces").unwrap().into_iter() { s = s.bind((ip, 8080)).unwrap(); }
Example Templates
- get private interfaces
GetAllInterfaces | FilterFlags "up" | FilterForwardable | SortBy "default"
- get private interfaces short
GetPrivateInterfaces
- get specific interface by name
GetInterface "en0"
- get only interfaces with ipv6 addresses
GetAllInterfaces | FilterIPv6
Example Code
There are examples in the examples folder.
- actix - bind multiple private interfaces
Modules
rfc | to get specific information about rfcs used by the templates |
Enums
IfTError | Some errors that can come from the evaluation of the template |
Functions
eval | Evaluate a interface template |
evals | Just like |