use ipnet::IpNet; use crate::config::Config; /// Enum for declaring GeoSite/IP routing pub enum RouteType { /// GeoSite MMDB type, like `category-ads-all` GeoSite(String), /// Subnet GeoIp(IpNet), } /// Routing actions pub enum RouteAction { Block, Proxy, Direct, } type Rules = Vec; /// Type for declaring the routing rules like: /// ```toml /// [rule] /// action = enum RouteAction /// target = enum RouteType /// /// [rule] /// target = "geosite:category-ads-all" /// action = "block" /// ``` pub struct Rule { pub target: RouteType, pub action: RouteAction, } pub fn parse_ruleset(config: NSCConfig) -> Result> { let reader = maxminddb::Reader::open_readfile(config.geo_files[0].clone())?; // Ok(()) todo!(); }