mod ssh; pub use ssh::*; use async_trait::async_trait; use crate::Error; #[async_trait] pub trait OPNsenseShell: std::fmt::Debug + Send + Sync { async fn exec(&self, command: &str) -> Result; async fn write_content_to_temp_file(&self, content: &str) -> Result; async fn upload_folder(&self, source: &str, destination: &str) -> Result; } #[cfg(test)] #[derive(Debug)] pub struct DummyOPNSenseShell; #[cfg(test)] #[async_trait] impl OPNsenseShell for DummyOPNSenseShell { async fn exec(&self, _command: &str) -> Result { unimplemented!("This is a dummy implementation"); } async fn write_content_to_temp_file(&self, _content: &str) -> Result { unimplemented!("This is a dummy implementation"); } async fn upload_folder(&self, _source: &str, _destination: &str) -> Result { unimplemented!("This is a dummy implementation"); } }