Aded ranking of resolvers by a weight value

This commit is contained in:
Slatian 2023-08-05 23:19:53 +02:00
parent 55897585ff
commit 5c7d880733
5 changed files with 16 additions and 7 deletions

View File

@ -65,6 +65,7 @@ burst = 15
display_name = "Digitalcourage 3" display_name = "Digitalcourage 3"
info_url = "https://digitalcourage.de/support/zensurfreier-dns-server" info_url = "https://digitalcourage.de/support/zensurfreier-dns-server"
aliases = ["dc","dc3","digitalcourage3"] aliases = ["dc","dc3","digitalcourage3"]
weight = 900
servers = ["5.9.164.112:853","[2a01:4f8:251:554::2]:853"] servers = ["5.9.164.112:853","[2a01:4f8:251:554::2]:853"]
protocol = "tls" protocol = "tls"

View File

@ -245,7 +245,8 @@ async fn main() {
dns_resolver_selectables.push(Selectable { dns_resolver_selectables.push(Selectable {
id: "default".to_string(), id: "default".to_string(),
name: "System".to_string() name: "System".to_string(),
weight: 1000,
}); });
//FIXME: Not release ready,must be configurable and have better error handling. //FIXME: Not release ready,must be configurable and have better error handling.
@ -256,7 +257,8 @@ async fn main() {
).unwrap(); ).unwrap();
dns_resolver_selectables.push(Selectable { dns_resolver_selectables.push(Selectable {
id: "quad9".to_string(), id: "quad9".to_string(),
name: "Quad9".to_string() name: "Quad9".to_string(),
weight: 500
}); });
println!("Initalizing Google resolver ..."); println!("Initalizing Google resolver ...");
let google_resolver = TokioAsyncResolver::tokio( let google_resolver = TokioAsyncResolver::tokio(
@ -265,7 +267,8 @@ async fn main() {
).unwrap(); ).unwrap();
dns_resolver_selectables.push(Selectable { dns_resolver_selectables.push(Selectable {
id: "google".to_string(), id: "google".to_string(),
name: "Google".to_string() name: "Google".to_string(),
weight: 10,
}); });
println!("Initalizing Cloudflare resolver ..."); println!("Initalizing Cloudflare resolver ...");
let cloudflare_resolver = TokioAsyncResolver::tokio( let cloudflare_resolver = TokioAsyncResolver::tokio(
@ -274,7 +277,8 @@ async fn main() {
).unwrap(); ).unwrap();
dns_resolver_selectables.push(Selectable { dns_resolver_selectables.push(Selectable {
id: "cloudflare".to_string(), id: "cloudflare".to_string(),
name: "Cloudflare".to_string() name: "Cloudflare".to_string(),
weight: 20,
}); });
let mut dns_resolver_map: HashMap<String,TokioAsyncResolver> = HashMap::new(); let mut dns_resolver_map: HashMap<String,TokioAsyncResolver> = HashMap::new();
@ -289,6 +293,7 @@ async fn main() {
dns_resolver_selectables.push(Selectable { dns_resolver_selectables.push(Selectable {
id: key.clone(), id: key.clone(),
name: resolver_config.display_name.clone(), name: resolver_config.display_name.clone(),
weight: resolver_config.weight,
}); });
} }
@ -311,6 +316,7 @@ async fn main() {
config: config.clone(), config: config.clone(),
}); });
dns_resolver_selectables.sort_by(|a,b| b.weight.cmp(&a.weight));
let derived_config = DerivedConfiguration { let derived_config = DerivedConfiguration {
dns_resolver_selectables: dns_resolver_selectables, dns_resolver_selectables: dns_resolver_selectables,
}; };

View File

@ -1,4 +1,5 @@
use serde::{Deserialize,Serialize}; use serde::{Deserialize,Serialize};
/* Response format */ /* Response format */
#[derive(Deserialize, Serialize, Clone, Copy)] #[derive(Deserialize, Serialize, Clone, Copy)]
@ -45,5 +46,6 @@ pub struct QuerySettings {
pub struct Selectable { pub struct Selectable {
pub id: String, pub id: String,
pub name: String, pub name: String,
pub weight: i32,
} }

View File

@ -4,7 +4,7 @@
{% block title %}dig {{ data.query }}{% endblock %} {% block title %}dig {{ data.query }}{% endblock %}
{% block og_title %}dig {{ data.query }}{% endblock %} {% block og_title %}dig {{ data.query }}{% endblock %}
{% block h1 %}dig <code>{{ helper::breadcrumb_domain(extra=extra, name=data.query) }}</code>{% endblock %} {% block h1 %}dig <code>{{ helper::breadcrumb_domain(extra=extra, name=data.query) }}</code> via <a href="{{extra.base_url}}/dns_resolver/{{data.result.used_dns_resolver}}">{{data.result.used_dns_resolver}}</a>{% endblock %}
{% block og_path %}/dig/{{ data.query | urlencode_strict }}{% endblock %} {% block og_path %}/dig/{{ data.query | urlencode_strict }}{% endblock %}
@ -24,7 +24,7 @@
{% set r = data.result.records %} {% set r = data.result.records %}
<section> <section>
<h2>DNS Records via {{data.result.used_dns_resolver}}</h2> <h2>DNS Records</h2>
{% if r.nxdomain %} {% if r.nxdomain %}
<p class="error box">Our DNS-Server claims that this domain doesn't exist, there shouldn't be any results.</p> <p class="error box">Our DNS-Server claims that this domain doesn't exist, there shouldn't be any results.</p>

View File

@ -31,7 +31,7 @@
{%- set_global i = i+1 -%} {%- set_global i = i+1 -%}
{% endfor %} {% endfor %}
{% endmacro breadcrumb_domain %} {%- endmacro breadcrumb_domain %}
{% macro ip_info(ip_info) -%} {% macro ip_info(ip_info) -%}
{{ip_info.scope | title}} {{ip_info.cast | title}} IPv{% if ip_info.is_v6_address %}6{% else %}4{% endif %} {{ip_info.scope | title}} {{ip_info.cast | title}} IPv{% if ip_info.is_v6_address %}6{% else %}4{% endif %}