(filters: Option<&FirewallRuleList>)
| 460 | } |
| 461 | |
| 462 | pub fn export_rules(filters: Option<&FirewallRuleList>) -> Result<FirewallRuleList, FirewallError> { |
| 463 | let store = FirewallStore::open()?; |
| 464 | let all_rules = store.enumerate_rules()?; |
| 465 | let default_filter; |
| 466 | let filter_rules: &[FirewallRule] = match filters { |
| 467 | Some(input) if !input.rules.is_empty() => &input.rules, |
| 468 | _ => { default_filter = [FirewallRule::default()]; &default_filter } |
| 469 | }; |
| 470 | |
| 471 | let mut results = Vec::new(); |
| 472 | for rule in all_rules { |
| 473 | let model = rule_to_model(&rule)?; |
| 474 | if matches_any_filter(&model, filter_rules) { |
| 475 | results.push(model); |
| 476 | } |
| 477 | } |
| 478 | |
| 479 | Ok(FirewallRuleList { rules: results }) |
| 480 | } |
no test coverage detected