darkwing/server/services/browser_profile_services/config/
ports.rsuse crate::server::{
dtos::{
browser_profile_dto::{BrowserProfileFullData, Mode},
start_dto::StartRequest,
},
error::Error,
};
use serde::{Deserialize, Serialize};
use super::{FromStartRequest, Navigator, Screen};
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub struct PortsProtection {
pub(super) enabled: bool,
pub(super) blacklist: Vec<u16>,
}
impl FromStartRequest<PortsProtection> for PortsProtection {
fn from_start_request(
bp: &BrowserProfileFullData,
_request: &StartRequest,
_navigator: &Navigator,
_screen: &Screen,
_token: &str,
) -> Result<Self, Error> {
let blacklist = if bp.ports.mode == Mode::Protect {
bp.ports.blacklist.clone()
} else {
Vec::new()
};
Ok(Self {
enabled: true, blacklist,
})
}
}
#[cfg(test)]
mod tests {
use crate::server::services::browser_profile_services::config::consts::LINUX_MOCK_PROFILE;
use super::*;
#[test]
fn test_from_start_request() {
let profile = LINUX_MOCK_PROFILE.clone();
let request = StartRequest::get_mock();
let result = PortsProtection::from_start_request(
&profile,
&request,
&Navigator::default(),
&Screen::default(),
&"".to_string(),
);
assert_eq!(result.is_ok(), true);
let ports_protection = result.expect("Failed to create PortsProtection");
assert_eq!(ports_protection.enabled, true);
assert_eq!(
ports_protection.blacklist,
vec![
3389, 5900, 5800, 7070, 6568, 5938, 63333, 5901, 5902, 5903, 5950,
5931, 5939, 6039, 5944, 6040, 5279, 2112,
]
);
}
}