Skip to content

Commit

Permalink
Respect server-wide auto setting
Browse files Browse the repository at this point in the history
  • Loading branch information
DeCarabas committed Aug 10, 2024
1 parent cc004df commit de06612
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 10 deletions.
16 changes: 9 additions & 7 deletions src/client/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,25 +21,27 @@ impl ServerConfig {
ServerConfig { auto: true, ports: HashMap::new() }
}

#[cfg(test)]
pub fn set_auto(&mut self, auto: bool) {
self.auto = auto;
}

#[cfg(test)]
pub fn insert(&mut self, port: u16, config: PortConfig) {
self.ports.insert(port, config);
}

pub fn auto(&self) -> bool {
self.auto
}

pub fn iter(&self) -> hash_map::Iter<u16, PortConfig> {
self.ports.iter()
}

pub fn contains_key(&self, port: u16) -> bool {
self.ports.contains_key(&port)
}

pub fn get(&self, port: u16) -> PortConfig {
match self.ports.get(&port) {
None => PortConfig { enabled: self.auto, description: None },
Some(c) => c.clone(),
}
}
}

#[derive(Debug)]
Expand Down
38 changes: 35 additions & 3 deletions src/client/ui.rs
Original file line number Diff line number Diff line change
Expand Up @@ -95,9 +95,17 @@ struct Listener {
}

impl Listener {
pub fn from_desc(socks_port: Option<u16>, desc: PortDesc) -> Listener {
pub fn from_desc(
socks_port: Option<u16>,
desc: PortDesc,
enabled: bool,
) -> Listener {
let mut listener = Listener {
state: State::Enabled.boxed(),
state: if enabled {
State::Enabled.boxed()
} else {
State::Disabled.boxed()
},
config: None,
stop: None,
desc: Some(desc),
Expand Down Expand Up @@ -599,7 +607,11 @@ impl UI {
assert!(!self.config.contains_key(port_desc.port));
self.ports.insert(
port_desc.port,
Listener::from_desc(self.socks_port, port_desc),
Listener::from_desc(
self.socks_port,
port_desc,
self.config.auto(),
),
);
}
}
Expand Down Expand Up @@ -1103,4 +1115,24 @@ mod tests {

drop(sender);
}

#[test]
fn port_default_disabled_respected() {
let (sender, receiver) = mpsc::channel(64);
let mut config = ServerConfig::default();
config.set_auto(false);

let mut ui = UI::new(receiver, config);

ui.handle_internal_event(Some(UIEvent::Ports(vec![PortDesc {
port: 8080,
desc: "python3".to_string(),
}])));

let listener = ui.ports.get(&8080).unwrap();
assert_eq!(listener.state(), State::Disabled);
assert_eq!(listener.description(), "python3");

drop(sender);
}
}

0 comments on commit de06612

Please sign in to comment.