bin+lib ift

A library to read template strings for local network interfaces

4 releases (2 breaking)

✓ Uses Rust 2018 edition

0.2.0 Jan 9, 2019
0.1.0 Jan 8, 2019
0.0.2-alpha.1 Jan 8, 2019
0.0.1 Jan 8, 2019

#78 in Template engine

Download history 19/week @ 2019-01-09

6 downloads per month

MIT license

854 lines

Build Status Ift Version

IFT (interface templates)

Template strings to extract the correct interface and IpAddr to bind your to. Heavily inspired by

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



use ift::eval;
print!("{:?}", eval(r#"GetInterface "en0""#).unwrap());


use actix_web::{
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


To regenerate the RFC code

make gen

To Update README

make update

To Release

You can use the cargo release command.

cargo release patch

License: MIT


~99K SLoC