Skip to content

Commit 93164f9

Browse files
authored
Merge branch 'TechnitiumSoftware:master' into fix/dhcp-reservation-outside-scope-range
2 parents 6d33b48 + d0484b6 commit 93164f9

14 files changed

Lines changed: 461 additions & 142 deletions

File tree

APIDOCS.md

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5178,6 +5178,8 @@ RESPONSE:
51785178
"webServiceHttpPort": 5380,
51795179
"webServiceEnableHttpUnixSocket": false,
51805180
"webServiceHttpUnixSocket": null,
5181+
"webServiceEnableTlsUnixSocket": false,
5182+
"webServiceTlsUnixSocket": null,
51815183
"webServiceEnableTls": true,
51825184
"webServiceEnableHttp3": false,
51835185
"webServiceHttpToTlsRedirect": false,
@@ -5202,6 +5204,7 @@ RESPONSE:
52025204
"enableDnsOverTcpProxy": false,
52035205
"enableDnsOverHttp": false,
52045206
"enableDnsOverHttpUnixSocket": false,
5207+
"enableDnsOverHttpsUnixSocket": false,
52055208
"enableDnsOverTls": false,
52065209
"enableDnsOverHttps": false,
52075210
"enableDnsOverHttp3": false,
@@ -5211,6 +5214,7 @@ RESPONSE:
52115214
"dnsOverTcpProxyPort": 538,
52125215
"dnsOverHttpPort": 80,
52135216
"dnsOverHttpUnixSocket": null,
5217+
"dnsOverHttpsUnixSocket": null,
52145218
"dnsOverTlsPort": 853,
52155219
"dnsOverHttpsPort": 443,
52165220
"dnsOverQuicPort": 853,
@@ -5349,8 +5353,10 @@ WHERE:
53495353
- `maxConcurrentResolutionsPerCore` (optional, cluster parameter): The maximum number of concurrent async outbound resolutions that should be done per CPU core. Initial value is `100`.
53505354
- `webServiceLocalAddresses` (optional): Local addresses are the network interface IP addresses you want the web service to listen for requests.
53515355
- `webServiceHttpPort` (optional): Specify the TCP port number for the web console and this API web service. Initial value is `5380`.
5352-
- `webServiceEnableHttpUnixSocket` (optional): Set this to `true` to enable Web Service HTTP over Unix socket.
5353-
- `webServiceHttpUnixSocket` (optional): Specify the Unix socket file path for Web Service. Ensure that the DNS Server has read+write permissions to the parent directory to be able to create the Unix Socket file.
5356+
- `webServiceEnableHttpUnixSocket` (optional): Set this to `true` to enable Web Service HTTP over Unix Domain Socket (UDS).
5357+
- `webServiceHttpUnixSocket` (optional): Specify the Unix Domain Sockets (UDS) file path for HTTP Web Service. Ensure that the DNS Server has read+write permissions to the parent directory to be able to create the UDS file.
5358+
- `webServiceEnableTlsUnixSocket` (optional): Set this to `true` to enable Web Service HTTPS over Unix Domain Socket (UDS).
5359+
- `webServiceTlsUnixSocket` (optional): Specify the Unix Domain Sockets (UDS) file path for HTTPS Web Service. Ensure that the DNS Server has read+write permissions to the parent directory to be able to create the UDS file.
53545360
- `webServiceEnableTls` (optional): Set this to `true` to start the HTTPS service to access web service.
53555361
- `webServiceEnableHttp3` (optional): Set this to `true` to enable HTTP/3 protocol for the web service.
53565362
- `webServiceHttpToTlsRedirect` (optional): Set this option to `true` to enable HTTP to HTTPS Redirection.
@@ -5365,15 +5371,17 @@ WHERE:
53655371
- `enableDnsOverUdpProxy` (optional): Enable this option to accept DNS-over-UDP-PROXY requests. It implements the [PROXY Protocol](https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) for both version 1 & 2 over UDP datagram. Configure the `dnsReverseProxyNetworkACL` option to allow only requests coming from your reverse proxy server.
53665372
- `enableDnsOverTcpProxy` (optional): Enable this option to accept DNS-over-TCP-PROXY requests. It implements the [PROXY Protocol](https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) for both version 1 & 2 over TCP connection. Configure the `dnsReverseProxyNetworkACL` option to allow only requests coming from your reverse proxy server.
53675373
- `enableDnsOverHttp` (optional): Enable this option to accept DNS-over-HTTP requests. It must be used with a TLS terminating reverse proxy like nginx. Configure the `dnsReverseProxyNetworkACL` option to allow only requests coming from your reverse proxy server. Enabling this option also allows automatic TLS certificate renewal with HTTP challenge (webroot) for DNS-over-HTTPS service.
5368-
- `enableDnsOverHttpUnixSocket` (optional): Enable this option to accept DNS-over-HTTP requests over Unix socket. It must be used with a TLS terminating reverse proxy like nginx.
5374+
- `enableDnsOverHttpUnixSocket` (optional): Enable this option to accept DNS-over-HTTP requests over Unix Domain Sockets (UDS).
5375+
- `enableDnsOverHttpsUnixSocket` (optional): Enable this option to accept DNS-over-HTTPS requests over Unix Domain Sockets (UDS).
53695376
- `enableDnsOverTls` (optional): Enable this option to accept DNS-over-TLS requests.
53705377
- `enableDnsOverHttps` (optional): Enable this option to accept DNS-over-HTTPS requests.
53715378
- `enableDnsOverQuic` (optional): Enable this option to accept DNS-over-QUIC requests.
53725379
- `enableDnsOverHttpHelpRedirect` (optional): When this option is enabled, if a user visits the `/dns-query` DNS-over-HTTP(s) URL path using a web browser, the web browser will be redirected to `/` URL path to display the help page for the DNS-over-HTTP(s) service.
53735380
- `dnsOverUdpProxyPort` (optional): The UDP port number for DNS-over-UDP-PROXY protocol. Initial value is `538`.
53745381
- `dnsOverTcpProxyPort` (optional): The TCP port number for DNS-over-TCP-PROXY protocol. Initial value is `538`.
53755382
- `dnsOverHttpPort` (optional): The TCP port number for DNS-over-HTTP protocol. Initial value is `80`.
5376-
- `dnsOverHttpUnixSocket` (optional): Specify the Unix socket file path for DNS-over-HTTP protocol service. Ensure that the DNS Server has read+write permissions to the parent directory to be able to create the Unix Socket file.
5383+
- `dnsOverHttpUnixSocket` (optional): Specify the Unix Domain Sockets (UDS) file path for DNS-over-HTTP protocol service. Ensure that the DNS Server has read+write permissions to the parent directory to be able to create the UDS file.
5384+
- `dnsOverHttpsUnixSocket` (optional): Specify the Unix Domain Sockets (UDS) file path for DNS-over-HTTPS protocol service. Ensure that the DNS Server has read+write permissions to the parent directory to be able to create the UDS file.
53775385
- `dnsOverTlsPort` (optional): The TCP port number for DNS-over-TLS protocol. Initial value is `853`.
53785386
- `dnsOverHttpsPort` (optional): The TCP port number for DNS-over-HTTPS protocol. Initial value is `443`.
53795387
- `dnsOverQuicPort` (optional): The UDP port number for DNS-over-QUIC protocol. Initial value is `853`.

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# Technitium DNS Server Change Log
22

