From e5ce19e85022ad0373ec08d06f8f49d9a62e2238 Mon Sep 17 00:00:00 2001
From: Brian Picciano
Date: Mon, 15 May 2023 22:16:29 +0200
Subject: [PATCH] use IPv4 for now
---
.env.dev | 2 +-
src/domain/checker.rs | 20 ++++++++++----------
src/domain/manager.rs | 6 +++---
src/main.rs | 12 ++++++------
src/service.rs | 12 ++++++------
src/service/http_tpl/domain_init.html | 4 ++--
src/service/http_tpl/index.html | 2 +-
7 files changed, 29 insertions(+), 29 deletions(-)
diff --git a/.env.dev b/.env.dev
index 123b75e..f731445 100644
--- a/.env.dev
+++ b/.env.dev
@@ -1,5 +1,5 @@
export DOMIPLY_HTTP_DOMAIN=localhost
export DOMIPLY_PASSPHRASE=foobar
export DOMIPLY_ORIGIN_STORE_GIT_DIR_PATH=/tmp/domiply_dev_env/origin/git
-export DOMIPLY_DOMAIN_CHECKER_TARGET_AAAA=::1
+export DOMIPLY_DOMAIN_CHECKER_TARGET_A=127.0.0.1
export DOMIPLY_DOMAIN_CONFIG_STORE_DIR_PATH=/tmp/domiply_dev_env/domain/config
diff --git a/src/domain/checker.rs b/src/domain/checker.rs
index c2ea6b3..7335c0b 100644
--- a/src/domain/checker.rs
+++ b/src/domain/checker.rs
@@ -20,8 +20,8 @@ pub enum NewDNSCheckerError {
#[derive(thiserror::Error, Debug)]
pub enum CheckDomainError {
- #[error("target AAAA not set")]
- TargetAAAANotSet,
+ #[error("target A not set")]
+ TargetANotSet,
#[error("challenge token not set")]
ChallengeTokenNotSet,
@@ -31,7 +31,7 @@ pub enum CheckDomainError {
}
pub struct DNSChecker {
- target_aaaa: net::Ipv6Addr,
+ target_a: net::Ipv4Addr,
// TODO we should use some kind of connection pool here, I suppose
client: tokio::sync::Mutex,
@@ -39,7 +39,7 @@ pub struct DNSChecker {
pub fn new(
tokio_runtime: sync::Arc,
- target_aaaa: net::Ipv6Addr,
+ target_a: net::Ipv4Addr,
resolver_addr: &str,
) -> Result {
let resolver_addr = resolver_addr
@@ -55,7 +55,7 @@ pub fn new(
tokio_runtime.spawn(bg);
Ok(DNSChecker {
- target_aaaa,
+ target_a,
client: tokio::sync::Mutex::new(client),
})
}
@@ -84,14 +84,14 @@ impl DNSChecker {
let records = response.answers();
if records.len() != 1 {
- return Err(CheckDomainError::TargetAAAANotSet);
+ return Err(CheckDomainError::TargetANotSet);
}
- // if the single record isn't a AAAA, or it's not the target AAAA, then return
- // TargetAAAANAMENotSet
+ // if the single record isn't a A, or it's not the target A, then return
+ // TargetANAMENotSet
match records[0].data() {
- Some(RData::AAAA(remote_aaaa)) if remote_aaaa == &self.target_aaaa => (),
- _ => return Err(CheckDomainError::TargetAAAANotSet),
+ Some(RData::A(remote_a)) if remote_a == &self.target_a => (),
+ _ => return Err(CheckDomainError::TargetANotSet),
}
}
diff --git a/src/domain/manager.rs b/src/domain/manager.rs
index c61ddb6..87c7492 100644
--- a/src/domain/manager.rs
+++ b/src/domain/manager.rs
@@ -72,8 +72,8 @@ pub enum SyncWithConfigError {
#[error("already in progress")]
AlreadyInProgress,
- #[error("target AAAA not set")]
- TargetAAAANotSet,
+ #[error("target A/AAAA not set")]
+ TargetANotSet,
#[error("challenge token not set")]
ChallengeTokenNotSet,
@@ -96,7 +96,7 @@ impl From for SyncWithConfigError {
impl From for SyncWithConfigError {
fn from(e: checker::CheckDomainError) -> SyncWithConfigError {
match e {
- checker::CheckDomainError::TargetAAAANotSet => SyncWithConfigError::TargetAAAANotSet,
+ checker::CheckDomainError::TargetANotSet => SyncWithConfigError::TargetANotSet,
checker::CheckDomainError::ChallengeTokenNotSet => {
SyncWithConfigError::ChallengeTokenNotSet
}
diff --git a/src/main.rs b/src/main.rs
index 64565e2..c209fc5 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -29,8 +29,8 @@ struct Cli {
#[arg(long, required = true, env = "DOMIPLY_ORIGIN_STORE_GIT_DIR_PATH")]
origin_store_git_dir_path: path::PathBuf,
- #[arg(long, required = true, env = "DOMIPLY_DOMAIN_CHECKER_TARGET_AAAA")]
- domain_checker_target_aaaa: std::net::Ipv6Addr,
+ #[arg(long, required = true, env = "DOMIPLY_DOMAIN_CHECKER_TARGET_A")]
+ domain_checker_target_a: std::net::Ipv4Addr,
#[arg(long, default_value_t = String::from("1.1.1.1:53"), env = "DOMIPLY_DOMAIN_CHECKER_RESOLVER_ADDR")]
domain_checker_resolver_addr: String,
@@ -115,7 +115,7 @@ fn main() {
let domain_checker = domiply::domain::checker::new(
tokio_runtime.clone(),
- config.domain_checker_target_aaaa,
+ config.domain_checker_target_a,
&config.domain_checker_resolver_addr,
)
.expect("domain checker initialized");
@@ -128,9 +128,9 @@ fn main() {
let service = domiply::service::new(
manager,
- config.domain_checker_target_aaaa,
+ config.domain_checker_target_a,
config.passphrase,
- config.http_domain,
+ config.http_domain.clone(),
);
let service = sync::Arc::new(service);
@@ -153,7 +153,7 @@ fn main() {
tokio_runtime.spawn(async move {
let addr = config.http_listen_addr;
- println!("Listening on {addr}");
+ println!("Listening on http://{}:{}", config.http_domain, addr.port());
let server = hyper::Server::bind(&addr).serve(make_service);
let graceful = server.with_graceful_shutdown(async {
diff --git a/src/service.rs b/src/service.rs
index b0b02cc..afd2f94 100644
--- a/src/service.rs
+++ b/src/service.rs
@@ -17,7 +17,7 @@ type SvcResponse = Result, String>;
#[derive(Clone)]
pub struct Service<'svc> {
domain_manager: sync::Arc,
- target_aaaa: net::Ipv6Addr,
+ target_a: net::Ipv4Addr,
passphrase: String,
http_domain: String,
handlebars: handlebars::Handlebars<'svc>,
@@ -25,13 +25,13 @@ pub struct Service<'svc> {
pub fn new<'svc, 'mgr>(
domain_manager: sync::Arc,
- target_aaaa: net::Ipv6Addr,
+ target_a: net::Ipv4Addr,
passphrase: String,
http_domain: String,
) -> Service<'svc> {
Service {
domain_manager,
- target_aaaa,
+ target_a,
passphrase,
http_domain,
handlebars: self::http_tpl::get().expect("Retrieved Handlebars templates"),
@@ -202,7 +202,7 @@ impl<'svc> Service<'svc> {
struct Response {
domain: domain::Name,
flat_config: util::FlatConfig,
- target_aaaa: net::Ipv6Addr,
+ target_a: net::Ipv4Addr,
challenge_token: String,
}
@@ -227,7 +227,7 @@ impl<'svc> Service<'svc> {
&Response {
domain: args.domain,
flat_config: config.into(),
- target_aaaa: self.target_aaaa,
+ target_a: self.target_a,
challenge_token: config_hash,
},
);
@@ -266,7 +266,7 @@ impl<'svc> Service<'svc> {
Err(domain::manager::SyncWithConfigError::InvalidURL) => Some("Fetching the git repository failed, please double check that you input the correct URL.".to_string()),
Err(domain::manager::SyncWithConfigError::InvalidBranchName) => Some("The git repository does not have a branch of the given name, please double check that you input the correct name.".to_string()),
Err(domain::manager::SyncWithConfigError::AlreadyInProgress) => Some("The configuration of your domain is still in progress, please refresh in a few minutes.".to_string()),
- Err(domain::manager::SyncWithConfigError::TargetAAAANotSet) => Some("The AAAA record is not set correctly on the domain. Please double check that you put the correct value on the record. If the value is correct, then most likely the updated records have not yet propagated. In this case you can refresh in a few minutes to try again.".to_string()),
+ Err(domain::manager::SyncWithConfigError::TargetANotSet) => Some("The A record is not set correctly on the domain. Please double check that you put the correct value on the record. If the value is correct, then most likely the updated records have not yet propagated. In this case you can refresh in a few minutes to try again.".to_string()),
Err(domain::manager::SyncWithConfigError::ChallengeTokenNotSet) => Some("The TXT record is not set correctly on the domain. Please double check that you put the correct value on the record. If the value is correct, then most likely the updated records have not yet propagated. In this case you can refresh in a few minutes to try again.".to_string()),
Err(domain::manager::SyncWithConfigError::Unexpected(e)) => Some(format!("An unexpected error occurred: {e}")),
};
diff --git a/src/service/http_tpl/domain_init.html b/src/service/http_tpl/domain_init.html
index 8475905..a5a883a 100644
--- a/src/service/http_tpl/domain_init.html
+++ b/src/service/http_tpl/domain_init.html
@@ -5,8 +5,8 @@ are two entries you will need to add:
-
- A
AAAA {{ data.domain }}
entry with the value
- {{ data.target_aaaa }}
+ A A {{ data.domain }}
entry with the value
+ {{ data.target_a }}
-
A
TXT _domiply_challenge.{{ data.domain }}
entry with the value
diff --git a/src/service/http_tpl/index.html b/src/service/http_tpl/index.html
index 12df328..5cfacf8 100644
--- a/src/service/http_tpl/index.html
+++ b/src/service/http_tpl/index.html
@@ -47,7 +47,7 @@ the internet, the way it was always intended.
planned but not yet implemented:
- - Support for IPv4 and CNAME records
+ - Support for AAAA and CNAME records
- HTTPS support, with automatic certificate syncing via Let's Encrypt.
-
Support for more backends than just git repositories, including: