use super::AUTH_METHOD_NO_AUTH;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub enum FilterMode {
AllowAll,
DenyAll,
AskLlm,
Selective,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Socks5FilterConfig {
pub auth_methods: Vec<u8>,
pub default_action: String,
pub filter_mode: FilterMode,
pub target_host_patterns: Vec<String>,
pub target_port_ranges: Vec<(u16, u16)>,
pub username_patterns: Vec<String>,
pub mitm_by_default: bool,
}
impl Default for Socks5FilterConfig {
fn default() -> Self {
Self {
auth_methods: vec![AUTH_METHOD_NO_AUTH],
default_action: "allow".to_string(),
filter_mode: FilterMode::Selective,
target_host_patterns: Vec::new(),
target_port_ranges: Vec::new(),
username_patterns: Vec::new(),
mitm_by_default: false,
}
}
}