3+
## Version 15.4
4+
Release Date: 11 July 2026
5+
6+
- Fixed issue with UDP socket binding that cause response routing issues for a few of deployment scenarios.
7+
- Fixed issues with RFC compliance checks causing issues with resolution and zone transfer in some cases.
8+
- Added support for Unix Domain Sockets (UDS) for Web Service over HTTPS and DNS-over-HTTPS optional protocol.
9+
- Other minor bug fixes and improvements.
10+
311
## Version 15.3
412
Release Date: 5 July 2026
513

DnsServerApp/DnsServerApp.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<TargetFramework>net10.0</TargetFramework>
88
<Nullable>enable</Nullable>
99
<ApplicationIcon>logo2.ico</ApplicationIcon>
10-
<Version>15.3</Version>
10+
<Version>15.4</Version>
1111
<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>
1212
<Company>Technitium</Company>
1313
<Product>Technitium DNS Server</Product>

DnsServerApp/install.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,9 @@ if [ "$(ps --no-headers -o comm 1 | tr -d '\n')" = "systemd" ]
181181
then
182182
if [ -f "/etc/systemd/system/dns.service" ]
183183
then
184+
echo "Configuring permissions..."
185+
chown -R $serviceUser:$serviceUser $dnsDir $dnsConfig $dnsLog >> $installLog 2>&1
186+
184187
echo "Restarting systemd service..."
185188
systemctl restart dns.service >> $installLog 2>&1
186189
else
@@ -216,6 +219,9 @@ elif [ -x "/sbin/rc-service" ]
216219
then
217220
if [ -f "/etc/init.d/dns" ]
218221
then
222+
echo "Configuring permissions..."
223+
chown -R $serviceUser:$serviceUser $dnsDir $dnsConfig $dnsLog >> $installLog 2>&1
224+
219225
echo "Restarting OpenRC service..."
220226
rc-service dns stop >> $installLog 2>&1
221227
rc-service dns start >> $installLog 2>&1

DnsServerCore/Dns/Applications/DnsApplicationManager.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,9 @@ public async Task<DnsApplication> InstallApplicationAsync(string applicationName
374374
if (_applications.ContainsKey(applicationName))
375375
throw new DnsServerException("DNS application already exists: " + applicationName);
376376

377-
string applicationFolder = Path.Combine(_appsPath, applicationName);
377+
string applicationFolder = Path.GetFullPath(Path.Combine(_appsPath, applicationName));
378+
if (!applicationFolder.StartsWith(_appsPath + Path.DirectorySeparatorChar))
379+
throw new DnsServerException("The application name is invalid: " + applicationName);
378380

379381
if (Directory.Exists(applicationFolder))
380382
Directory.Delete(applicationFolder, true);
@@ -538,7 +540,7 @@ public async Task<DnsApplication> DownloadAndUpdateAppAsync(string applicationNa
538540
using (HttpClient http = new HttpClient(handler))
539541
{
540542
HttpResponseMessage httpResponse = await http.GetAsync(uri, HttpCompletionOption.ResponseHeadersRead);
541-
543+
542544
httpResponse.EnsureSuccessStatusCode();
543545

544546
await using (Stream httpStream = await httpResponse.Content.ReadAsStreamAsync())

0 commit comments

Comments
 (0)