First minimal commit
This commit is contained in:
parent
7019867411
commit
bc8bc0c2e4
10 changed files with 1051 additions and 1 deletions
41
src/geoparsers/geoip2.rs
Normal file
41
src/geoparsers/geoip2.rs
Normal 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
1
src/geoparsers/mod.rs
Normal file
|
|
@ -0,0 +1 @@
|
|||
mod geoip2;
|
||||
Loading…
Add table
Add a link
Reference in a new issue