diff --git a/src/errors.rs b/src/errors.rs index e5533a2..dff5f54 100644 --- a/src/errors.rs +++ b/src/errors.rs @@ -42,7 +42,7 @@ impl From for Error { }, PeachDynDnsError::BindConfigurationError => Error { code: ErrorCode::ServerError(-32029), - message: format!("There was a bind configuration error"), + message: "There was a bind configuration error".to_string(), data: None, }, PeachDynDnsError::DomainAlreadyExistsError { domain} => Error { @@ -52,36 +52,14 @@ impl From for Error { }, PeachDynDnsError::KeyFileParseError { source: _} => Error { code: ErrorCode::ServerError(-32031), - message: format!("Error parsing key file"), + message: "Error parsing key file".to_string(), data: None, }, PeachDynDnsError::KeyGenerationError { source: _} => Error { code: ErrorCode::ServerError(-32032), - message: format!("Key generation error"), + message: "Key generation error".to_string(), data: None, }, } } -} - -//#[derive(Debug)] -//pub enum PeachDynError { -// GenerateTsigIoError(std::io::Error), -// GenerateTsigParseError(std::string::FromUtf8Error), -// DomainAlreadyExistsError(String), -// BindConfigurationError(String), -// InvalidDomainError(String) -// NetworkError::MissingParams { e } => e.clone(), -//} -// -//impl From for PeachDynError { -// fn from(err: std::io::Error) -> PeachDynError { -// PeachDynError::GenerateTsigIoError(err) -// } -//} -// -//impl From for PeachDynError { -// fn from(err: std::string::FromUtf8Error) -> PeachDynError { -// PeachDynError::GenerateTsigParseError(err) -// } -//} \ No newline at end of file +} \ No newline at end of file diff --git a/src/generate_zone.rs b/src/generate_zone.rs index a3131df..e434366 100644 --- a/src/generate_zone.rs +++ b/src/generate_zone.rs @@ -52,11 +52,7 @@ pub fn check_domain_available(full_domain: &str) -> bool { // domain is only available if domain does not exist in either named.conf.local or dyn.peachcloud.orgkeys // and a file with that name is not found in /var/lib/bind/ // grep returns a status code of 1 if lines are not found, which is why we check that the codes equal 1 - let domain_available = (code1 == 1) & (code2 == 1) & (!condition3); - - // return - domain_available - + (code1 == 1) & (code2 == 1) & (!condition3) } /// function which generates all necessary bind configuration to serve the given @@ -86,7 +82,7 @@ pub fn generate_zone(full_domain: &str) -> Result { // append key_file_text to /etc/bind/dyn.peachcloud.org.keys let key_file_path = "/etc/bind/dyn.peachcloud.org.keys"; let mut file = OpenOptions::new().append(true).open(key_file_path) - .expect(&format!("failed to open {}", key_file_path)); + .unwrap_or_else(|_| panic!("failed to open {}", key_file_path)); if let Err(e) = writeln!(file, "{}", key_file_text) { error!("Couldn't write to file: {}", e); } @@ -96,7 +92,7 @@ pub fn generate_zone(full_domain: &str) -> Result { let mut file = OpenOptions::new() .append(true) .open(bind_conf_path) - .expect(&format!("failed to open {}", bind_conf_path)); + .unwrap_or_else(|_| panic!("failed to open {}", bind_conf_path)); let zone_section_text = format!( "\ zone \"{full_domain}\" {{ @@ -109,7 +105,7 @@ pub fn generate_zone(full_domain: &str) -> Result { ", full_domain = full_domain ); - writeln!(file, "{}", zone_section_text).expect(&format!("Couldn't write to file: {}", bind_conf_path)); + writeln!(file, "{}", zone_section_text).unwrap_or_else(|_| panic!("Couldn't write to file: {}", bind_conf_path)); // use tera to render the zone file let tera = match Tera::new("templates/*.tera") { @@ -126,8 +122,8 @@ pub fn generate_zone(full_domain: &str) -> Result { // write new zone file to /var/lib/bind let zone_file_path = format!("/var/lib/bind/{}", full_domain); let mut file = File::create(&zone_file_path) - .expect(&format!("failed to create {}", zone_file_path)); - writeln!(file, "{}", result).expect(&format!("Couldn't write to file: {}", zone_file_path)); + .unwrap_or_else(|_| panic!("failed to create {}", zone_file_path)); + writeln!(file, "{}", result).unwrap_or_else(|_| panic!("Couldn't write to file: {}", zone_file_path)); // restart bind // we use the /etc/sudoers.d/bindctl to allow peach-dyndns user to restart bind as sudo without entering a password diff --git a/src/lib.rs b/src/lib.rs index 797a26b..49e2186 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -56,7 +56,7 @@ pub fn run() -> Result<(), BoxError> { Ok(d) => { // if the domain has an invalid format return an erro if !validate_domain(&d.domain) { - Err(Error::from(PeachDynDnsError::InvalidDomain{ domain: d.domain.to_string() })) + Err(Error::from(PeachDynDnsError::InvalidDomain{ domain: d.domain })) } // if it has a valid format, check if its available else {