refactor: clean up unused code and improve conditionals in various modules
This commit is contained in:
@@ -80,34 +80,6 @@ mod tests {
|
|||||||
assert!(result.is_ok());
|
assert!(result.is_ok());
|
||||||
}
|
}
|
||||||
|
|
||||||
fn create_exec_file(path: &Path) {
|
|
||||||
write_file(path);
|
|
||||||
let metadata = fs::metadata(path);
|
|
||||||
assert!(metadata.is_ok());
|
|
||||||
let metadata = metadata.ok();
|
|
||||||
assert!(metadata.is_some());
|
|
||||||
let metadata = metadata.unwrap_or_else(|| unreachable!());
|
|
||||||
|
|
||||||
let mut perms = metadata.permissions();
|
|
||||||
perms.set_mode(0o755);
|
|
||||||
let result = fs::set_permissions(path, perms);
|
|
||||||
assert!(result.is_ok());
|
|
||||||
}
|
|
||||||
|
|
||||||
fn create_non_exec_file(path: &Path) {
|
|
||||||
write_file(path);
|
|
||||||
let metadata = fs::metadata(path);
|
|
||||||
assert!(metadata.is_ok());
|
|
||||||
let metadata = metadata.ok();
|
|
||||||
assert!(metadata.is_some());
|
|
||||||
let metadata = metadata.unwrap_or_else(|| unreachable!());
|
|
||||||
|
|
||||||
let mut perms = metadata.permissions();
|
|
||||||
perms.set_mode(0o644);
|
|
||||||
let result = fs::set_permissions(path, perms);
|
|
||||||
assert!(result.is_ok());
|
|
||||||
}
|
|
||||||
|
|
||||||
fn valid_tls_raw_paths(temp_dir: &TempDir) -> (PathBuf, PathBuf, PathBuf) {
|
fn valid_tls_raw_paths(temp_dir: &TempDir) -> (PathBuf, PathBuf, PathBuf) {
|
||||||
let ca_path = temp_dir.path().join("ca.pem");
|
let ca_path = temp_dir.path().join("ca.pem");
|
||||||
let cert_path = temp_dir.path().join("cert.pem");
|
let cert_path = temp_dir.path().join("cert.pem");
|
||||||
|
|||||||
@@ -1,7 +1,3 @@
|
|||||||
use std::sync::Arc;
|
|
||||||
|
|
||||||
use tokio::sync::Mutex;
|
|
||||||
|
|
||||||
pub mod ssh;
|
pub mod ssh;
|
||||||
|
|
||||||
pub type AgentClient =
|
pub type AgentClient =
|
||||||
@@ -47,8 +43,6 @@ mod tests {
|
|||||||
atomic::{AtomicBool, Ordering},
|
atomic::{AtomicBool, Ordering},
|
||||||
};
|
};
|
||||||
|
|
||||||
use tokio::sync::Mutex;
|
|
||||||
|
|
||||||
use crate::config::settings::{
|
use crate::config::settings::{
|
||||||
GrpcSettings, LogSettings, MAuthSettings, Settings, TLSSettings,
|
GrpcSettings, LogSettings, MAuthSettings, Settings, TLSSettings,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
use std::sync::{Arc, Weak};
|
use std::sync::Weak;
|
||||||
|
|
||||||
use nxmesh_proto::{
|
use nxmesh_proto::{ConfigUpdate, MasterMessage, command::Command, master_message::Payload};
|
||||||
AgentMessage, ConfigUpdate, MasterMessage, command::Command, master_message::Payload,
|
|
||||||
};
|
|
||||||
|
|
||||||
use crate::service::master_handler::{MasterHandlerError, MessageResult};
|
use crate::service::master_handler::{MasterHandlerError, MessageResult};
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ use std::sync::Arc;
|
|||||||
|
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
use tokio::process::Command;
|
use tokio::process::Command;
|
||||||
use tracing::{debug, warn};
|
use tracing::debug;
|
||||||
|
|
||||||
use crate::{config::settings::NginxSettings, service::master_handler::MasterHandlerError};
|
use crate::{config::settings::NginxSettings, service::master_handler::MasterHandlerError};
|
||||||
|
|
||||||
@@ -120,10 +120,7 @@ impl CommandHandler for CommandHandlerImpl {
|
|||||||
if !output.status.success() {
|
if !output.status.success() {
|
||||||
let error_info = String::from_utf8_lossy(&output.stderr);
|
let error_info = String::from_utf8_lossy(&output.stderr);
|
||||||
return Err(CommandHandlerError::CommandExecutionError(
|
return Err(CommandHandlerError::CommandExecutionError(
|
||||||
std::io::Error::new(
|
std::io::Error::other(format!("Failed to reload nginx: {}", error_info.trim())),
|
||||||
std::io::ErrorKind::Other,
|
|
||||||
format!("Failed to reload nginx: {}", error_info.trim()),
|
|
||||||
),
|
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
let success_info = String::from_utf8_lossy(&output.stdout);
|
let success_info = String::from_utf8_lossy(&output.stdout);
|
||||||
@@ -142,10 +139,7 @@ impl CommandHandler for CommandHandlerImpl {
|
|||||||
if !output.status.success() {
|
if !output.status.success() {
|
||||||
let error_info = String::from_utf8_lossy(&output.stderr);
|
let error_info = String::from_utf8_lossy(&output.stderr);
|
||||||
return Err(CommandHandlerError::CommandExecutionError(
|
return Err(CommandHandlerError::CommandExecutionError(
|
||||||
std::io::Error::new(
|
std::io::Error::other(format!("Failed to stop nginx: {}", error_info.trim())),
|
||||||
std::io::ErrorKind::Other,
|
|
||||||
format!("Failed to stop nginx: {}", error_info.trim()),
|
|
||||||
),
|
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
let success_info = String::from_utf8_lossy(&output.stdout);
|
let success_info = String::from_utf8_lossy(&output.stdout);
|
||||||
@@ -171,10 +165,10 @@ impl CommandHandler for CommandHandlerImpl {
|
|||||||
if !output.status.success() {
|
if !output.status.success() {
|
||||||
let error_info = String::from_utf8_lossy(&output.stderr);
|
let error_info = String::from_utf8_lossy(&output.stderr);
|
||||||
return Err(CommandHandlerError::CommandExecutionError(
|
return Err(CommandHandlerError::CommandExecutionError(
|
||||||
std::io::Error::new(
|
std::io::Error::other(format!(
|
||||||
std::io::ErrorKind::Other,
|
"Failed to validate nginx config: {}",
|
||||||
format!("Failed to validate nginx config: {}", error_info.trim()),
|
error_info.trim()
|
||||||
),
|
)),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
let success_info = String::from_utf8_lossy(&output.stdout);
|
let success_info = String::from_utf8_lossy(&output.stdout);
|
||||||
@@ -191,10 +185,10 @@ impl CommandHandler for CommandHandlerImpl {
|
|||||||
if !output.status.success() {
|
if !output.status.success() {
|
||||||
let error_info = String::from_utf8_lossy(&output.stderr);
|
let error_info = String::from_utf8_lossy(&output.stderr);
|
||||||
return Err(CommandHandlerError::CommandExecutionError(
|
return Err(CommandHandlerError::CommandExecutionError(
|
||||||
std::io::Error::new(
|
std::io::Error::other(format!(
|
||||||
std::io::ErrorKind::Other,
|
"Failed to get nginx version: {}",
|
||||||
format!("Failed to get nginx version: {}", error_info.trim()),
|
error_info.trim()
|
||||||
),
|
)),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -211,10 +205,7 @@ impl CommandHandler for CommandHandlerImpl {
|
|||||||
if !output.status.success() {
|
if !output.status.success() {
|
||||||
let error_info = String::from_utf8_lossy(&output.stderr);
|
let error_info = String::from_utf8_lossy(&output.stderr);
|
||||||
return Err(CommandHandlerError::CommandExecutionError(
|
return Err(CommandHandlerError::CommandExecutionError(
|
||||||
std::io::Error::new(
|
std::io::Error::other(format!("Failed to get nginx status: {}", error_info.trim())),
|
||||||
std::io::ErrorKind::Other,
|
|
||||||
format!("Failed to get nginx status: {}", error_info.trim()),
|
|
||||||
),
|
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ use std::sync::Arc;
|
|||||||
|
|
||||||
use fs4::tokio::AsyncFileExt;
|
use fs4::tokio::AsyncFileExt;
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
use tokio::{io::AsyncWriteExt, process::Command};
|
use tokio::io::AsyncWriteExt;
|
||||||
use tracing::warn;
|
use tracing::warn;
|
||||||
|
|
||||||
use crate::{config::settings::NginxSettings, service::master_handler::MasterHandlerError};
|
use crate::{config::settings::NginxSettings, service::master_handler::MasterHandlerError};
|
||||||
@@ -222,19 +222,19 @@ impl FsHandler for FsHandlerImpl {
|
|||||||
let mut entries = tokio::fs::read_dir(&deployment_dir).await?;
|
let mut entries = tokio::fs::read_dir(&deployment_dir).await?;
|
||||||
let mut candidates: Vec<(std::path::PathBuf, std::time::SystemTime)> = Vec::new();
|
let mut candidates: Vec<(std::path::PathBuf, std::time::SystemTime)> = Vec::new();
|
||||||
while let Some(entry) = entries.next_entry().await? {
|
while let Some(entry) = entries.next_entry().await? {
|
||||||
if entry.file_type().await.map_or(false, |t| t.is_dir()) {
|
if entry.file_type().await.is_ok_and(|t| t.is_dir())
|
||||||
if let Ok(mtime) = entry.metadata().await.and_then(|m| m.modified()) {
|
&& let Ok(mtime) = entry.metadata().await.and_then(|m| m.modified())
|
||||||
|
{
|
||||||
candidates.push((entry.path(), mtime));
|
candidates.push((entry.path(), mtime));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
// sort descending by mtime (newest first)
|
// sort descending by mtime (newest first)
|
||||||
candidates.sort_by(|a, b| b.1.cmp(&a.1));
|
candidates.sort_by_key(|b| std::cmp::Reverse(b.1));
|
||||||
|
|
||||||
for (dir, _) in &candidates {
|
for (dir, _) in &candidates {
|
||||||
let mut dir_entries = tokio::fs::read_dir(dir).await?;
|
let mut dir_entries = tokio::fs::read_dir(dir).await?;
|
||||||
while let Some(file) = dir_entries.next_entry().await? {
|
while let Some(file) = dir_entries.next_entry().await? {
|
||||||
if file.file_type().await.map_or(false, |t| t.is_file()) {
|
if file.file_type().await.is_ok_and(|t| t.is_file()) {
|
||||||
let name = file.file_name().to_string_lossy().to_string();
|
let name = file.file_name().to_string_lossy().to_string();
|
||||||
if name == "nginx.conf" || name.ends_with(".conf") {
|
if name == "nginx.conf" || name.ends_with(".conf") {
|
||||||
let path = file.path().to_string_lossy().to_string();
|
let path = file.path().to_string_lossy().to_string();
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use sea_orm::DatabaseConnection;
|
use sea_orm::DatabaseConnection;
|
||||||
use tonic::transport::Server;
|
|
||||||
|
|
||||||
pub mod ssh;
|
pub mod ssh;
|
||||||
|
|
||||||
|
|||||||
@@ -33,11 +33,11 @@ pub async fn update_agent_handler(
|
|||||||
Path(id): Path<uuid::Uuid>,
|
Path(id): Path<uuid::Uuid>,
|
||||||
Json(body): Json<UpdateAgentRequest>,
|
Json(body): Json<UpdateAgentRequest>,
|
||||||
) -> Result<impl IntoResponse, AppError> {
|
) -> Result<impl IntoResponse, AppError> {
|
||||||
if let Some(ref name) = body.name {
|
if let Some(ref name) = body.name
|
||||||
if name.trim().is_empty() {
|
&& name.trim().is_empty()
|
||||||
|
{
|
||||||
return Err(AppError::BadRequest("name must not be empty".to_string()));
|
return Err(AppError::BadRequest("name must not be empty".to_string()));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
let rec = UpdateAgentRecord {
|
let rec = UpdateAgentRecord {
|
||||||
name: body.name,
|
name: body.name,
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ async fn get_config(
|
|||||||
Path(id): Path<Uuid>,
|
Path(id): Path<Uuid>,
|
||||||
) -> Result<Json<serde_json::Value>, AppError> {
|
) -> Result<Json<serde_json::Value>, AppError> {
|
||||||
let config = svc.get_proxy_config(id).await?;
|
let config = svc.get_proxy_config(id).await?;
|
||||||
Ok(Json(serde_json::to_value(&config.id).unwrap_or_default()))
|
Ok(Json(serde_json::to_value(config.id).unwrap_or_default()))
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn update_config(
|
async fn update_config(
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ impl CertificateService for CertificateServiceImpl {
|
|||||||
.collect::<Vec<SanType>>(),
|
.collect::<Vec<SanType>>(),
|
||||||
san_dns
|
san_dns
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|dns| SanType::DnsName(dns))
|
.map(SanType::DnsName)
|
||||||
.collect::<Vec<SanType>>(),
|
.collect::<Vec<SanType>>(),
|
||||||
]
|
]
|
||||||
.concat();
|
.concat();
|
||||||
|
|||||||
@@ -16,11 +16,11 @@ impl std::fmt::Display for ProxySettingRender<'_> {
|
|||||||
if let Some(buffer) = self.setting.buffer_size {
|
if let Some(buffer) = self.setting.buffer_size {
|
||||||
writeln!(f, " proxy_buffer_size {};", buffer)?;
|
writeln!(f, " proxy_buffer_size {};", buffer)?;
|
||||||
}
|
}
|
||||||
if self.setting.cache_enabled.unwrap_or(false) {
|
if self.setting.cache_enabled.unwrap_or(false)
|
||||||
if let Some(zone_name) = self.cache_zone_name {
|
&& let Some(zone_name) = self.cache_zone_name
|
||||||
|
{
|
||||||
writeln!(f, " proxy_cache {};", zone_name)?;
|
writeln!(f, " proxy_cache {};", zone_name)?;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,11 +18,11 @@ impl std::fmt::Display for ServerBlockRender<'_> {
|
|||||||
writeln!(f, " listen {};", self.block.listen_port)?;
|
writeln!(f, " listen {};", self.block.listen_port)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(ref names) = self.block.server_name {
|
if let Some(ref names) = self.block.server_name
|
||||||
if !names.is_empty() {
|
&& !names.is_empty()
|
||||||
|
{
|
||||||
writeln!(f, " server_name {};", names.join(" "))?;
|
writeln!(f, " server_name {};", names.join(" "))?;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if let Some(cert) = self.ssl_cert {
|
if let Some(cert) = self.ssl_cert {
|
||||||
writeln!(f, "{}", cert)?;
|
writeln!(f, "{}", cert)?;
|
||||||
|
|||||||
Reference in New Issue
Block a user