From 7b40a0ae170b26b3dabb8e1d66570ad0b55b909d Mon Sep 17 00:00:00 2001 From: Bart van der Braak Date: Wed, 22 Nov 2023 02:18:44 +0100 Subject: [PATCH] feat: add dns check to see if vault exists --- src/main.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/main.rs b/src/main.rs index 18e55b8..6aea81a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,6 +4,7 @@ use azure_security_keyvault::prelude::KeyVaultGetSecretsResponse; use azure_security_keyvault::KeyvaultClient; use clap::Parser; use futures::stream::StreamExt; +use paris::{info, log}; use paris::{error, Logger}; use std::fs::File; use std::io::Write; @@ -27,6 +28,24 @@ struct Opts { filter: Option, } +async fn check_vault_dns(vault_name: &str) -> Result<()> { + let vault_host = format!("{}.vault.azure.net", vault_name); + + let lookup_result = { + tokio::net::lookup_host((vault_host.as_str(), 443)).await + }; + + match lookup_result { + Ok(_) => Ok(()), + Err(err) => { + error!("DNS lookup failed for Key Vault: {}", vault_name); + info!("Please check that the Key Vault exists or that you have no connectivity issues."); + Err(err.into()) + } + } +} + + async fn fetch_secrets_from_key_vault( client: &KeyvaultClient, filter: Option<&str>, @@ -38,6 +57,7 @@ async fn fetch_secrets_from_key_vault( let page = match page { Ok(p) => p, Err(err) => { + log!("\n"); error!("Failed to fetch secrets page: {}", err); return Err(err.into()); } @@ -181,6 +201,8 @@ async fn main() -> Result<()> { }; log.success("Detected credentials."); + check_vault_dns(&opts.vault_name).await?; + log.loading(format!( "Fetching secrets from Key Vault: {}", opts.vault_name