Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions backend/src/bin/daemon.rs
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,10 @@ struct Cli {
/// Docker socket proxy
#[arg(long)]
docker_proxy: Option<String>,

/// Allow self-signed certificates
#[arg(long)]
allow_self_signed_certs: Option<bool>,
}

impl From<Cli> for CliArgs {
Expand All @@ -84,6 +88,7 @@ impl From<Cli> for CliArgs {
concurrent_scans: cli.concurrent_scans,
daemon_api_key: cli.daemon_api_key,
docker_proxy: cli.docker_proxy,
allow_self_signed_certs: cli.allow_self_signed_certs,
}
}
}
Expand Down
12 changes: 11 additions & 1 deletion backend/src/daemon/runtime/service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,19 @@ pub struct DaemonRuntimeService {

impl DaemonRuntimeService {
pub fn new(config_store: Arc<ConfigStore>) -> Self {
let mut client_builder = reqwest::Client::builder();

if config_store
.get_allow_self_signed_certs()
.unwrap_or(Some(false))
.unwrap_or(false)
{
client_builder = client_builder.danger_accept_invalid_certs(true);
}

Self {
config_store,
client: reqwest::Client::new(),
client: client_builder.build().unwrap(),
utils: create_system_utils(),
}
}
Expand Down
11 changes: 11 additions & 0 deletions backend/src/daemon/shared/storage.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ pub struct CliArgs {
pub concurrent_scans: Option<usize>,
pub daemon_api_key: Option<String>,
pub docker_proxy: Option<String>,
pub allow_self_signed_certs: Option<bool>,
}

/// Unified configuration struct that handles both startup and runtime config
Expand All @@ -48,6 +49,7 @@ pub struct AppConfig {
pub host_id: Option<Uuid>,
pub daemon_api_key: Option<String>,
pub docker_proxy: Option<String>,
pub allow_self_signed_certs: Option<bool>,
}

impl Default for AppConfig {
Expand All @@ -67,6 +69,7 @@ impl Default for AppConfig {
daemon_api_key: None,
concurrent_scans: 15,
docker_proxy: None,
allow_self_signed_certs: None,
}
}
}
Expand Down Expand Up @@ -127,6 +130,9 @@ impl AppConfig {
if let Some(docker_proxy) = cli_args.docker_proxy {
figment = figment.merge(("docker_proxy", docker_proxy));
}
if let Some(allow_self_signed_certs) = cli_args.allow_self_signed_certs {
figment = figment.merge(("allow_self_signed_certs", allow_self_signed_certs));
}

let config: AppConfig = figment
.extract()
Expand Down Expand Up @@ -282,6 +288,11 @@ impl ConfigStore {
Ok(config.docker_proxy.clone())
}

pub fn get_allow_self_signed_certs(&self) -> Result<Option<bool>> {
let config = self.config.try_read()?;
Ok(config.allow_self_signed_certs)
}

pub async fn get_heartbeat_interval(&self) -> Result<u64> {
let config = self.config.read().await;
Ok(config.heartbeat_interval)
Expand Down