Changed format of DNS-listen options. Added DNS-thread count options to config.

This commit is contained in:
Revertron
2021-03-06 22:54:17 +01:00
parent ac915a1e92
commit ce212ab749
5 changed files with 21 additions and 20 deletions
+2 -2
View File
@@ -10,7 +10,7 @@ peers = ["test2-ip4.alfis.name:4244", "test2-ip6.alfis.name:4244"]
# DNS server options # DNS server options
[dns] [dns]
host = "0.0.0.0" listen = "0.0.0.0:5300"
port = 5300 threads = 20
#AdGuard DNS servers to filter ads and trackers #AdGuard DNS servers to filter ads and trackers
forwarders = ["94.140.14.14:53", "94.140.15.15:53"] forwarders = ["94.140.14.14:53", "94.140.15.15:53"]
+3 -6
View File
@@ -45,8 +45,7 @@ pub struct ServerContext {
pub cache: SynchronizedCache, pub cache: SynchronizedCache,
pub filters: Vec<Box<dyn DnsFilter + Sync + Send>>, pub filters: Vec<Box<dyn DnsFilter + Sync + Send>>,
pub client: Box<dyn DnsClient + Sync + Send>, pub client: Box<dyn DnsClient + Sync + Send>,
pub dns_host: String, pub dns_listen: String,
pub dns_port: u16,
pub api_port: u16, pub api_port: u16,
pub resolve_strategy: ResolveStrategy, pub resolve_strategy: ResolveStrategy,
pub allow_recursive: bool, pub allow_recursive: bool,
@@ -70,8 +69,7 @@ impl ServerContext {
cache: SynchronizedCache::new(), cache: SynchronizedCache::new(),
filters: Vec::new(), filters: Vec::new(),
client: Box::new(DnsNetworkClient::new(10000 + (rand::random::<u16>() % 20000))), client: Box::new(DnsNetworkClient::new(10000 + (rand::random::<u16>() % 20000))),
dns_host: String::from("0.0.0.0"), dns_listen: String::from("0.0.0.0:53"),
dns_port: 53,
api_port: 5380, api_port: 5380,
resolve_strategy: ResolveStrategy::Recursive, resolve_strategy: ResolveStrategy::Recursive,
allow_recursive: true, allow_recursive: true,
@@ -125,8 +123,7 @@ pub mod tests {
cache: SynchronizedCache::new(), cache: SynchronizedCache::new(),
filters: Vec::new(), filters: Vec::new(),
client: Box::new(DnsStubClient::new(callback)), client: Box::new(DnsStubClient::new(callback)),
dns_host: String::from("0.0.0.0"), dns_listen: String::from("0.0.0.0:53"),
dns_port: 53,
api_port: 5380, api_port: 5380,
resolve_strategy: ResolveStrategy::Recursive, resolve_strategy: ResolveStrategy::Recursive,
allow_recursive: true, allow_recursive: true,
+2 -2
View File
@@ -176,7 +176,7 @@ impl DnsServer for DnsUdpServer {
/// This method takes ownership of the server, preventing the method from being called multiple times. /// This method takes ownership of the server, preventing the method from being called multiple times.
fn run_server(self) -> Result<()> { fn run_server(self) -> Result<()> {
// Bind the socket // Bind the socket
let socket = UdpSocket::bind((self.context.dns_host.as_str(), self.context.dns_port))?; let socket = UdpSocket::bind(self.context.dns_listen.as_str())?;
// Spawn threads for handling requests // Spawn threads for handling requests
for thread_id in 0..self.thread_count { for thread_id in 0..self.thread_count {
@@ -291,7 +291,7 @@ impl DnsTcpServer {
impl DnsServer for DnsTcpServer { impl DnsServer for DnsTcpServer {
fn run_server(mut self) -> Result<()> { fn run_server(mut self) -> Result<()> {
let socket = TcpListener::bind((self.context.dns_host.as_str(), self.context.dns_port))?; let socket = TcpListener::bind(self.context.dns_listen.as_str())?;
// Spawn threads for handling requests, and create the channels // Spawn threads for handling requests, and create the channels
for thread_id in 0..self.thread_count { for thread_id in 0..self.thread_count {
+3 -4
View File
@@ -140,14 +140,14 @@ fn start_dns_server(context: &Arc<Mutex<Context>>, settings: &Settings) {
let server_context = create_server_context(context.clone(), &settings); let server_context = create_server_context(context.clone(), &settings);
if server_context.enable_udp { if server_context.enable_udp {
let udp_server = DnsUdpServer::new(server_context.clone(), 20); let udp_server = DnsUdpServer::new(server_context.clone(), settings.dns.threads);
if let Err(e) = udp_server.run_server() { if let Err(e) = udp_server.run_server() {
error!(target: LOG_TARGET_MAIN, "Failed to bind UDP listener: {:?}", e); error!(target: LOG_TARGET_MAIN, "Failed to bind UDP listener: {:?}", e);
} }
} }
if server_context.enable_tcp { if server_context.enable_tcp {
let tcp_server = DnsTcpServer::new(server_context.clone(), 20); let tcp_server = DnsTcpServer::new(server_context.clone(), settings.dns.threads);
if let Err(e) = tcp_server.run_server() { if let Err(e) = tcp_server.run_server() {
error!(target: LOG_TARGET_MAIN, "Failed to bind TCP listener: {:?}", e); error!(target: LOG_TARGET_MAIN, "Failed to bind TCP listener: {:?}", e);
} }
@@ -468,8 +468,7 @@ fn generate_key(difficulty: usize, mining: Arc<AtomicBool>) -> Option<Keystore>
fn create_server_context(context: Arc<Mutex<Context>>, settings: &Settings) -> Arc<ServerContext> { fn create_server_context(context: Arc<Mutex<Context>>, settings: &Settings) -> Arc<ServerContext> {
let mut server_context = ServerContext::new(); let mut server_context = ServerContext::new();
server_context.allow_recursive = true; server_context.allow_recursive = true;
server_context.dns_host = settings.dns.host.clone(); server_context.dns_listen = settings.dns.listen.clone();
server_context.dns_port = settings.dns.port;
server_context.resolve_strategy = match settings.dns.forwarders.is_empty() { server_context.resolve_strategy = match settings.dns.forwarders.is_empty() {
true => { ResolveStrategy::Recursive } true => { ResolveStrategy::Recursive }
false => { ResolveStrategy::Forward { upstreams: settings.dns.forwarders.clone() } } false => { ResolveStrategy::Forward { upstreams: settings.dns.forwarders.clone() } }
+11 -6
View File
@@ -46,18 +46,23 @@ impl Settings {
#[derive(Clone, Debug, Serialize, Deserialize)] #[derive(Clone, Debug, Serialize, Deserialize)]
pub struct Dns { pub struct Dns {
#[serde(default = "default_host")] #[serde(default = "default_listen")]
pub host: String, pub listen: String,
pub port: u16, #[serde(default = "default_threads")]
pub threads: usize,
pub forwarders: Vec<String> pub forwarders: Vec<String>
} }
impl Default for Dns { impl Default for Dns {
fn default() -> Self { fn default() -> Self {
Dns { host: String::from("0.0.0.0"), port: 53, forwarders: Vec::new() } Dns { listen: String::from("0.0.0.0:53"), threads: 20, forwarders: Vec::new() }
} }
} }
fn default_host() -> String { fn default_listen() -> String {
String::from("0.0.0.0") String::from("0.0.0.0:53")
}
fn default_threads() -> usize {
20
} }