Add Opt-Out of unique hostname enforcing

This commit is contained in:
Jöran Malek 2024-01-06 23:57:15 +01:00
parent a12471c9e5
commit fe275467e8
3 changed files with 18 additions and 6 deletions

View file

@ -2,6 +2,10 @@ using System.Net;
using System.Net.NetworkInformation; using System.Net.NetworkInformation;
using System.Net.Sockets; using System.Net.Sockets;
using Microsoft.Extensions.Options;
using pdns_dhcp.Options;
using Timeout = System.Threading.Timeout; using Timeout = System.Threading.Timeout;
namespace pdns_dhcp.Dns; namespace pdns_dhcp.Dns;
@ -10,10 +14,16 @@ public class DnsRepository
{ {
private static ReadOnlySpan<int> Lifetimes => [600, 3600]; private static ReadOnlySpan<int> Lifetimes => [600, 3600];
private readonly PowerDnsOptions _options;
private readonly ReaderWriterLockSlim _recordLock = new(); private readonly ReaderWriterLockSlim _recordLock = new();
private readonly List<DnsRecord> _records = []; private readonly List<DnsRecord> _records = [];
private readonly SemaphoreSlim _syncLock = new(1, 1); private readonly SemaphoreSlim _syncLock = new(1, 1);
public DnsRepository(IOptions<PowerDnsOptions> options)
{
_options = options.Value;
}
public List<DnsRecord> Find(Predicate<DnsRecord> query) public List<DnsRecord> Find(Predicate<DnsRecord> query)
{ {
bool enteredLock = false; bool enteredLock = false;
@ -124,11 +134,10 @@ public class DnsRepository
{ {
list.AddLast(i); list.AddLast(i);
} }
// Opt-In to disallow duplicate FQDN? else if (_options.UniqueHostnames && StringComparer.OrdinalIgnoreCase.Equals(record.FQDN, query.FQDN))
//else if (StringComparer.InvariantCultureIgnoreCase.Equals(record.FQDN, query.FQDN)) {
//{ list.AddLast(i);
// list.AddLast(i); }
//}
} }
return list; return list;

View file

@ -2,7 +2,9 @@ namespace pdns_dhcp.Options;
public class PowerDnsOptions public class PowerDnsOptions
{ {
public PowerDnsListenerOptions Listener { get; set; } = default!; public PowerDnsListenerOptions Listener { get; init; } = default!;
public bool UniqueHostnames { get; init; } = true;
} }
public record class PowerDnsListenerOptions(string Socket); public record class PowerDnsListenerOptions(string Socket);

View file

@ -10,6 +10,7 @@
} }
}, },
"PowerDns": { "PowerDns": {
"UniqueHostnames": true,
"Listener": { "Listener": {
"Socket": "/run/pdns-dhcp/pdns.sock" "Socket": "/run/pdns-dhcp/pdns.sock"
} }