550 Commits
Author SHA1 Message Date
Shreyas Zare 19cf080bcf app store json updated for v15.6.1 release. 2026-10-11 20:41:02 +05:30
Shreyas Zare 694b25c023 app assembly version updated for release. 2026-10-11 20:40:38 +05:30
Shreyas Zare ff7c0473bd BlockPage: Updated cert generation code to add Enhanced Key Usage extension. 2026-10-10 14:55:33 +05:30
Shreyas Zare 8d75247a11 app store json updated for v15.6 release. 2026-10-03 19:01:47 +05:30
Shreyas Zare d68047b349 app asssembly version updated for release. 2026-10-03 19:01:15 +05:30
Shreyas Zare bb4bca44a2 BlockPage: Updated ServeDefaultPageAsync() to fix XSS issue. 2026-10-03 13:27:41 +05:30
Shreyas Zare 96dcc3e263 app store json updated for v15.5.1 release. 2026-09-26 16:27:20 +05:30
Shreyas Zare 55761f9cdc app assembly version updated for release. 2026-09-26 16:26:51 +05:30
Shreyas Zare b357a0841b AdvancedBlocking: Updated ProcessRequestAsync() to return RA flag based on AllowTxtBlockingReport option. 2026-09-26 12:00:50 +05:30
Shreyas Zare e8305755df fixed issue with string comparison. 2026-09-26 11:50:29 +05:30
Shreyas Zare a418cd7f24 app store updated for v15.5 release. 2026-09-19 20:02:26 +05:30
Shreyas Zare c9966d0efc app assembly version updated for release. 2026-09-19 20:01:55 +05:30
Shreyas Zare 95813cc479 QueryLogsSqlServer: Updated table to use BIGINT for primary key. 2026-09-19 13:26:37 +05:30
Shreyas Zare be2cb22c14 QueryLogsPostgreSql: Updated table to use BIGSERIAL for primary key. 2026-09-19 13:25:56 +05:30
Shreyas Zare e8ee6674d3 QueryLogsMySql: Updated table to use BIGINT primary key. 2026-09-19 13:25:07 +05:30
Shreyas Zare c1a0e93821 LogExporter: minor changes. 2026-09-19 13:24:20 +05:30
Shreyas Zare a32b011909 LogExporter: Updated HttpExportStrategy.CustomHttpClient class to use HttpClientNetworkHandler to apply DNS server settings. 2026-09-19 13:23:42 +05:30
Shreyas Zare 87e10678d7 AdvancedForwarding: updated ProcessRequestAsync() to check if forwarders are available. 2026-09-19 13:22:09 +05:30
Shreyas Zare 0e635837bd AdvancedBlocking: Updated ProcessRequestAsync() to hide indicators of blocking to prevent issues with certain clients. Updated ReadListFile() to ensure that line read is in hosts file format to avoid issues with adp lists. 2026-09-19 13:20:10 +05:30
Zafer Balkan 084c7633fb Fixed additional space breking EDE logging (#2142) 2026-09-12 15:47:21 +05:30
Shreyas Zare 85b36b844a WildIp: code refactoring changes done. 2026-08-29 17:48:57 +05:30
Shreyas Zare b4c936ee91 AdvancedForwarding: Updated the app to check if qname in request is locally served when forwarding is being done for "*" wildcard domain. 2026-08-29 17:45:55 +05:30
Marty Cannon e473b15bc8 Add hexadecimal IPv4 support to Wild IP app (#2056) 2026-07-25 17:12:52 +05:30
Dае Еuнша 98554b2a7e Query Logs (PostgreSQL): strip null bytes from answer field before insert (#2049)
* Strip null bytes from qname and answer fields before PostgreSQL insert

DNS query data can contain null bytes (0x00) from malformed or adversarial
packets. PostgreSQL rejects these in text/varchar columns, causing batch
insert failures with Npgsql.PostgresException (22021).

Sanitize by calling .Replace("\0", "") on qname and answer values in
BulkInsertLogsAsync before passing them as Npgsql parameters.

* Strip null bytes from string fields in MySQL, SQL Server, and SQLite query log apps

Same fix applied to the remaining database logger apps for consistency.
All four apps (PostgreSQL, MySQL, SQL Server, SQLite) now sanitize
null bytes from qname and answer fields before insertion.

* Revert "Strip null bytes from string fields in MySQL, SQL Server, and SQLite query log apps"

This reverts commit 17f25e3a83.

* Remove unnecessary qname sanitization

QNAME cannot contain null bytes per DNS wire format. Only the answer
field (from TXT record RDATA) is affected.
2026-07-25 16:45:09 +05:30
Shreyas Zare 08fe8172bf app store json updated 2026-07-05 17:20:15 +05:30
Shreyas Zare ff316ed0d2 app assembly version updated for release. 2026-07-05 17:19:41 +05:30
Shreyas Zare 5ff2c06aed QueryLogsSqlite: minor changes. 2026-07-05 15:43:21 +05:30
Shreyas Zare c457f0f98e GeoDistance: implemented nullable. 2026-07-05 15:42:48 +05:30
Shreyas Zare 3bd7d4e2fc GeoCountry: Implemented group option in config to allow creating custom group entries to use with APP record json config. Implemented nullable. 2026-07-05 15:41:55 +05:30
Shreyas Zare 73eb0663bf GeoContinent: Implemented group option in config to allow creating custom group entries to use with APP record json config. Implemented nullable. 2026-07-05 15:40:58 +05:30
Shreyas Zare 429bf1a20a FilterAaaa: implemented nullable. 2026-07-05 15:38:38 +05:30
Shreyas Zare a33b863781 Failover: implemented nullable. 2026-07-05 15:18:12 +05:30
Shreyas Zare 73cb6b83c9 DropRequests: implemented nullable. 2026-07-05 15:14:18 +05:30
Shreyas Zare f0328af11b DnsBlockList: implemented nullable. 2026-07-05 15:13:58 +05:30
Shreyas Zare 8fed64f258 AdvancedForwarding: implemented nullable and code refactoring changes done. 2026-07-05 15:13:02 +05:30
Shreyas Zare 543b59c925 AdvancedBlocking: implemented nullable. 2026-07-05 15:12:17 +05:30
Shreyas Zare 6bf66a8549 minor changes and code refactoring done. 2026-06-27 18:47:22 +05:30
Roy Hagland 7db87a45ed BlockPageApp/IDnsServer: fix wrong group shown in blocking info (#1913)
When a client hits the block page, the Block Page App makes a secondary
DNS query to retrieve the EDE blocking info to display (group name,
blocklist URL, etc.). This query went through DirectQueryAsync which
hardcodes IPENDPOINT_ANY_0 (0.0.0.0) as the remote endpoint.

The Advanced Blocking App's networkGroupMap matched 0.0.0.0 against the
catch-all entry, so the blocking info re-query always returned the
catch-all group's response - meaning the group name displayed on the
block page was wrong even though the original block was applied correctly
against the right group.

Added IDnsServer.DirectQueryAsync(DnsDatagram, IPEndPoint, ...) so callers
can supply the real client endpoint. Updated BlockPageApp to pass the
HTTP connection's remote endpoint for the blocking info re-query, so the
correct group is reflected on the page.
2026-06-27 18:30:59 +05:30
Shreyas Zare 2450fc1217 BlockPage: Updated StartWebServerAsync() to support online signing with ca certs for both rsa and ecdsa algorithms, updated implementation to do signing task in a single thread to prevent duplicate siging, and code refactorign changes done. Updated ServeDefaultPageAsync() to cache index page content and auto reload it when file last modified changes. 2026-06-27 18:24:58 +05:30
Roy Hagland e86a47dba2 BlockPageApp: fix three bugs in Online Certificate Signing (#1897)
* BlockPageApp: fix three bugs in Online Certificate Signing

Pass CA cert as additional cert in SslStreamCertificateContext so the
full chain is included in the TLS handshake for per-domain certs.
Previously null was passed, causing chain validation failures on
clients that did not already have the CA cached.

Clamp certNotBefore to the CA cert NotBefore. The code backdates
per-domain certs by 30 minutes for clock skew tolerance, but if the CA
was created within the last 30 minutes this fell before the CA own
NotBefore and threw ArgumentException, silently falling back to
serving the CA cert as the server cert for up to 30 minutes.

Use X509SignatureGenerator overload of CertificateRequest.Create so
that ECC and ECDSA CA certs are supported. The previous overload
required the CA and CSR to use the same key algorithm, so any ECC CA
failed with ArgumentException.

* BlockPageApp: support {BLOCKING-INFO} substitution when serving from wwwroot

When serveBlockPageFromWebServerRoot is enabled, requests to / and /index.html
were served directly by the static files middleware, bypassing ServeDefaultPageAsync
entirely so {BLOCKING-INFO} was never substituted and the raw placeholder appeared
in the page.

Fix: an interceptor middleware registered before UseStaticFiles catches GET requests
to / and /index.html and routes them through ServeDefaultPageAsync, which now reads
the content from the wwwroot index.html file on disk before performing the substitution.

The default wwwroot/index.html example is updated to include {BLOCKING-INFO} so users
customising the block page can see how to use it.
2026-06-27 17:53:57 +05:30
Shreyas Zare fc42e58672 FilterAaaa: updated response to use the original response tag value. 2026-06-27 11:56:30 +05:30
Shreyas Zare 56ef2121c0 AdvancedBlocking: Updated DownloadListFileAsync() to set ua string, and implement idle timeout mechanism. 2026-06-27 11:55:40 +05:30
Shreyas Zare c598be7db9 DropRequests: fixed minor bug. 2026-06-13 13:54:15 +05:30
Shreyas Zare f5f242006f Updated code to use new WriteLog() method which accepts exception parameter. 2026-06-13 13:53:27 +05:30
Shreyas Zare a2833fb02e app store json updated. 2026-05-03 17:01:01 +05:30
Shreyas Zare 021eea49ad app assembly version updated 2026-05-03 17:00:44 +05:30
Shreyas Zare 240d8b7df6 QueryLogsPostgreSql: fixed minor issue with qtype type conversion. 2026-05-03 17:00:29 +05:30
Shreyas Zare 159ce9e176 app store json updated 2026-05-03 15:35:22 +05:30
Shreyas Zare 58af158001 app assembly version updated. 2026-05-03 15:09:11 +05:30
Shreyas Zare d5fcf62377 QueryLogsSqlite: Updated cleanup timer code to do batch removal of records to mitigate timeout errors. Updated QueryLogsAsync() to fix minor page number issue. 2026-05-03 13:10:33 +05:30