1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
use std::env;
use std::fs::read_to_string;

use haproxy_config::{config, parse_sections};

fn main() {
    let path = env::args()
        .nth(1)
        .expect("need the path to the haproxy cfg file");
    let config = read_to_string(&path).expect("haproxy config file needs to be readable");
    let sections = parse_sections(config.as_str())
        .map_err(|e| e.with_path(path))
        .unwrap();
    println!("{sections:#?}");
    let config: config::Config = sections.as_slice().try_into().unwrap();
    println!("{config:#?}");

    let frontend_ports = config.frontends.values().map(|f| f.bind.addr.port);
    let listen_ports = config.listen.values().map(|f| f.bind.addr.port);
    let ports: Vec<_> = frontend_ports.chain(listen_ports).collect();
    println!("ports bound to by haproxy: {ports:?}")
}