First minimal commit

This commit is contained in:
namilsk 2026-03-14 19:15:14 +03:00
parent 7019867411
commit bc8bc0c2e4
No known key found for this signature in database
GPG key ID: 2B2F0A4D870B4F9F
10 changed files with 1051 additions and 1 deletions

41
src/geoparsers/geoip2.rs Normal file
View file

@ -0,0 +1,41 @@
use ipnet::IpNet;
use crate::config::NSCConfig;
/// 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 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<Vec<Rule>, Box<dyn std::error::Error>> {
let reader = maxminddb::Reader::open_readfile(config.geo_files[0].clone())?;
// Ok(())
todo!();
}

1
src/geoparsers/mod.rs Normal file
View file

@ -0,0 +1 @@
mod geoip2;