summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock2
-rw-r--r--Cargo.toml2
-rw-r--r--Dockerfile2
-rwxr-xr-xdeploy.sh11
-rw-r--r--src/main.rs69
5 files changed, 41 insertions, 45 deletions
diff --git a/Cargo.lock b/Cargo.lock
index c9c1fa7..56e99b5 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -237,7 +237,7 @@ dependencies = [
[[package]]
name = "dns-server"
-version = "0.1.10"
+version = "0.1.12"
dependencies = [
"deadpool-postgres",
"dotenvy",
diff --git a/Cargo.toml b/Cargo.toml
index 0714f3e..06b7b4d 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "dns-server"
-version = "0.1.10"
+version = "0.1.12"
edition = "2021"
license = "MIT"
diff --git a/Dockerfile b/Dockerfile
index 4ff25b5..71c0125 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,4 @@
-FROM rust:1.62-bullseye AS builder
+FROM rust:1.66-bullseye AS builder
WORKDIR /src/
RUN cargo init --bin
COPY Cargo.toml Cargo.lock /src/
diff --git a/deploy.sh b/deploy.sh
deleted file mode 100755
index 191d66b..0000000
--- a/deploy.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/env bash
-
-cargo build --release
-
-for ns in ns{1..4}.fdns.dev; do
- scp target/release/dns-server root@$ns:/tmp/coredns
- ssh root@$ns << EOF
- systemctl stop coredns && mv /tmp/coredns /usr/local/sbin/coredns && systemctl start coredns
-EOF
-
-done
diff --git a/src/main.rs b/src/main.rs
index af87437..2b66e5a 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -70,13 +70,15 @@ async fn main() {
let pg_pool = Arc::new(Pool::builder(mgr).max_size(64).build().unwrap());
log::info!("Connected to data postgres");
- let metrics_pool = Arc::new(
- PgPoolOptions::new()
- .max_connections(12)
- .connect(&env::var("METRICS_URL").expect("METRICS_URL not set"))
- .await
- .unwrap(),
- );
+ let metrics_pool = Arc::new(None);
+
+ // let metrics_pool = Arc::new(Some(
+ // PgPoolOptions::new()
+ // .max_connections(12)
+ // .connect(&env::var("METRICS_URL").expect("METRICS_URL not set"))
+ // .await
+ // .unwrap(),
+ // ));
log::info!("Connected to metrics postgres");
let addr = env::var("BIND_ADDR")
@@ -109,26 +111,32 @@ async fn main() {
log::trace!("Spawning new task");
tokio::spawn(async move {
let metrics = handle_message(raw_message, &pg_pool, sender).await;
- log::trace!("Packet handled, logging metrics");
- if let Ok(metrics) = metrics {
- let hostname = match hostname::get() {
- Ok(hostname) => hostname.to_str().unwrap_or("unknown").to_owned(),
- Err(_) => String::from("unknown"),
- };
- if metrics.duration_us > 5 * 1000 {
- log::warn!("Query took over 5ms: {} {}", metrics.qname, metrics.qtype)
- }
- if let Err(e) = sqlx::query(&INSERT_METRICS_SQL)
- .bind(&metrics.source_ip)
- .bind(&metrics.qname)
- .bind(&metrics.qtype)
- .bind(&metrics.rcode)
- .bind(metrics.duration_us)
- .bind(hostname)
- .execute(&*metrics_pool)
- .await
- {
- log::error!("{e}");
+ if let Some(metrics_pool) = &*metrics_pool {
+ log::trace!("Packet handled, logging metrics");
+ if let Ok(metrics) = metrics {
+ let hostname = match hostname::get() {
+ Ok(hostname) => hostname.to_str().unwrap_or("unknown").to_owned(),
+ Err(_) => String::from("unknown"),
+ };
+ if metrics.duration_us > 5 * 1000 {
+ log::warn!(
+ "Query took over 5ms: {} {}",
+ metrics.qname,
+ metrics.qtype
+ )
+ }
+ if let Err(e) = sqlx::query(&INSERT_METRICS_SQL)
+ .bind(&metrics.source_ip)
+ .bind(&metrics.qname)
+ .bind(&metrics.qtype)
+ .bind(&metrics.rcode)
+ .bind(metrics.duration_us)
+ .bind(hostname)
+ .execute(metrics_pool)
+ .await
+ {
+ log::error!("{e}");
+ }
}
}
});
@@ -184,7 +192,7 @@ async fn handle_message(
log::trace!("[{}] Query for {qname} completed", message.id());
// TODO: CNAME resolution
- message.add_answers(randomize_records(
+ message.add_answers(
records
.iter()
.filter(|r| r.record_type == qtype)
@@ -239,9 +247,8 @@ async fn handle_message(
})
.clone()
})
- .filter(|r| r.data().is_some())
- .collect(),
- ));
+ .filter(|r| r.data().is_some()),
+ );
log::trace!("[{}] Answers set", message.id());
if message.answers().is_empty() {