Compare commits

...

2 commits

Author SHA1 Message Date
Aode (Lion) 80bafc9f10 Update deps, allow needless borrow
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2022-01-31 20:31:49 -06:00
Aode (Lion) 72cf39b411 Clippy on src/ 2022-01-31 20:28:57 -06:00
6 changed files with 291 additions and 330 deletions

574
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -13,7 +13,7 @@ async-fs = "1.3.0"
async-process = "1.0.0" async-process = "1.0.0"
async-trait = "0.1.40" async-trait = "0.1.40"
base64 = "0.13.0" base64 = "0.13.0"
bcrypt = "0.9.0" bcrypt = "0.10.1"
blocking = "1.0.0" blocking = "1.0.0"
config = { version = "0.11.0", features = ["toml"] } config = { version = "0.11.0", features = ["toml"] }
futures-lite = "1.8.0" futures-lite = "1.8.0"

View file

@ -1,3 +1,5 @@
#![allow(clippy::needless_borrow)]
use blocking::unblock; use blocking::unblock;
use futures_lite::*; use futures_lite::*;
use once_cell::sync::Lazy; use once_cell::sync::Lazy;

View file

@ -69,7 +69,7 @@ pub(crate) async fn delete(db: &Db, rule_id: &str) -> Result<Rule, anyhow::Error
let rule = tree let rule = tree
.remove(rule_id.as_bytes())? .remove(rule_id.as_bytes())?
.ok_or(anyhow::anyhow!("No rule with id {}", rule_id))?; .ok_or_else(|| anyhow::anyhow!("No rule with id {}", rule_id))?;
tree.flush_async().await?; tree.flush_async().await?;
@ -147,17 +147,16 @@ async fn set_rule(
{ {
let has_nat_subnet = interfaces.nats.iter().any(|nat_iface| { let has_nat_subnet = interfaces.nats.iter().any(|nat_iface| {
*nat_iface == iface.interface *nat_iface == iface.interface
|| *nat_iface != iface.interface || interfaces
&& interfaces .internal
.internal .iter()
.iter() .chain(&interfaces.tunnel)
.chain(&interfaces.tunnel) .chain(&interfaces.vlan)
.chain(&interfaces.vlan) .any(|other_iface| {
.any(|other_iface| { *nat_iface == other_iface.interface
*nat_iface == other_iface.interface && other_iface.ip == iface.ip
&& other_iface.ip == iface.ip && other_iface.mask == iface.mask
&& other_iface.mask == iface.mask })
})
}); });
if !has_nat_subnet { if !has_nat_subnet {

View file

@ -125,18 +125,20 @@ impl Interfaces {
let external = parse_interface_info(&output, &config.interface.external)? let external = parse_interface_info(&output, &config.interface.external)?
.next() .next()
.ok_or(anyhow!( .ok_or_else(|| {
"Failed to parse IP for interface {}", anyhow!(
config.interface.external, "Failed to parse IP for interface {}",
))?; config.interface.external,
)
})?;
let mut internal = Vec::new(); let mut internal = Vec::new();
for iface in &config.interface.internal { for iface in &config.interface.internal {
internal.extend(parse_interface_info(&output, &iface)?); internal.extend(parse_interface_info(&output, iface)?);
} }
if internal.len() == 0 { if internal.is_empty() {
return Err(anyhow!( return Err(anyhow!(
"No internal interfaces found for {:?}", "No internal interfaces found for {:?}",
config.interface.internal config.interface.internal
@ -146,13 +148,13 @@ impl Interfaces {
let mut vlan = Vec::new(); let mut vlan = Vec::new();
for iface in &config.interface.vlan { for iface in &config.interface.vlan {
vlan.extend(parse_interface_info(&output, &iface)?); vlan.extend(parse_interface_info(&output, iface)?);
} }
let mut tunnel = Vec::new(); let mut tunnel = Vec::new();
for iface in &config.interface.tunnel { for iface in &config.interface.tunnel {
tunnel.extend(parse_interface_info(&output, &iface)?); tunnel.extend(parse_interface_info(&output, iface)?);
} }
Ok(Interfaces { Ok(Interfaces {

View file

@ -1,6 +1,6 @@
use crate::startup::Interfaces; use crate::startup::Interfaces;
static UNIVERSE: &'static str = "0.0.0.0/0"; static UNIVERSE: &str = "0.0.0.0/0";
pub(crate) fn firewall_rules(interfaces: &Interfaces) -> String { pub(crate) fn firewall_rules(interfaces: &Interfaces) -> String {
filter(interfaces) + "\n" + &nat(interfaces) filter(interfaces) + "\n" + &nat(interfaces)