Skip to content

Commit

Permalink
update filters display order
Browse files Browse the repository at this point in the history
  • Loading branch information
pythops committed Sep 13, 2024
1 parent afdbb57 commit 5754d83
Show file tree
Hide file tree
Showing 2 changed files with 106 additions and 64 deletions.
25 changes: 13 additions & 12 deletions oryx-tui/src/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,8 @@ impl App {
if !self.start_sniffing {
let (
interface_block,
network_filter_block,
transport_filter_block,
network_filter_block,
link_filter_block,
traffic_direction_block,
start_block,
Expand All @@ -117,8 +117,8 @@ impl App {
.direction(Direction::Vertical)
.constraints([
Constraint::Length(self.interface.interfaces.len() as u16 + 6),
Constraint::Length(NB_NETWORK_PROTOCOL + 4),
Constraint::Length(NB_TRANSPORT_PROTOCOL + 4),
Constraint::Length(NB_NETWORK_PROTOCOL + 4),
Constraint::Length(NB_LINK_PROTOCOL + 4),
Constraint::Length(6),
Constraint::Length(4),
Expand Down Expand Up @@ -245,10 +245,10 @@ impl App {
let widths = [Constraint::Length(10), Constraint::Fill(1)];
let filters = [
Row::new(vec![
Line::styled("Network", Style::new().bold()),
Line::from_iter(NetworkFilter::default().selected_protocols.iter().map(
Line::styled("Transport", Style::new().bold()),
Line::from_iter(TransportFilter::default().selected_protocols.iter().map(
|filter| {
if self.network_filter.applied_protocols.contains(filter) {
if self.transport_filter.applied_protocols.contains(filter) {
Span::styled(
format!(" {} ", filter),
Style::default().light_green(),
Expand All @@ -263,10 +263,10 @@ impl App {
)),
]),
Row::new(vec![
Line::styled("Transport", Style::new().bold()),
Line::from_iter(TransportFilter::default().selected_protocols.iter().map(
Line::styled("Network", Style::new().bold()),
Line::from_iter(NetworkFilter::default().selected_protocols.iter().map(
|filter| {
if self.transport_filter.applied_protocols.contains(filter) {
if self.network_filter.applied_protocols.contains(filter) {
Span::styled(
format!(" {} ", filter),
Style::default().light_green(),
Expand Down Expand Up @@ -370,17 +370,17 @@ impl App {
.split(layout[1])[1];

let (
network_filter_block,
transport_filter_block,
network_filter_block,
link_filter_block,
traffic_direction_block,
apply_block,
) = {
let chunks = Layout::default()
.direction(Direction::Vertical)
.constraints([
Constraint::Length(NB_NETWORK_PROTOCOL + 4),
Constraint::Length(NB_TRANSPORT_PROTOCOL + 4),
Constraint::Length(NB_NETWORK_PROTOCOL + 4),
Constraint::Length(NB_LINK_PROTOCOL + 4),
Constraint::Length(6),
Constraint::Length(4),
Expand All @@ -399,12 +399,13 @@ impl App {
.border_style(Style::default().green()),
block,
);
self.network_filter
.render(frame, network_filter_block, &self.focused_block);

self.transport_filter
.render(frame, transport_filter_block, &self.focused_block);

self.network_filter
.render(frame, network_filter_block, &self.focused_block);

self.link_filter
.render(frame, link_filter_block, &self.focused_block);

Expand Down
145 changes: 93 additions & 52 deletions oryx-tui/src/handler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,16 +58,16 @@ pub fn handle_key_events(

if app.update_filters {
match &app.focused_block {
FocusedBlock::NetworkFilter => {
app.focused_block = FocusedBlock::TransportFilter;
FocusedBlock::TransportFilter => {
app.focused_block = FocusedBlock::NetworkFilter;
app.network_filter.state.select(Some(0));
app.transport_filter.state.select(Some(0));
app.network_filter.state.select(None);
}

FocusedBlock::TransportFilter => {
FocusedBlock::NetworkFilter => {
app.focused_block = FocusedBlock::LinkFilter;
app.traffic_direction_filter.state.select(None);
app.link_filter.state.select(Some(0));
app.network_filter.state.select(None);
}

FocusedBlock::LinkFilter => {
Expand All @@ -82,8 +82,7 @@ pub fn handle_key_events(
}

FocusedBlock::Start => {
app.focused_block = FocusedBlock::NetworkFilter;
app.network_filter.state.select(Some(0));
app.focused_block = FocusedBlock::TransportFilter;
}
_ => {}
};
Expand All @@ -105,20 +104,20 @@ pub fn handle_key_events(

if app.update_filters {
match &app.focused_block {
FocusedBlock::NetworkFilter => {
app.focused_block = FocusedBlock::Start;
app.network_filter.state.select(None);
}

FocusedBlock::TransportFilter => {
app.focused_block = FocusedBlock::NetworkFilter;
app.network_filter.state.select(Some(0));
app.focused_block = FocusedBlock::Start;
app.transport_filter.state.select(None);
}

FocusedBlock::LinkFilter => {
FocusedBlock::NetworkFilter => {
app.focused_block = FocusedBlock::TransportFilter;
app.transport_filter.state.select(Some(0));
app.network_filter.state.select(None);
}

FocusedBlock::LinkFilter => {
app.focused_block = FocusedBlock::NetworkFilter;
app.network_filter.state.select(Some(0));
app.link_filter.state.select(None);
}

Expand Down Expand Up @@ -161,14 +160,21 @@ pub fn handle_key_events(
KeyCode::Char('f') => {
if app.focused_block != FocusedBlock::Help && app.start_sniffing {
app.update_filters = true;
app.focused_block = FocusedBlock::NetworkFilter;
app.focused_block = FocusedBlock::TransportFilter;

app.network_filter.selected_protocols =
app.network_filter.applied_protocols.clone();

app.transport_filter.selected_protocols =
app.transport_filter.applied_protocols.clone();

app.link_filter.selected_protocols =
app.link_filter.applied_protocols.clone();

app.traffic_direction_filter.selected_direction =
app.traffic_direction_filter.applied_direction.clone();
app.network_filter.state = TableState::default().with_selected(0);

app.transport_filter.state = TableState::default().with_selected(0);
}
}

Expand Down Expand Up @@ -229,6 +235,21 @@ pub fn handle_key_events(
app.transport_filter.state.select(Some(i));
}

FocusedBlock::LinkFilter => {
let i = match app.link_filter.state.selected() {
Some(i) => {
if i < (NB_LINK_PROTOCOL - 1).into() {
i + 1
} else {
i
}
}
None => 0,
};

app.link_filter.state.select(Some(i));
}

FocusedBlock::TrafficDirection => {
app.traffic_direction_filter.state.select(Some(1));
}
Expand Down Expand Up @@ -294,6 +315,21 @@ pub fn handle_key_events(
app.transport_filter.state.select(Some(i));
}

FocusedBlock::LinkFilter => {
let i = match app.link_filter.state.selected() {
Some(i) => {
if i > 1 {
i - 1
} else {
0
}
}
None => 0,
};

app.link_filter.state.select(Some(i));
}

FocusedBlock::TrafficDirection => {
app.traffic_direction_filter.state.select(Some(0));
}
Expand Down Expand Up @@ -364,7 +400,7 @@ pub fn handle_key_events(
if app.focused_block != FocusedBlock::Help && app.start_sniffing {
app.update_filters = true;

app.focused_block = FocusedBlock::NetworkFilter;
app.focused_block = FocusedBlock::TransportFilter;

app.network_filter.selected_protocols =
app.network_filter.applied_protocols.clone();
Expand All @@ -377,7 +413,7 @@ pub fn handle_key_events(
app.traffic_direction_filter.selected_direction =
app.traffic_direction_filter.applied_direction.clone();

app.network_filter.state = TableState::default().with_selected(0);
app.transport_filter.state = TableState::default().with_selected(0);
}
}

Expand Down Expand Up @@ -474,7 +510,7 @@ pub fn handle_key_events(
}

app.start_sniffing = true;
app.focused_block = FocusedBlock::NetworkFilter;
app.focused_block = FocusedBlock::TransportFilter;
} else if app.start_sniffing && app.update_filters {
// Remove egress
if app
Expand Down Expand Up @@ -566,16 +602,18 @@ pub fn handle_key_events(

if app.update_filters {
match &app.focused_block {
FocusedBlock::NetworkFilter => {
app.focused_block = FocusedBlock::TransportFilter;
app.transport_filter.state.select(Some(0));
app.network_filter.state.select(None);
}
FocusedBlock::TransportFilter => {
app.focused_block = FocusedBlock::NetworkFilter;
app.network_filter.state.select(Some(0));
app.transport_filter.state.select(None);
}

FocusedBlock::NetworkFilter => {
app.focused_block = FocusedBlock::LinkFilter;
app.link_filter.state.select(Some(0));
app.transport_filter.state.select(None);
app.network_filter.state.select(None);
}

FocusedBlock::LinkFilter => {
app.focused_block = FocusedBlock::TrafficDirection;
app.traffic_direction_filter.state.select(Some(0));
Expand All @@ -588,8 +626,8 @@ pub fn handle_key_events(
}

FocusedBlock::Start => {
app.focused_block = FocusedBlock::NetworkFilter;
app.network_filter.state.select(Some(0));
app.focused_block = FocusedBlock::TransportFilter;
app.transport_filter.state.select(Some(0));
}
_ => {}
};
Expand All @@ -604,23 +642,26 @@ pub fn handle_key_events(
} else {
match &app.focused_block {
FocusedBlock::Interface => {
app.focused_block = FocusedBlock::NetworkFilter;
app.previous_focused_block = app.focused_block;
app.interface.state.select(None);
app.network_filter.state.select(Some(0));
}
FocusedBlock::NetworkFilter => {
app.focused_block = FocusedBlock::TransportFilter;
app.previous_focused_block = app.focused_block;
app.interface.state.select(None);
app.transport_filter.state.select(Some(0));
app.network_filter.state.select(None);
}

FocusedBlock::TransportFilter => {
app.focused_block = FocusedBlock::NetworkFilter;
app.previous_focused_block = app.focused_block;
app.network_filter.state.select(Some(0));
app.transport_filter.state.select(None);
}

FocusedBlock::NetworkFilter => {
app.focused_block = FocusedBlock::LinkFilter;
app.previous_focused_block = app.focused_block;
app.link_filter.state.select(Some(0));
app.transport_filter.state.select(None);
app.network_filter.state.select(None);
}

FocusedBlock::LinkFilter => {
app.focused_block = FocusedBlock::TrafficDirection;
app.previous_focused_block = app.focused_block;
Expand Down Expand Up @@ -652,20 +693,20 @@ pub fn handle_key_events(

if app.update_filters {
match &app.focused_block {
FocusedBlock::NetworkFilter => {
app.focused_block = FocusedBlock::Start;
app.network_filter.state.select(None);
}

FocusedBlock::TransportFilter => {
app.focused_block = FocusedBlock::NetworkFilter;
app.network_filter.state.select(Some(0));
app.focused_block = FocusedBlock::Start;
app.transport_filter.state.select(None);
}

FocusedBlock::LinkFilter => {
FocusedBlock::NetworkFilter => {
app.focused_block = FocusedBlock::TransportFilter;
app.transport_filter.state.select(Some(0));
app.network_filter.state.select(None);
}

FocusedBlock::LinkFilter => {
app.focused_block = FocusedBlock::NetworkFilter;
app.network_filter.state.select(Some(0));
app.link_filter.state.select(None);
}

Expand Down Expand Up @@ -695,21 +736,21 @@ pub fn handle_key_events(
app.interface.state.select(None);
}

FocusedBlock::NetworkFilter => {
FocusedBlock::TransportFilter => {
app.focused_block = FocusedBlock::Interface;
app.interface.state.select(Some(0));
app.network_filter.state.select(None);
}

FocusedBlock::TransportFilter => {
app.focused_block = FocusedBlock::NetworkFilter;
app.network_filter.state.select(Some(0));
app.transport_filter.state.select(None);
}

FocusedBlock::LinkFilter => {
FocusedBlock::NetworkFilter => {
app.focused_block = FocusedBlock::TransportFilter;
app.transport_filter.state.select(Some(0));
app.network_filter.state.select(None);
}

FocusedBlock::LinkFilter => {
app.focused_block = FocusedBlock::NetworkFilter;
app.network_filter.state.select(Some(0));
app.link_filter.state.select(None);
}

Expand Down

0 comments on commit 5754d83

Please sign in to comment.