File pihole-ftl.changes of Package pihole-ftl
1230
1
-------------------------------------------------------------------
2
Wed Feb 21 04:51:35 UTC 2024 - pihole-suse-packages@smar.fi
3
4
- Update to version 5.25.1:
5
* Update embedded dnsmasq version to 2.90+1
6
* Fix spurious "resource limit exceeded" messages.
7
* Update dnsmasq version to 2.90
8
* Update expected dnsmasq warnings
9
* Reverse suppression of ANY query answer logging.
10
* Add --dnssec-limits option.
11
12
-------------------------------------------------------------------
13
Mon Feb 19 05:51:14 UTC 2024 - pihole-suse-packages@smar.fi
14
15
- Update to version 5.25:
16
* Update dnsmasq version to 2.90
17
* Update expected dnsmasq warnings
18
* Reverse suppression of ANY query answer logging.
19
* Add --dnssec-limits option.
20
* Better allocation code for DS digest cache.
21
* Better stats and logging from DNSSEC resource limiting.
22
* Overhaul data checking in NSEC code.
23
* Rework validate-by-DS to avoid DoS vuln without arbitrary limits.
24
* Update EDE code -> text conversion.
25
* Parameterise work limits for DNSSEC validation.
26
* Fix error introduced in 635bc51cac3d5d7dd49ce9e27149cf7e402b7e79
27
* Measure cryptographic work done by DNSSEC.
28
* Update NSEC3 iterations handling to conform with RFC 9276.
29
* Update header with new EDE values.
30
* Protection against pathalogical DNSSEC domains.
31
* Update embedded dnsmasq version to 2.90test4
32
* Make --filter-rr=ANY filter the answer to ANY queries.
33
* Tweak logging and special handling of T_ANY in rr-filter code.
34
* Force-update embedded dnsmasq version. We are loosing the individual dnsmasq history of the ~ last year, however, given the multitude of merge conflicts and the fact that this code will soon(ish) be replaced by development-v6 (where the history is 100% intact), this isn't much of an issue
35
* Update changed indentation of known DNSMASQ warning
36
* =/== typo in last commit.
37
* Behave better when attempting to contact unresponsive TCP servers.
38
* Necessary changed to handle the most recent dnsmasq changes in FTL
39
* Log truncated DNS replies.
40
* Apply suggestions from code review
41
* Add special non-interactive mode for the embedded sqlite3 engine accessible via "-ni"
42
* Bump actions/stale from 8.0.0 to 9.0.0
43
* Change priorities such that special domains (Firefox and Apple at this time) can be explicitly allowed for some clients (per group assignments) while they stay blocked for all others in the network
44
* Fix possible race-collision leading to a theoretical out-of-bounds read
45
* Bump actions/checkout from 3.5.3 to 3.6.0
46
* Group dependabot PRs
47
* Bump actions/upload-artifact from 3.1.2 to 3.1.3
48
* Bump actions/checkout from 3.4.0 to 3.5.3
49
50
-------------------------------------------------------------------
51
Wed Nov 22 05:19:19 UTC 2023 - pihole-suse-packages@smar.fi
52
53
- Update to version 5.23:
54
* Tweak conditional, add in missing `env:`
55
* Update stale.yml
56
* Read this, added requestor(s) to the ignore list https://oneminuteenglish.org/en/requestor-or-requester/
57
* Update dependabot.yml
58
* Use env variable
59
* Do not try to remove stale lables on PRs
60
61
-------------------------------------------------------------------
62
Thu Jun 8 04:35:31 UTC 2023 - Samu Voutilainen <smar@smar.fi>
63
64
- Include pi-hole during build to allow it to handle permissions of
65
/etc/pihole directory.
66
67
-------------------------------------------------------------------
68
Tue May 30 04:32:59 UTC 2023 - Samu Voutilainen <smar@smar.fi>
69
70
- Refreshed patches
71
- Removed patch fix-build.patch that was applied to upstream
72
73
-------------------------------------------------------------------
74
Tue May 30 04:29:40 UTC 2023 - pihole-suse-packages@smar.fi
75
76
- Update to version 5.23:
77
* Remove traces of ABP_CSS
78
* Remove code duplication found in gravit.sh gravity_ParseFileIntoDomains()
79
* Update src/tools/gravity-parseList.c
80
* Rename src/{gravity-tools.* => tools/gravity-parseList.*}
81
* Update adlist.date_updated in parseList command
82
* Adding anchors to false_positives_regex
83
* Improving the comments
84
* Do not consider false positives as invalid domains
85
* Allowing underscore and hyfen in any position for gravity parseList
86
* Do not run ARP scans in networks where the kernel knows that ARP is not supported (e.g. Wireguard)
87
* Do not try to scan for DHCP servers in network where the kernel knows that there is no broadcasting support (e.g. Wireguard)
88
* Skip interfaces that are either down or are of loopback type
89
* Ensure we are in lock-mode when printing the final result
90
* Improve message when packet is rejected by wireguard interfaces
91
* Improve deplay.sh script to check against exact matches instead of regex-matching the searched string against the entire collapsed array to avoid incorrect partial matches
92
* Query IPv4-capable interfaces instead of packet-interfaces when scanning for DHCP servers
93
* Modify logging in such a way that concurrent printing by the involved is prevented and add better error reporting when sending to interfaces is not working due to an error
94
* Add capabilities check for feature dhcp-discover in the same way we already have it for arp-scan
95
* Align % in reply rate column
96
* Apply Pi-hole specific patches
97
* Update SQLite3 to 3.42.0
98
* Further reduce memory requirements by factor 10x (if not in -x mode)
99
* Reduce memory requirements by factor 4x
100
* Exit early if insufficient memory is available, perform as many interface scans as possible under these conditions
101
* Give reply rate in percent instead of showing the reply matrix
102
* Add arp-scan -xtreme mode for very unreliable connections
103
* Optimize thread_data structure and store a thread-local copy of the interface name
104
* Add capabilities check for CAP_NET_RAW (root always has it)
105
* Log more verbose human-readable error string if available
106
* Clearly log when scanning interfaces failed
107
* Interface names can be up to 16 bytes long. Docker bridge interfaces actually use this space so we need to reserve enough space here
108
* Always skip the loopback interface, also in "-a" mode
109
* Only print progress if it has changed. Otherwise, print "." as hearthbeat
110
* Scale progress percentage according to number of addresses to be scanned by the individual threads
111
* Consolidate output in main process
112
* Print different warnings if we received multiple replies from (apparently) the same device or if we received replies for the same address from different MAC addresses
113
* Print progress in verbose arp-scanning mode
114
* Use OVER constant instead of carridge return
115
* Spellcheck correction
116
* Skip ABP extended CSS selectors (port of core PR #5247)
117
* Re-apply Pi-hole specific Lua patches
118
* Update embedded Lua to 5.4.6
119
* Include hostnames (if available)
120
* Add our own address to the scan results so we can detect IP conflicts also here
121
* Use dedicated counters per MAC for a more accurate per-device reply matrix
122
* Unify warning
123
* Add pihole-FTL arp-scan [{-v,-a}]
124
* Move dhcp-discover into a dedicated "tools" target
125
* Do not log running out of disk space when the disk occupation is > 100%. We are seeing this with docker deployments on macOS hosts. It is a band-aid fix, however, it also seem to be the only thing we can do given that docker didn't fix this in nearly two years now.
126
* Also analyze UDP reply headers
127
* Add extra debugging output
128
* Add header analysis also in tcp_key_recurse to fix an issue with wrong upstream servers being attributed to DNSSEC-related queries when multiple upstream servers are defined (e.g. conditional forwarding)
129
* Apply Pi-hole Lua patches
130
* Update embedded Lua to 5.4.5
131
* Use env variable
132
* Run seperate job to trigger removal on comments
133
* Bump actions/checkout from 3.5.0 to 3.5.2
134
* Trigger stale workflow on issue comments to remove stale label immediately
135
* Apply the same logic also for reverse lookups (PTR)
136
* Explicitly set INSECURE status for replies received either from upstream (if they are not already validated as SECURE) or from cache. This is a direct consequence from the previous commit.
137
* Initial DNSSEC status should be UNSPECIFIED
138
* Analyse pseudeoheader before it might get stripped off
139
* Log if EDNS header is NULL and we are in debug mode
140
* Only try to interpret EDNS EDE when EDE data is available
141
* Ignore possible EXTRA-TEXT field in EDNS0 EDE data
142
* Use AD bit for IN/SECURE and EDE in SERVFAIL when prox for BOGUSy-dnsmasq option is used
143
* Implement EDNS(0) EDE
144
* Simplify EDNS handling code and also interpret replies received from upstream
145
* Allow TLD blocking using ABP style (port of core PR #5240)
146
* Add a few micro-optimizations to enhance speed of the parseList function and transform FQDN to domains. They are equivalent in this context but now they are not considered invalid any longer
147
* Store in the database instead of into a temporary file
148
* Enhance speed for ABP patterns (don't try to match domains when the line starts in "|")
149
* Only match full lines in input file
150
* Add gravity parseList funtion to FTL
151
* Bump actions/checkout from 3.4.0 to 3.5.0
152
* Bump actions/stale from 7.0.0 to 8.0.0
153
* Correct declaration for blockingstatus variable.
154
* Correct declaration for query_blocked().
155
156
-------------------------------------------------------------------
157
Fri Mar 24 05:24:42 UTC 2023 - Samu Voutilainen <smar@smar.fi>
158
159
- Added patch fix-build.patch
160
* Fixes build on Tumbleweed.
161
162
-------------------------------------------------------------------
163
Fri Mar 24 04:32:12 UTC 2023 - pihole-suse-packages@smar.fi
164
165
- Update to version 5.22:
166
* Bump actions/checkout from 3.3.0 to 3.4.0
167
* Update dnsmasq version to pi-hole-v2.89-9461807
168
* Add RISC-V 64-bit support and builds
169
* Add .codespellignore file to fix spell-checker action
170
* Remove limitation on --dynamic-host.
171
* Fix DHCPv6 "use multicast" response which previously failed to set the message type correctly.
172
* Allow configuring filter-A/AAAA via dbus.
173
* Generalise cached NXDOMAIN replies.
174
* Set the default maximum DNS UDP packet size to 1232.
175
* Fix possible SEGV when no servers defined.
176
* Fix --rev-server option. It was broken in 1db9943c6879c160a5fbef885d5ceadd3668b74d when resolving upstream servers by name was extended to --rev-server without accounting for the fact that re-using one and the same upstream server for each of the x.y.z.in-addr.arpa is actually a wanted feature
177
* Avoid undefined behaviour with the ctype(3) functions.
178
* Put version.ftl also behind new no-ident config option
179
* Apply Pi-hole SQLite3 patches
180
* Update embedded SQLite3 engine to version 3.41.1
181
* Remove last traces of temporarily added benchmarking tools. Also remove the hint about ABP domains, this can easily be checked in gravity
182
* Remove debugging timing output
183
* Set abp_domains = 1 during the CI tests.
184
* Use property "abp_domains" from info table to decide whether ABP blocking is to be used or not. Also log when FTL enabled ABP-style blocking
185
* Add timing for ABP style detection
186
* Update src/database/gravity-db.c
187
* Fix spellcheck to get things deployed
188
* Fix handling of rare (but possible) gravity database issues such as "list not available"
189
* Do not use a new option but instead automatically detect if ABP-style domains are present in the database. This ensures that this addition comes at no extra costs to any installs using pure HOSTS-style adlists.
190
* Add ABP format blocking support for gravity. Note that the option needs to be switched on by setting GRAVITY_ABP_STYLE=true in pihole-FTL.conf to avoid running this computationally expensive task on the vast majority of user databases only fed from properly formatted HOSTS lists. Gravity can enable the setting when it detects ABP format automatically.
191
* Update dnsmasq version to 2.89
192
* Update dnsmasq version to 2.89rc1
193
* New syntax: querytype=A accepts now also a list (like querytype=A,AAAA,MX). You can use the exclamation mark as before for inversion (querytype=!A) matches everything BUT type A queries. This has now been extended to be able to invert a list, too (like (querytype=!A,AAAA matches everything BUT A and AAAA queries)
194
* Add --no-ident option.
195
* Print regex type hints only in debug mode
196
* Allow selection of multiple query types in regex extension, like "abcabc;querytype=HTTPS,SVCB"
197
* Fix bug which can break the invariants on the order of a hash chain.
198
* Fix cosmetic big in dump_cache_entry()
199
* Log all cache internal errors.
200
* If we hit a cache internal error, log the entry we failed to remove.
201
* Bump benoitchantre/setup-ssh-authentication-action from 1.0.0 to 1.0.1
202
* Remove gray color in help output
203
* Bump actions/download-artifact from 3.0.1 to 3.0.2
204
* Bump actions/upload-artifact from 3.1.1 to 3.1.2
205
* Don't run the `Transfer Builds to Pi-hole Server...` step for dependabot PRs
206
* Bump actions/checkout from 3.2.0 to 3.3.0
207
* Don't run the `Transfer Builds to Pi-hole Server...` step for dependabot PRs
208
* More detailed comments
209
* Add action to close stale PR
210
* Always store time we start to save to the database (not only in debug mode). This avoids errorneous timing reports in case of errors.
211
* Bump actions/stale from 6.0.1 to 7.0.0
212
* Be honest
213
* Bump actions/checkout from 3.1.0 to 3.2.0
214
* Use github cli to sync master back to development
215
* Add merge conflict workflow
216
217
-------------------------------------------------------------------
218
Sat Jan 7 06:53:48 UTC 2023 - Samu Voutilainen <smar@smar.fi>
219
220
- Made /var/log/pihole to be group writable, to allow php-fpm
221
as nobody:pihole to write a log inside here.
222
223
-------------------------------------------------------------------
224
Sat Jan 7 05:57:41 UTC 2023 - Samu Voutilainen <smar@smar.fi>
225
226
- Add fortify_source_3.patch
227
* Applied only for Tumbleweed.
228
* Avoid error due redifinion of _FORTIFY_SOURCE
229
- Ghost own /run/pihole
230
231
-------------------------------------------------------------------
232
Fri Jan 6 06:01:25 UTC 2023 - Samu Voutilainen <smar@smar.fi>
233
234
- Added link_against_readline.patch
235
* Fixes build
236
237
-------------------------------------------------------------------
238
Sat Dec 31 11:11:08 UTC 2022 - Samu Voutilainen <smar@smar.fi>
239
240
- Use shared libraries instead of static
241
242
-------------------------------------------------------------------
243
Sat Dec 31 09:30:37 UTC 2022 - pihole-suse-packages@smar.fi
244
245
- Update to version 5.20:
246
* Update embedded dnsmasq to v2.88
247
* Add posix-timezone and tzdb-timezone DHCPv6 options.
248
* Review comments
249
* Exit immediately after running dnsmasq-test
250
* Fix logic for status code parsing
251
* Fix incorrect DNSSEC-related warning during history import
252
253
-------------------------------------------------------------------
254
Sat Oct 2 05:14:39 UTC 2021 - Samu Voutilainen <smar@smar.fi>
255
256
- Only enable malloc error muting on Tumbleweed.
257
258
-------------------------------------------------------------------
259
Sat Oct 2 05:00:56 UTC 2021 - Samu Voutilainen <smar@smar.fi>
260
261
- Use -Wno-error=suggest-attribute=malloc as build flag to fix
262
Tumbleweed building.
263
264
--------------------------------------------------------------------
265
Sat Oct 2 04:49:29 UTC 2021 - pihole-suse-packages@smar.fi
266
267
- Update to version v5.10.2
268
+ Move SFTP xfer to happen before attach to release. Seeing some SSL errors in the github-action-publish-binaries action.
269
+ Fix REPLY_ADDR{4,6} address overwriting for pi.hole and <hostname>
270
+ Fix confusion in DNS retries and --strict-order.
271
+ Fix FTBFS when CONNTRACK and UBUS but not DNSSEC compile options selected.
272
+ dnsmasq_time: avoid signed integer overflow when HAVE_BROKEN_RTC
273
+ Do not fail hard when rev-server has a non-zero final address part
274
+ Update embedded dnsmasq version to 2.87test3
275
276
-------------------------------------------------------------------
277
Thu Sep 30 03:52:59 UTC 2021 - Samu Voutilainen <smar@smar.fi>
278
279
- Removed unnecessary patches:
280
+ ftl-2.8.1-build-fix.patch
281
+ ignore-shmem.c-strncpy-error.patch
282
283
--------------------------------------------------------------------
284
Thu Sep 30 03:41:11 UTC 2021 - pihole-suse-packages@smar.fi
285
286
- Update to version v5.10.1
287
+ Fix specific NOERR/NXDOMAIN confusion.
288
+ Reduce code duplication by merging FTL_cache() into FTL_reply()
289
+ Also process automatically generated queries, e.g. for DNSSEC validation
290
+ Add option to suppress automatically generated DNSSEC queries from being analyzed and shown (legacy behavior)
291
+ Fix bug in 6860cf932baeaf1c2f09c2a58e38be189ae394de
292
+ Fix bug introduced in 6860cf932baeaf1c2f09c2a58e38be189ae394de
293
+ Don't print flags multiple times in debug mode.
294
+ Log client requesting automatically generated DS/DNSKEY queries explicitly as "pi.hole"
295
+ Further work from a0a3b8ad3e91db5181023fceea6732eb6c6f0759
296
+ Connection track mark based DNS query filtering.
297
+ Use correct packet-size limit in make_local_answer()
298
+ Include EDNS0 in connmark REFUSED replies.
299
+ Rename replyt ype 11 DNSKEY -> DNSSEC
300
+ Add src/dnsmasq/pattern.c to src/dnsmasq/CMakeList.txt
301
+ Update SQLite engine to 3.36.0
302
+ Also cancel other threads when terminating
303
+ Ensure API threads can be canceled asynchronously
304
+ Add limit of maximum threads to warning
305
+ Add explicit limit logging also in the second place.
306
+ If DELAY_STARTUP is set, we can delay earlier to have this option being useful for misbehaving fake hwclocks as well.
307
+ Correct domain search algorithm.
308
+ Analyze which upstream server sent us the reply
309
+ Store real over-time counts of forwarded queries. So far, we counted only the first server a query was sent to.
310
+ Change upstream associated with a query if it is different than the first server we sent a query to
311
+ Log resolution of pi.hole and hostname as "internal" instead of the last blocking reason (e.g. "gravity blocked").
312
+ Tests: Debug messages do now include the port a client sent the query from
313
+ Add more debugging output to short-circuited replies
314
+ Fix automatic IP hostname responding for blocking modes NXDOMAIN, NODATA and NODATA-IPv6
315
+ Simplify logic in FTL_make_answer()
316
+ Fix error in try to make outer SHM lock consistent on dead of previous owner
317
+ Initial changes for extended DNS error codes.
318
+ Rationalise --server parsing and datastructure building.
319
+ Deprecate DEBUG_DNSMASQ_LINES (now included in DEBUG_FLAGS)
320
+ Initial implementation of RFC-8914 extended DNS errors.
321
+ Implement Extended DNS Errors (ERE, RFC 8914) in FTL
322
+ Don't re-use datastructures for --address and --local.
323
+ Rationalise domain parsing for --rev-server and --domain.
324
+ Fix problem with re-allocation of serverarray.
325
+ Include EDE in telnet API getAllQueries
326
+ Tidy up interface to dbus and ubus modules.
327
+ Compiler warnings.
328
+ Fix trivial breakage of DBUS done by 85bc7534dae7711f6c82742feaa7dacb41af3f36
329
+ Fix compiler warning.
330
+ Tidy up name buffer use in report_addresses().
331
+ Treat failure of ubus_add_object() in ubus_init() as retry-able.
332
+ Revert "Treat failure of ubus_add_object() in ubus_init() as retry-able."
333
+ Fix ipset support.
334
+ Reduce memory footprint of FTL by 11%. We don't store the rowid of a query in memory because we don't really need that.
335
+ Further reduce memory footprint of FTL by about 12%. We don't store the char pointer of the extended DNS errors because we can get this at any time.
336
+ Reuse workspace bit in struct server ->flags.
337
+ Allow wildcards in domain patterns.
338
+ Fix oversight in build_server_array().
339
+ Rationalise SERV_MARK use.
340
+ Modify and propagate changed lease.
341
+ Hide "unknown" EDE in API
342
+ Implement special handling of the Mozilla canary domain to disable Firefox auto-DoH
343
+ Initialize over-time data only after a possible startup delay
344
+ Tidy domain parsing, make --server=/*/1.2.3.4 equivalent to --server=1.2.3.4
345
+ Make --rebind-localhost-ok apply to :: and 0.0.0.0
346
+ Support IPv6 in --bogus-nxdomian and --ignore-address
347
+ Fix order of calls to resize-packet() and add_pseudoheader().
348
+ Add calls to dump internally generated answers for dumpmask=0x0002
349
+ Fix logical error in d0ae3f5a4dc094e8fe2a3c607028c1c59f42f473
350
+ Fix thinko in a92c6d77dcd475579c39bdff141f5eb128e2a048
351
+ Include interface name in more errors printed by dhcp-discover
352
+ Check lock ownership only when debugging shared memory locks. This increases the general execution speed because getting PID and TID is a slow process.
353
+ Subtle change to priority of --server types.
354
+ Propagate dnsmasq defines into target FTL
355
+ Simplify FTL_iface()
356
+ Add pi.hole PTR record if requested IP matches the address of a local interface
357
+ Add config option PIHOLE_PTR to control the new auto-PTR behavior.
358
+ Do not reply with "pi.hole" to loopback PTRs
359
+ Add EDE return when no matching key found.
360
+ Add --quiet-tftp.
361
+ Fix forcing of reply type in regex replies only being done in debug mode (this never had any adverse effect)
362
+ Ensure shared memory is locked when reloading dnsmasq
363
+ Allow shorter IPv6 prefix lengths in (some) --synth-domain options.
364
+ --synth-domain now works in auth mode.
365
+ Return REFUSED in auth mode when we are not authoritative for the query.
366
+ Checks on prefix-length in --domain --synth-domain and --rev-server.
367
+ canonicalise_opt must always return heap memory.
368
+ Fix argument checking for --dhcp-match.
369
+ Detect malformed --dhcp-relay option.
370
+ Handle empty hostmaster in --auth-soa
371
+ Typo in new EDE code.
372
+ Add UINT32_MAX if not defined by system.
373
+ Add config option ADDR2LINE=true|false
374
+ Better fix than f2266d9678d71633d62d70238be3782ea74019c9
375
+ Add additional checks for validity of data before trying to access it. Fixes #1151
376
+ Properly handle edge-case when a query comes in at the exact end of the last overTime interval
377
+ Add further cache metrics
378
+ Warn about clients reaching rate-limit. Only warn once per interval and client to avoid log spamming.
379
+ Log for how many more seconds we rate-limit a client when this happens
380
+ Log rate-limiting of clients to the message table
381
+ Reload blockingmode on receipt of real-time signal 0 (a.k.a. pihole restartdns reload-lists)
382
+ Set extended DNS error to UNSET (-1) when importing from the database
383
+ Log how many queries have been saved in the final query storing
384
+ CONNTRACK needs CAP_NET_ADMIN.
385
+ Simplify linux capability check output
386
+ Fix NOERR/NXDOMAIN in answers configured by --domain-needed.
387
+ There was a `notify` variable to keep track whether a subscriber is observing our UBus object. However, it was not properly cleaned up in `ubus_destroy`, potentially becoming stale over UBus reconnections. The variable was removed and the current state is examined when sending notifications, similarly as is done in other existing OpenWrt code.
388
+ Re-order UBus teardown logic.
389
+ Remove remaining uses of deprecated inet_addr() function.
390
+ Remove remaining uses of deprecated inet_ntoa()
391
+ dhcp_buff2 not availble in log_packet, use daemon->addrbuff
392
+ Fiz sizeof() confusion in 527c3c7d0d3bb4bf5fad699f10cf0d1a45a54692
393
+ Define order of reading files when --addn-hosts given a directory.
394
+ Revert "Re-order UBus teardown logic."
395
+ Revert "There was a `notify` variable to keep track whether a subscriber is"
396
+ Handle UBus serialization errors.
397
+ Eliminate redundant UBus `notify` variable.
398
+ Re-order UBus teardown logic.
399
+ Adjust logging levels for connmark patterns.
400
+ Make comment style consistent.
401
+ Use getnameinfo() instead of deprecated gethostbyaddr() for internal name resolving.
402
+ Log if hostname was imported from the network database.
403
+ Lookup IP addresses in local /etc/hosts file before sending out PTR requests
404
+ Allow users to configure how FTL reacts to queries when the gravity database is not available
405
+ Ensure we are not sending empty replies when we actually want to drop the entire answer
406
+ Ensure busy blocking is also done when database was not available initially (incl. when forking a TCP worker)
407
+ Log when adding entries to FTLs DNS cache (DEBUG_QUERIES)
408
+ Correct upstream->overTime when queries are blocked after they have already been forwarded upstream (e.g., during CNAME inspection)
409
+ Explicitly log when a retried query was a DNSSEC query.
410
+ Always count forwardings upstream, even if this was done for a (partially) cached CNAME
411
+ Remove redundant upstream->count
412
+ Some DEBUG_NETWORKING enhancements
413
+ Copy interface name before skipping when REPLY_ADDR is configured manually
414
+ Fix empty domain in server option parsing when more than one domain is given
415
+ Add BLOB reply type
416
+ Handle queries generated by FTL_make_answer() (i.e., blocked queries) as queries served from cache, not upstream (because they were never upstreamed)
417
+ Empty replies generated by FTL are NODATA (instead of BLOB)
418
+ Tests: DNS reply analysis test (using netmeister.org records)
419
+ Hard-code 8.8.8.8 as upstream server for the tests. It turned out to be more reliable as the CircleCI-provided DNS server tends to show a few timeouts on certain query types.
420
+ Tests: Use 1.1.1.1 as upstream as 8.8.8.8 SERVFAILs the HTTPS and SVCB tests domains
421
+ 1.1.1.1 rejects ANY queries...
422
+ Support limited wildcards in the input tags for --tag-if.
423
+ Rationalise query-reply logging.
424
+ Store validation result of internally generated DNSSEC queries
425
+ Store validation result of queries answered from cache
426
+ Avoid duplicated NXDOMAIN PTR queries. There is no no need to temporarily force FTL as system resolver when it is already the primary sytem resolver
427
+ Tests: Adjust for DNSSEC status now included for cache replies
428
+ Final logging tweaks.
429
+ Skip DNSSEC analysis if DNSSEC validation is disabled. Add new DEBUG_DNSSEC flag.
430
+ Tests: We want extra logging enabled in pihole.log during the tests
431
+ Tests: Never lauch DNS resolver thread when names are not to be resolved (e.g., on the CI)
432
+ Tests: Use pihole-FTL.pid when reloading to ensure the signal is not sent to a TCP worker (which would just ignore it altogether)
433
+ Tests: Use OpenDNS only for dig tests, use Google DNS for everything else.
434
+ Tests: Enable DNSSEC for query validation during the CI tests
435
+ Only open database when really necessary. This may reduce disk activity slightly and save a bit of CPU time.
436
+ Update DB counters still within the running TRANSACTION to reduce disk I/O
437
+ dhcp-discover: Implement Classless Static Route Option (options 121 and 249)
438
+ Get logging of DNSSEC status right when Checking Disabled bit set.
439
+ Add RFC 4833 DHCP options "posix-timezone" and "tzdb-timezone".
440
+ Prevent a possible deadlock in dhcp-discover.
441
+ Also check for capabilities CAP_IPC_LOCK and CAP_CHOWN
442
+ Tests: Adjust for newly added capability warnings.
443
+ Improvements suggested by cppcheck
444
+ Ensure we can the correct error string when "ip neigh show" or "ip address show" fails. Before, we picked up the error from the logg() which was likely always a not ver helpful "Success" message
445
+ Abort database routines early if database is known to be broken due to database file corruption.
446
+ Treat ANY queries the same as CNAME queries WRT to DNSSEC on CNAME targets.
447
+ Add regex extension ";reply=NXDOMAIN,NODATA,REFUSED,IP,NONE"
448
+ Tests: Add new regex extension tests
449
+ Implement support for custom redirection targets in regex extension, e.g., "someregex;reply=1.2.3.4;reply=fe80::1234"
450
+ Tests: Add tests for regex extension "reply=1.2.3.4", "reply=fe80:1234", and "reply=1.2.3.4;reply=fe80:1234"
451
+ Caching cleanup. Use cached NXDOMAIN to answer queries of any type.
452
+ Skip ascii-only names IDN processing
453
+ Revert "Skip ascii-only names IDN processing"
454
+ check_name() determines if IDN processing is needed.
455
+ Add all current RR types to the table of type names used for query logging.
456
+ Required FTL changes due to the preceding dnsmasq commit.
457
+ Small sanity check in wildcard tag matching code.
458
+ Retry on interrupted error in tftp
459
+ Add safety checks to places pointed by Coverity
460
+ Fix bunch of warnings in auth.c
461
+ Fix coverity formats issues in blockdata
462
+ Retry dhcp6 ping on interrupts
463
+ Fix coverity warnings on dbus
464
+ Address coverity issues detected in util.c
465
+ Fix coverity detected issues in option.c
466
+ Fix coverity detected issue in radv.c
467
+ Fix coverity detected issues in cache.c
468
+ Tests: "TYPE5" is now "[CNAME]"
469
+ Add NEG flag when replying to queries with forced NXDOMAIN. This ensures logging is correct and that the web interface will show the correct status.
470
+ Tests: Check Mozilla canary domain is blocked and logged correctly
471
+ Add PIHOLE_PTR=HOSTNAME allowing users to specify that Pi-hole should respond with the device's hostname (instead of "pi.hole") for local interface IP address PTR requests.
472
+ Valid option values for PIHOLE_PTR are now "PI.HOLE" (default), "HOSTNAME" or "NONE"
473
+ Add final newline
474
+ Trim excess whitespace
475
+ Add handling for "pi.hole.<local_domain>" and "<hostname>.<local_domain>". This fixes #1168
476
+ Ensure virtual interfaces are recognized as distinct interfaces when finding their bound addresses
477
+ Reply with NODATA (instead of 0.0.0.0 or ::) if the interface we received a query on doesn't have the requested address type (e.g. virtual interfaces only configured with one IPv6 but no IPv6 address)
478
+ Fix coverity issues detected in domain-match.c
479
+ Fix coverity detected issues in dnsmasq.c
480
+ Fix coverity issues in dnssec.c
481
+ Fix confusion is server=/domain/# combined with server|address=/domain/....
482
+ Add support for arbitrary prefix lengths in --rev-server and --domain=....,local
483
+ Thinko in immediately previous commit.
484
+ Optimize inserting records into server list.
485
+ Improvements based on static-analysis of source code
486
+ Fix --address=/#/...... which was lost in 2.86
487
+ Correcly warn if dynamic directory is actually no directory
488
+ Make TTL served for blocked queries independent from local-tll setting in dnsmasq's config.
489
+ Improve last patch by splitting the previously combined if
490
+ Make --rebind-domain-ok work with IDN.
491
+ Change database permission to 664
492
+ Set database permissions everytime the database is initialized
493
+ Change test suite to reflect changed file permissions
494
+ Fix indentation
495
+ Add special handling of iCloud Private Relay domains
496
+ Improve empty domain name handling
497
+ Add GitHub Actions integration
498
+ Add --nftset option, like --ipset but for the newer nftables.
499
+ Update embedded dnsmasq version to v2.87test2
500
+ Tweak expected result for line 8 in "Get all queries shows expected content"
501
+ Ready GHA to take over from circle...
502
+ Fix a test that was already fixed, but then unfixed by a dodgy merge commit
503
+ Add in upload to our server
504
+ Single * is not enough it seems
505
506
-------------------------------------------------------------------
507
Sat Sep 11 04:44:35 UTC 2021 - Samu Voutilainen <smar@smar.fi>
508
509
- Added patch ftl-2.8.1-build-fix.patch.
510
Fixes Tumbleweed build.
511
- Miscellaneous fixes to spec.
512
513
-------------------------------------------------------------------
514
Sun May 16 03:31:41 UTC 2021 - Samu Voutilainen <smar@smar.fi>
515
516
- systemd service needs to clean up SHM files manually in order to
517
avoid a failure in FTL restart.
518
519
--------------------------------------------------------------------
520
Wed May 5 10:57:28 UTC 2021 - pihole-suse-packages@smar.fi
521
522
- Update to version v5.8.1
523
+ Retried queries due to missing DNSSEC valdiation have no upstream server (the related DNSSEC queries where retried, not this one). Hence, we shouldn't update the counts of any upstream here. This silences an incorrect "FATAL: Trying to access upstream ID -1" warning in the logs.
524
+ Do not terminate threads which may not be running. They'll be cleaned up at process termination anyway.
525
+ Ensure we clean up always behind us. Also when FTL crashes
526
+ Also clean up when crashing
527
+ Improve process-already-running detection
528
+ Tests: Update tests for new expected output on two concurrent instances
529
+ Terminate threads before closing database connections and finishing shared memory
530
+ Clean up after dnsmasq errors (port not available config errors, etc.)
531
+ Do not detach threads we want to be able to cancel and add logfile log to shared memory locks. Other forks may want to log as well.
532
+ Change to refreshed logo.
533
+ Give the images some space.
534
+ Center vortex.
535
+ Remove incorrect informaion.
536
+ Use dropshadowed logo
537
+ Escape DHCP options if necessary
538
+ Print raw bytes for unknown DHCP options
539
+ Implement DHCPv4 PCP Option (RFC 7291)
540
+ Resize shared memory only when locking. This ensures all shm pointers are invariant inside locks.
541
+ Preallocate one pagesize (usually 4K) for per-client-regex data.
542
+ Reduce code-duplication by using an array of shared memory pointers we can iterate on when chown-ing or deleteing.
543
+ Fix incorrect printf format identifier
544
+ Fix problem with DNS retries in 2.83/2.84.
545
+ Simplify preceding fix.
546
+ The preceeding commit changes the handling of retried queries. The logic is now changed so that distinct requests for repeated queries still get merged into a single ID/source port, but they now always trigger a re-try upstream. This effectively removes our IN-PROGRESS status so we remove the code handling this as well.
547
+ dhcp-host selection fix for v4/v6.
548
+ Correct occasional --bind-dynamic synchronization break
549
+ Always use <poll.h>
550
+ Move flags to recvmsg function in netlink
551
+ Obtain MTU of interface only when it would be used
552
+ Update embedded SQLite engine to 3.35.0
553
+ Update .gitignore and add VSCode workspace exclude-settings
554
+ Add --dynamic-host option.
555
+ Add --log-debug option and MS_DEBUG flag to my_syslog().
556
+ Only log changes to DNS listeners when --log-debug is set.
557
+ Log creation of listeners and enable dnsmasq log-debug when any FTL debug option is set.
558
+ Fix a memory leak when re-opening the databases (when forking or reloading the lists). The memory leak is on the order of a few bytes but scales quickly with the number of clients. It is caused by SQLite3 not being able to clean up behind itself when we're not finalizing and closing everything explicitly.
559
+ Avoid jump depending on uninitialized bytes (only relevant in debug mode).
560
+ Join canceled threads on exit to ensure they exited properly before we exit from the main process. This includes waiting for them to clean up their own stack memory, etc.
561
+ Ensure we close FTL database connection when exiting the main process. This has no consequences else than silencing some meomry-lost complaints by valgrind (any allocated memory is release on process exit anyway)
562
+ Ensure shared memory strings bucket is large enough when locking. Do not resize it when we are holding the lock. Also, optimize FTL-domains size
563
+ Don't try to finalize gravity statements two times
564
+ More fine-grained locking in network table processing should decrease delays in DNS resolution on very slow machines
565
+ Reduce rate-limiting checking to once per second (rather than every 100 msec)
566
+ Simplify locking during network table processing and generalize spacial handling for virtual interfaces (hwaddr 00:00:00:00:00:00)
567
+ Simplify signal handling and catch SIGABRT in addition
568
+ tftp warning fix.
569
+ Teach --bogus-nxdomain and --ignore-address to take a subnet argument.
570
+ Use random source ports where possible if source addresses/interfaces in use.
571
+ Update SQLite3 from 3.35.0 to 3.35.2
572
+ Do not skip remapping if the size hasn't changed
573
+ Avoid leaking memory if dbquery() fails
574
+ Automatically reply with IP address a query came in from when in blockingmode=IP
575
+ Scan through local interfaces to find IPv4/IPv6 addresses to reply with in IP blocking mode
576
+ Add fallback in case docker does not reveal the interface we're running in
577
+ Simplify and unify interface address derivation
578
+ Do not close FTL database connection when forking TCP workers
579
+ Open database after forking
580
+ Add timeout to joining of threads
581
+ Remove additional log file locking
582
+ Open individual database connections where we need them. Do not use global pointers anywhere. This may mean we have more than one connection open at the sae time. SQLite3 will take care of thread-safety.
583
+ Fix FTBS on FreeBSD due to Linux-specific optimisation of if_nametoindex()
584
+ Always set database pointer to NULL, even when closing failed
585
+ Prepare for dnsmasq code refactoring patches. This commit needs to be undone later.
586
+ Reduce few repetitions in forward code
587
+ Create common function for forward dump, log and send
588
+ Move repeated test pattern to server_test_type
589
+ If the first argument ends in ".lua", we immediately start the embedded LUA engine. Same for ".db" and ".sql" files which are directly routed into the embedded SQLite3 engine.
590
+ Add tests for new feature
591
+ Favor ULA and GUA addresses over LL when picking an IP address for replying to blocked AAAA queries.
592
+ MUSL and GNU C define the substructure of in6_addr differently so we cannot rely on being able to access the substructure directly.
593
+ Use properly-sized buffer for format_time()
594
+ Fix thinko in 51f7bc924cbcdeb09cbb83249b70c121d1ffa31e
595
+ Change the method of allocation of random source ports for DNS.
596
+ Scale the DNS random scket pool on the value of dns-forward-max.
597
+ Update SQLite3 from 3.35.2 to 3.35.3
598
+ Ensure FTL can be compiled from source archives offered by GitHub for each release
599
+ Print special notice when no version can be obtained
600
+ Improve error reporting in network table routines
601
+ Also log ignored extra regex extensions to the message database table
602
+ Prevent forks from adding regex compilation errors to the message table
603
+ mpid() should return PID even if we are not forking at all
604
+ Log correct database index on regex warnings
605
+ Correct missing SERV_DO_DNSSEC flag, add new spot
606
+ Enable DNSSEC compilation on nettle 2.7.1
607
+ Replace ad-hoc libnettle version detecion with MIN_VERSION macro.
608
+ Fix spacing in translatable strings.
609
+ Re-add FTL hooks into dnsmasq's forward code
610
+ Update dnsmasq version string to 2.85
611
+ Circle CI: skip uploading build artifacts on forks
612
+ TFTP tweak.
613
+ Update SQLite3 from 3.35.3 to 3.35.4
614
+ Do not flag query as retried when we decide ourselves that it should be retried without any new query triggering this. Deprecate DEBUG_EXTBLOCKED (now covered by DEBUG_QUERIES and add DEBUG_STATUS)
615
+ Ignore duplicated replies to the same query. This is useful in general and also happens to circumvent a dnsmasq bug (we already reported this one upstream).
616
+ Subtly change behaviour on repeated DNS query.
617
+ Simplify status and reply type handling in FTL
618
+ Ensure we always set the status of cached queries
619
+ Assert size of countersStruct
620
+ Combine queries for the same DNS name if close in time.
621
+ Handle resource exhaustion of struct frec_src same as struct frec.
622
+ Ensure reply type is always stored for cached queries
623
+ Re-add IN_PROGRESS query status
624
+ Do not try to log if no log file is defined
625
+ Prevent a possible infitite loop in the inunterruptible syscalls.
626
+ Queries read from the database need to be counted as unknown before restoring the query status
627
+ Add missing newline after "Notice: Found no readable FTL config file"
628
+ Add config options REPLY_ADDR4 and REPLY_ADDR6 to overwrite automatic IP detection in IP blocking mode.
629
+ Use MAXLOGAGE to control which queries get deleted by GC
630
+ Tidy error logging in 961daf8f921503457d1f539f79b3a2def7d479e2
631
+ Work around warning on tag build due to && logic.
632
+ Fix database update to version 7 reporting error when there is none. This is not a critical bug as the issue resolves itself on the next start of FTL.
633
+ Test: Add test for "database not available" messages indicating failed database updates and creations.
634
+ Give threads a bit more time to reach a point where cancellation is safe. We cannot give them too much time because, otherwise, the proces trying to TERMinate FTL may decide to KILL it instead. We should avoid this to be able to properly cleanup.
635
+ Don't try to terminate threads when we never launched them.
636
637
--------------------------------------------------------------------
638
Wed Apr 14 11:04:39 UTC 2021 - pihole-suse-packages@smar.fi
639
640
- Update to version v5.7
641
+ Fix incorrect "FATAL" error message during garbage collection
642
+ Fix incorrect "FATAL" error message during garbage collection
643
+ Move fd into frec_src, fixes 15b60ddf935a531269bb8c68198de012a4967156
644
+ Fix to 75e2f0aec33e58ef5b8d4d107d821c215a52827c
645
+ Optimise sort_rrset for the case where the RR type no canonicalisation.
646
+ Fix for 12af2b171de0d678d98583e2190789e544440e02
647
+ Don't display unrelated CNAME queries when filtering for specific domain
648
+ dnsmasq-v2.83 forwards multiple queries to the same destination only once and stores the other queries as duplicates. They do receive the answer later on, however, this is usually not logged (when log-queries=extra is enabled, there will be a warning about the duplicate). This commit handles such duplicates and introduces a new reply type 14 = "already forwarded"
649
+ When seeing duplicated queries, the original query may have been blocked during CNAME inspection. In this case, we need to change the status from "OK (already forwarded)" to the correspondig blocked status. The "already forwarded" information is lost but that seems okay.
650
+ Check source query for its status when checking if we need to update the duplicated ones
651
+ Tidy initialisation in hash_questions.c
652
+ Change HAVE_NETTLEHASH compile-time to HAVE_CRYPTOHASH.
653
+ Bump copyright notices for 2021. Happy New Year!
654
+ Fix possible free-memory ref in e75069f79aa6b8a61034a9a4db9b6265b8be8ae4
655
+ Fixes incorrect "Found unknown status 14 in long term database" warning in the logs. We change the code to use a enum-based struct so we cannot forget to update this in the future when adding further query status types.
656
+ Add per-client rate-limiting. The default limit is 1000 queries in 60 seconds.
657
+ Add output of how much memory in /dev/shm is used by FTL itself
658
+ Try to create shared memory objects before reading the settings
659
+ Do not try to delete existing shmem objects on start - that may cause running FTL instances to crash when it tries to access them. Instead, new instances should properly fail to start.
660
+ Tests: Running a second instance is detected and prevented, FTL continues to work as expected afterwards
661
+ Do not explicitly request a lease time in our DHCPREQUEST as this may lead to incorrect responses. Also, when sending a request to lo, we should send it to the interface address instead of the broadcast (lo doesn't support broadcast destinations).
662
+ Fix queries sent upstream being counted incorrectly when modified later on (blocked externally, blocked during CNAME inspection). This also applies to queries loaded from the database.
663
+ Increment forward counters when immporting QUERY_RETRIED or QUERY_RETRIED_DNSSEC fromthe database
664
+ Retain EDNS0 bits from incoming queries when blocking requests
665
666
--------------------------------------------------------------------
667
Tue Jan 19 14:43:45 UTC 2021 - pihole-suse-packages@smar.fi
668
669
- Update to version v5.5
670
+ Detect and handle interface changes of clients with the same IP
671
+ Update SQLite3 to 3.34.0 and expose sqlite3 shell as 'pihole-FTL sqlite3' (drop-in replacement is available as well)
672
+ mend
673
+ Added missing NS query type to getQueryTypes()
674
+ Log date/time of FTL in header just as SQLite3 does as well
675
+ Test for embedded SQLite3 shell available and functional
676
+ Modified test for NS type
677
+ Fix for errno not being set by posix_fallocate() in contrast to fallocte() who did set it.
678
+ Add new query types SVCB and HTTPS
679
+ Tests: Add SVCB and HTTPS as expected query types
680
+ Implement support for displaying exact type instead of the catch-them-all category OTHER. The OTHER category is still used when it comes to computing statistics to ensure your chart's legend does not explode.
681
+ We cannot really decide whether local configuration lines are meant for blocking or something else. Just record such queries as replied to from cache because this is what they are. This code made sense at the time where wildcards were implemented as dnsmasq config lines, however, we've advanced to our own regex engine since then and all config lines should have also been auto-migrated.
682
+ Clarify comment
683
+ Only return regex index when allowed by privacy settings. This may leak information, otherwise.
684
+ Check for validity if iface pointe before dereferencing it.
685
+ Don't show retried queries when filtering for blocked queries.
686
+ Optimize datastructures using bitfields and item re-arrangement (to minimize padding). This reduces the size of query, client, and regex records by 8 bytes per item. Note that this optimization was done on x86_64 and may not apply for other architectures (32bit architectures already used less padding).
687
+ Statically assert struct sizes are what we expect. This prevents us from increasing the memory needs unintentionally (e.g. due to sub-optimal padding)
688
+ Store blocked property in query flags.
689
+ Use blocked property in API code. Make query->upstreamID = -1 the new default to differentiate easily what was forwarded (ID will be >= 0) and what not (ID == -1). Store the upstream server also for other query types that were forwarded (like queries blocked during CNAME inspection).
690
+ Add MAXDBDAYS=-1 to disable auto-cleaning and ensure overflow cannot happen (we just enforce the maximum in this case)
691
+ pxe: support pxe clients with custom vendor-class
692
+ Use the values of --min-port and --max-port in TCP connections.
693
+ Fix remote buffer overflow CERT VU#434904
694
+ Check destination of DNS UDP query replies.
695
+ Use SHA-256 to provide security against DNS cache poisoning.
696
+ Optimse RR digest calculation in DNSSEC.
697
+ Fix DNS reply when asking for DNSSEC and a validated CNAME is already cached.
698
+ Add missing check for NULL return from allocate_rfd().
699
+ Handle multiple identical near simultaneous DNS queries better.
700
+ Handle caching with EDNS options better.
701
+ Support hash function from nettle (only)
702
+ Small cleanups in frec_src datastucture handling.
703
+ Adapt for change in struct forward to forward->frec_src
704
+ Update dnsmasq version string
705
+ Fix warning message logic.
706
+ Update to new struct frec fields in conntrack code.
707
708
--------------------------------------------------------------------
709
Tue Jan 12 05:14:26 UTC 2021 - pihole-suse-packages@smar.fi
710
711
- Update to version v5.3.4
712
+ Show BOOTP server and file strings used by TFTP
713
+ Update dnsmasq version to 2.82
714
+ Use fork-private regex substructure because each regex has an opaque structure (once compiled) and cannot be kept globally available through shared memory (at least not with any realistic effort)
715
+ We have to explicitly set conflinebuffersize to zero when freeing the buffer itself to avoid getline() crashing in some special edge-cases
716
+ Rename memory.c -> syscalls.c
717
+ Factor out syscalls for calloc, free, realloc and strdup into dedicated syscalls/{}.c files
718
+ Add interrupt-safe fprintf() and printf() routines
719
+ Add interrupt-safe vfprintf() and vprintf() routines
720
+ Make calloc(), realloc() and strdup() interrupt-safe
721
+ Add interrupt-safe write() routine
722
+ Add interrupt-safe accept() routine
723
+ Avoid redundant error reporting
724
+ Improve printf(), fprintf(), vprintf(), and vfprintf() error reporting
725
+ Add interrupt-safe recv() routine
726
+ Add interrupt-safe recvfrom() routine
727
+ Add interrupt-safe pthread_mutex_lock() routine
728
+ Add interrupt-safe select() routine
729
+ Add interrupt-safe fopen() routine
730
+ Add interrupt-safe sendto() routine
731
+ Backup and restore errno in real-time signal handler.
732
+ Add interrupt-safe vsnprintf() routine
733
+ Add interrupt-safe snprintf() routine
734
+ Add interrupt-safe vsprintf() routine
735
+ Add interrupt-safe sprintf() routine
736
+ Show complete list of args when complaining about unsupported argument
737
+ Adjust test for unknown argument to support the new format
738
+ Expose lua-interpreter as virtual pihole-lua binary
739
+ Add drop-in support for lua binary
740
+ Add drop-in replacement support for luac as well
741
+ Fix freeing regex pointers to set the global not the local object to NULL after free().
742
+ Add interrupt-safe asprintf() and vasprintf() routines
743
+ Add more debugging output for domain reloading (on receipt of SIGHUP)
744
+ Add REFRESH_HOSTNAMES=UNKNWON to support only refreshing recently active clients with unknown hostnames
745
+ Force refreshing of hostnames (according to REFRESH_HOSTNAMES config) on receipt of SIGRT4
746
+ Give explicit reason for skipping in debug message
747
+ Fall back to using ftruncate() when fallocate() return with "Operation not supported". This may happen if the kernel is older than 2.6.23 or glibc older than 2.10. ftruncate() has its own disadvantages, however, it is POSIX compliant (POSIX.1-2001) so should be supported even by ancient kernels.
748
+ Add new DEBUG_EXTRA flag used for special (temporary) debugging
749
+ Update src/resolve.c
750
+ num_regex is not in counters any more
751
+ Enable extra logging only when DEBUG_EXTRA is set
752
+ docs: fix simple typo, timestemp -> timestamp
753
+ Add interrupt-safe fallocate() routine, due to the special nature of the fallocate() macro, we hav to use a modified name fTLallocate() to implement this function
754
+ Prevent possible deadlock if log is not writable (e.g., permission denied)
755
+ Don't fail when trying to free(NULL)
756
+ Fix Unix socket error handling
757
+ Do not print user change information if there is no user change
758
+ Reply with configured BLOCKINGMODE to blocked CNAME requests
759
+ Revert "Improve compatibility with old (ancient) kernels"
760
+ Analyze original question and use it to decide whether we mock an A or AAAA reply when blocking
761
+ Don't iterate over all clients every minute trying to find new ones but only do this when the RESOLVE_NEW_HOSTNAMES event is set
762
+ Add DEBUG_EXTRA flag (#994)
763
+ Escape spaces by ~
764
+ Do not sync after executing regular expression on a domain
765
- Use proper version handling in spec
766
767
--------------------------------------------------------------------
768
Sat Dec 5 07:02:17 UTC 2020 - pihole-suse-packages@smar.fi
769
770
- Refreshed patch shared_libraries.patch
771
- gmp needs to be statically linked for Tumbleweed
772
- Update to version v5.3.2
773
+ Add additional_info column to test database (query table)
774
+ All queries: Hide UNKNOWN queries when not requesting both query status types
775
+ Add ability to connect to shared memory of the running FTL process
776
+ Bundle lua library "inspect"
777
+ Automatically load bundled libraries and make them available globally.
778
+ Test: Automatically loaded libraries
779
+ Add pihole.query([idx])
780
+ Test: pihole.query(0) returns details of the first query
781
+ Include FTL's prototypes in LUA
782
+ Remove shm data sourcing. We will query such data through the API with Pi-hole v6.0
783
+ Add support for ECS subnet parsing in FTL.
784
+ Log previously seen client when interpreting EDNS0 client subnet information
785
+ Evaluate possible EDNS data before analyzing a new query
786
+ Analyse ECS information only if EDNS0_ECS is enabled (enabled by default)
787
+ Add support for EDNS(0) CPE-ID (Common Platform Enumeration Identifier)
788
+ Protect against possible buffer overflow due to a malicious/malformed EDNS(0) payload
789
+ Add support for EDNS(0) MAC in BYTE format (dnsmasq option add-mac)
790
+ Add support for EDNS(0) MAC in TEXT format (dnsmasq option add-mac=text)
791
+ Add partial support for EDNS(0) MAC in BASE64 format (dnsmasq option add-mac=base64)
792
+ Correct name is EDNS(0) not EDNS0.
793
+ EDNS(0) debug message fine-tuning
794
+ Use preprocessor constants for OPTCODES to improve readability of the code
795
+ Add partial support for EDNS(0) COOKIES
796
+ Tests: EDNS(0) analysis
797
+ Make EDNS MAC available for FTL_new_query()
798
+ Tests: Simplify EDNS(0) tests
799
+ Use %z to print size_t for both 32 and 64 bit compatibility
800
+ The version of dig in the CI containers is too old for the option +cookie. Simulate the same with +ednsopt
801
+ Improve regex engine. This adds new features such as in-code comments, approximate matching (fuzzy matching)
802
+ Add regex-test mode
803
+ Allow test-regex mode to be started without log ans shared memory (alleviates write permission issues when running pihole-FTL as a different user)
804
+ Reduce overall costs by not always calling the approximate matching algorithm.
805
+ Add 26 regex tests (following https://discourse.pi-hole.net/t/regex-engine-improvements/34751)
806
+ Make regex-text output more user-friendly
807
+ Tests: Bats ignored empty lines
808
+ Mark all the new cli_{}() functions as ((const)) to make them subject to common subexpression elimination.
809
+ Use info box for step reporting
810
+ Adjust empty lines
811
+ Tests: Add tests for useful error hints for incorrect regex.
812
+ Mark get_regex_from_rowid as pure.
813
+ Modify regex-test mode for better batch-processing capabilities
814
+ Add quiet regex test mode for inclusion in pihole -q
815
+ Make quiet mode really quiet. However, speak up when there are regex errors
816
+ Tests: Test quiet regex-test mode
817
+ Simplify memory structure of regular expressions inside FTL. This allows for future regex extensions.
818
+ Add ;querytype=AAAA option
819
+ Case-insensitive query type checking in regex extra instructions
820
+ Add ;invert option
821
+ Make querytype string available everywhere in FTL.
822
+ Add ;querytype=!A option for INVERTED query type filtering.
823
+ Add tests for ";querytype=A", ";querytype=!A" and ";invert". Add explicit support for query type NS.
824
+ Terminate running FTL instance (if any) before starting tests.
825
+ Log invalid querytype as warning to the Pi-hole diagnosis system
826
+ Only print time/ID string when not in direct user interaction (CLI mode)
827
+ Fix API computation error introduced in e0609f14eee7903bca93020371576dad0ca93338
828
+ Blocking PTR requests may have been done unintentionally, print a warning about this
829
+ Warn if specified more than one querytype option (the last one wins)
830
+ Add tests for new ;querytype sanity check warnings.
831
+ Undo PTR blocking warning
832
+ Try to obtain MAC address from dnsmasq's cache (also ask the kernel) instead of only relying on the database content (may not be fully up-to-date)
833
+ Tests: Need to test also for the interface being specified in the log
834
+ Remove left-over debugging output
835
+ Tests: Tweak test to recognize new debug output format
836
+ Implement super-client infrastructure
837
+ Try to obtain MAC address from dnsmasq's cache (also ask the kernel) instead of only relying on the database content (may not be fully up-to-date)
838
+ Read superclients from new FTL database table
839
+ Import super-clients during start (before all other clients are added)
840
+ Implement client-based Query Log filtering for super-clients and ensure we always count both the normal and the super-client when there is a new query / garbage collection
841
+ Rename table from "superclients" to "superclient".
842
+ Tests: Database has been updated to version 9
843
+ Change concept of super-clients from MAC-based to index-based. We append a new column to the network table which can be used to assign super-clients to multiple devices. This can both cover automatic grouping (whenever MAC addresses are available) and also situations where this is not possible (when MAC addresses are not available, e.g., due to network layer separation). Real-time signal 3 causes FTL to re-import super-clients from the database without affecting anything else.
844
+ Move signal handling into a thread to avoid possible lock race-collisions
845
+ Tests: Test for correct import and assignment of super-client
846
+ Ensure we cannot end up in a self-locking state when opening the database.
847
+ Explicitly case time_t to (long long) before printing to address the musl-decision to make time_t 64 bit on 32 bit machines
848
+ Show also possible IPv6 nameservers. They are stored in an auxiliary (external) structure so they were not included in the debug outputs (even when they were used)
849
+ Use EDNS(0) MAC address for the network table (if available)
850
+ Do not try to locate a previously used mock device when EDNS(0) MAC data is available.
851
+ Add more debugging output to network table processing
852
+ Ensure mock-devices which are not assigned to any addresses any more (they have been converted to "real" devices), are removed at this point
853
+ Do not re-open gravity database when not forking for TCP workers (debug mode) and simplify network table routines (remove code duplication and prevent possible dead-locks when trying to resolve host names)
854
+ A small fix ensuring that we can determing the interface a query came in for all clients (also localhost)
855
+ Unify network table debug messages
856
+ Parse the kernel's Internet protocol address management to get information about local interfaces.
857
+ Delete addresses from network_addresses table which have not be seen for 7 days
858
+ Only try to resolve host names of upstream servers which were recently active. The current limit for "recently active" is hard-coded to two hours.
859
+ Fix error displaying if the upstream server replied with REFUSED or SERVFAIL
860
+ Extend domain filtering to also check the CNAME domain for domain-filtering (if this is indicated by the query status)
861
+ Improve API filtering for domains
862
+ Try to obtain host names from another address of the same device when there is none for the exact address (may happen, e.g., for IPv6 addresses)
863
+ Use already existing (but by default disabled) cleaning. The interval is customizable and defaults to MAXDBDAYS.
864
+ Fix syntax error
865
+ Remove duplicate function getDatabaseHostname()
866
+ Add explicit event queue to avoid possible race collisions when many signals arrive at the same time (or very very close to each other)
867
+ Fix subdirectory include paths. This is only to be explicit, the relative search finds them otherwise as well
868
+ Signals are not handled asynchroneously. Add additional delays in the tests to avoid them failing due to aksing too early for a result.
869
+ Add new dhcp-discover command
870
+ Implement multi-threaded scanning (constant scanning time regardless of the number of interfaces)
871
+ Increase timout to 10 seconds and ensure logging cannot be interrupted (for readability)
872
+ Be a bit more specific about binding errors
873
+ Also send DHCPREQUEST on unconfigured interfaces
874
+ Use unsigned 32bit variable for the XID everywhere
875
+ Implement DHCP options 44 and 252 (non-standard WPAD extension). Improve human-readable time formatter.
876
+ Do not print WPAD path if it is a control squence.
877
+ Fix GCC9 regression for printing the same buffer into itself in sprintf()
878
+ Request a lease with validity of 1 second in the DHCPDISCOVER packet
879
+ Do not try to free NULL pointer in resolveAndAddHostname
880
+ Show debug messages only in debug mode
881
+ Do not block shared memory when inactive clients are skipped.
882
+ Upload FTL log to tricorder.pi-hole.net instead of printing directly into the container output
883
+ Add more debug logging to getDatabaseHostname()
884
+ Do not skip recently inactive clients in ARP/neighbor table processing as they may still need properties to be updated (like host names, etc.)
885
+ Add real-time signal 4 to re-resolve all host names (clients + upstream servers)
886
+ Add real-time signal 5 to request ARP/neighbor parsing
887
+ Reset actions after the threads picked up the new real-time signals
888
+ Handling of clients not in ARP has been moved into add_FTL_clients_to_network_table()
889
+ Add more verbose version output (./pihole-FTL -vv)
890
+ Do not block shared memory when inactive upstreams are skipped. This was missed in #889
891
+ Rename resolveForwardDestinations() to resolveUpstreams() and make private functions static.
892
+ Every time FTL allocates more memory, we explicitly log how much (out of how much) space is used in /dev/shm
893
+ Explicitly warn users if space tends to be running out in /dev/shm
894
+ Handle SIGBUS, SIGILL and SIGFPE events in our crash reporter. Give human-readable explanations of why this happened where possible.
895
+ Only use stsvfs data is the function returned no error.
896
+ Explicitly cast the block counts to unsigned long long to avoid overflowing with drives larger than 4 GB on 32bit systems
897
+ Reopening the FTL database may lead to rare race-collisions in SQLite3. We avoid them by keeping the database connection open all the time.
898
+ Open database for history-reading
899
+ Improve checking boundaries of the shm_per_client_regex shmem object
900
+ Make realloc_shm message more informative
901
+ Add more comments to the code
902
+ Ensure to remap the per-client-regex struct when it is changed in a fork.
903
+ Use posix_fallocate() instead of ftruncate() when resizing and/or creating shared memory objects. This ensures we reserve the requested memory exclusively for ourselves.
904
+ Exit immediately if fatal memory errors happen
905
+ Add new status RETRIED (12) to be used for queries which were retried. If a query was retried five times before it suceeded, queries 1-4 will be marked as RETRIED and only query 5 will stay in status FORWARDED.
906
+ Use new armv4, armv5, armv6hf, armv7hf containers to build the corresponding binaries
907
+ Also handle retry events when the retry happened in the small timeframe of when we already have the upstream response but DNSSEC validation is still ongoing
908
+ Retried DNSSEC queries are ignored, we have to flag themselves. Retried normal queries take over, we have to flat the original query.
909
+ Move call to resolveNetworkTableNames() from resolver into database thread
910
+ Make timer output at termination of FTL human readable (days/hours/minutes/seconds).
911
+ Mark database as being available when creating a new database to avoid FTL skipping adding the tables thinking the database connection isn't ready.
912
+ Ignore ECS loopback addresses to avoid rewriting the client IP to a (useless because distant) localhost
913
+ Improve query interface origin determination
914
+ Add tests for ECS loopback ignoring
915
+ Upload binaries into writable html-subdirectory and download+verify uploaded binaries in an additional CI step.
916
+ Add new DEBUG_HELPER option. It logs any helper activity (and possible errors) to pihole-FTL.log
917
+ CMake install: update setcap to add the CAP_SYS_NICE capability
918
+ Log information about the user FTL is running as and if we're dropping to another user (such as nobody/nogroup)
919
+ Include upstream details in all-queries API response
920
+ Make FTL upstream destination port-aware
921
+ Rename super-clients ---> alias-clients
922
+ Catch fatal dnsmasq errors caused by incorrect config lines and print it in pihole-FTL.log
923
+ Store fatal dnsmasq message in message table so it can be used by the Pi-hole dashboard diagnosis system.
924
+ Add attribute gnu_printf to the new function FTL_log_dnsmasq_fatal()
925
+ Define default script path in /opt/pihole/libs and always build READLINE support if static libraries are available on the system
926
+ Download and install LUA script during test runs
927
+ Only print history debug messages when in debug mode
928
+ Update LUA 5.4.0 -> 5.4.1
929
+ Print hint that readline isn't available only in debug output. Otherwise, this output might leak into script executions when readline support is not compiled into the binary (missing libraries at build time).
930
+ Add API callback to remove DHCP leases without the need for a restart of the DNS/DHCP server
931
+ Add API debug messages
932
+ Skip clients with no active counts at all (may be old IPv6 addresses)
933
+ Keep upper case characters in host names because they may make them more readable (like FritzBox, WDMyCloud, or VacuumRobot)
934
+ Clarify that disabling the database only disables storing queries in the database. We still use the database for storing messages (such as regex syntax warnings) and alias-clients.
935
+ Silence warning about copying a NULL pointer for DHCP clients without a hostname
936
+ Print hint when database query importing is enabled but exporting is disabled - this may not what the user want.
937
+ Analyze all DHCP options dnsmasq is aware of
938
+ Convert numbers from net to host order before displaying them
939
+ Implement special handling for "pihole-FTL -- --help dhcp" and "pihole-FTL -- --help dhcp6"
940
+ Remove buster-specific binary test output
941
+ Downgrade expected glibc version and expect that stretch does not build a v5TE binary explicitly (instead, it does v4T)
942
+ Use new stretch-based ftl-build:v1.8 containers
943
+ Fix compatibility with GCC 10.
944
+ Add -fno-common to HARDENING_FLAGS.
945
+ Do not warn about query status 12 and 13 on import (retried queries)
946
+ Catch all real-time signals, decide later which one we handle and which one we ignore.
947
+ Check for memory allocation erros in parse_FTLconf()
948
+ Respect settings RESOLVE_IPV4 and RESOLVE_IPv6 also when trying to resolve host names from the database (network table)
949
+ Do not try to resolve IPs for records without hostnames in the network_addresses table.
950
+ Add new REFRESH_HOSTNAMES option
951
+ Use case-insensitive comparison of MAC address to ensure capitilization does not play a role.
952
+ Tweak code to restore compatibility with Gentoo gcc 10.2.0-r3
953
+ Always try to resolve hostnames when seeing a client/upstream serer for the first time. Also when it wasn't recently active (may happen on re-import from database history).
954
+ Add more debugging output and ensure refreshing rules are really only used when refreshing
955
956
--------------------------------------------------------------------
957
Tue Sep 15 07:40:28 UTC 2020 - pihole-suse-packages@smar.fi
958
959
- Update to version v5.2
960
+ Move counters definition from memory.c to shmem.c magically clears a lot of (wrong) VSCode errors. Doing this on request of a user as it is harmless.
961
+ Import unknown clients from ARP table
962
+ Explicitly set prepared statements to NULL when they are finalized.
963
+ Explicitly log if we had to make assumptions because the gravity database was not available.
964
+ Add DELAY_STARTUP setting to delay startup of the embedded dnsmasq.
965
+ Remove option FORCE_LOCAL_RESOLVER as we do not need it.
966
+ Add more comments, only print debugging output when DEBUG_DATABASE is enabled.
967
+ Simplify SQLite 3 database extension
968
+ Convert recently found (at most 1 hour old) mock-devices into "real" when we gather ARP/neigh information about them.
969
+ Fix nameserver list in auth mode.
970
+ Allow overriding of ubus service name.
971
+ CircleCI has an unforseeable number of devices in its ARP cache. Do not check for a strict number of clients during the tests. No changes to the source code.
972
+ Ensure blocking also works when the long-term database is not used. This was broken before as we returned too early (the SQLite3 engine was not yet fully initialized) when the long-term database was disabled.
973
+ Fix possible memory leak in config.c
974
+ Some general tweaks
975
+ Explicitly log failures in creating the new sqlite3 function.
976
+ Ensure we don't loose memory after ARP cache parsing.
977
+ Also return NO MATCH when invoking subnet_match() with non-TEXT arguments.
978
+ Add a comment that gethostbyaddr() may leak memory (only once, not seen leakage of more than 110 bytes)
979
+ Check arguments are of type SQLITE3_TEXT
980
+ Initialize resolver subroutines if trying to resolve for the first time
981
+ Only check/set client status when size of the array is not exceeded. Skip otherwise.
982
+ Do not import unknown clients from the ARP cache into FTL's memory. It is not our job to care about them if they are not doing any DNS queries.
983
+ Ensure ARP strings are NULL-terminated
984
+ Exiting instead of aborting may be benefitial in FTL forks.
985
+ Print arguments passed to embedded dnsmasq when at least one DEBUG flag is set.
986
+ Re-open gravity database (and re-prepare database statements) before accessing the database in case FTL forked.
987
+ Memorize PID of this thread to avoid re-opening the gravity database connection multiple times for the same fork
988
+ Implement process-private prepared gravity database client statements. This fixes an incompatibility across forks when serving TCP traffic using dedicated workers.
989
+ Silently increase size of vector if trying to read out-of-bounds
990
+ Explicitly include type definition of int16_t in config.h as needed by the musl-compiler
991
+ Remove append and delete instructions as we will always identify clients exactly by their IDs
992
+ Musl's realloc() does not zero any memory. Do this manually.
993
+ Free allocated memory after ordinary termination of TCP workers (TCP connection closed)
994
+ Fix rare problem allocating frec for DNSSEC.
995
+ Tweak to DNSSEC logging.
996
+ Restored astrisk match for auditlog
997
+ Correct, indent and simplify wildcard-compatible auditlog SQL logic.
998
+ Modify FTL's internal resolver to work in two phases: First, try to obtain a host name by using the internal resolver (i.e., FTL). In a second step, when FTL didn't know the answer, ask the resolvers as configured by resolv.conf. We've seen that the latter is necessary to get proper name resolution in docker environments.
999
+ Convert port from host to network byte order
1000
+ src/dnsmasq/dnsmasq.c: Labeled a lonely #endif
1001
+ Update dnsmasq version to pi-hole-v2.81
1002
+ Don't try setsockopt of non-existing NETLINK_NO_ENOBUFS option (fixes qemu issue).
1003
+ Revert "Don't try setsockopt of non-existing NETLINK_NO_ENOBUFS option (fixes qemu issue)."
1004
+ Convert failure of setsockopt(..., SOL_NETLINK, NETLINK_NO_ENOBUFS, ...) into warning.
1005
+ Make regex matching case-insensitive by default and remove config option to control this.
1006
+ Automatically block _esni.* subdomains of blocked domains. This can be disabled by setting BLOCK_ESNI=false in pihole-FTL.conf
1007
+ Simplify blocking metadata forcing code.
1008
+ Add full drop-in replacement mode pihole-FTL can use to mimic the dnsmasq binary.
1009
+ Add a shortcut for dnsmasq syntax test
1010
+ Do not decide whether we are blocking or not based on the gravity count (pre-v5.0 measure) but use the dedicated blockingstatus variable.
1011
+ Use /run instead of /var/run for FTL runtime files
1012
+ Deleted Swag store affiliate link
1013
+ Invoking free_sqlite3_stmt_vec() on a NULL pointer should be a harmless no-op.
1014
+ Check for validity of prepared statements before trying to use their get property.
1015
+ Create "message" table and log regex errors in there.
1016
+ Fix bit-order in subnet mask generation.
1017
+ Bump build container version.
1018
+ Use BLOBs as datatype for the custom columns to keep this feature as generic as possible. We can always append more columns to the end of the table whenever needed.
1019
+ Store message type as string instead of enum values.
1020
+ Ensure message table is also flushed on receipt of real-time signals.
1021
+ Always chose most suitable (= maximum) subnet for clients. This allows to configure specific settings for a whole range of devices but still exclude others. Complain softly (no error) if multiple configured subnets match with the same number of relevant bits.
1022
+ Ensure to finalize statement before closing the database connection.
1023
+ Explicitly include limits.h in src/files.c to improve ppc64le support on Alpine. This fixes #751
1024
+ Store subnet warnings in the message table.
1025
+ Add User-Agent to macvendor.py
1026
+ Process cached SRV records
1027
+ Simple optimizations
1028
+ Skip CircleCI Upload step on foreign PRs.
1029
+ Add addr2line output into our self-generated backtraces.
1030
+ Only compile print_addr2line() when we can actually generate backtraces.
1031
+ Add comment
1032
+ Remove unneeded inet_ntop
1033
+ Fix indentation
1034
+ Fix indentation
1035
+ Reload the privacy level when reloading the lists
1036
+ Bump to v1.2 build images.
1037
+ Add NAMES_FROM_NETDB option.
1038
+ Store client group information in shared memory.
1039
+ Add checks for the compiled binary for all supported CI platforms.
1040
+ Don't need to call inet_ntop here
1041
+ Also check result of "file pihole-FTL" to do some further checks on the generated binary. This now includes a check for the minimum supported Linux version.
1042
+ Add cmake build
1043
+ Implement install step to be the same as the Makefile build
1044
+ Default install prefix to /usr
1045
+ Put runtime output, i.e. pihole-FTL, in the root of the build dir
1046
+ Move sqlite3-ext to the database target
1047
+ Fix build of sqlite3. Move sqlite3 defines to the top level so they are on all.
1048
+ Add "not stripped" to arm-qemu test
1049
+ Reduce README.md
1050
+ Fix static build
1051
+ Really, really fix static build
1052
+ Add boolean to be able to store if we decided which groups to be used (an empty string can actually mean no groups as a special case)
1053
+ Fix broken RESOLVE_IPV{4,6} setting.
1054
+ Fix possible memory issue by obtaining pointer only when it is guaranteed that the pointer will not change.
1055
+ Remove Makefile
1056
+ Add license headers to CMake files
1057
+ Use cmake on CI to generate FTL binaries.
1058
+ Lower needed cmake version to 2.8.12
1059
+ Add CI build script.
1060
+ Add a build script for users. FTL can be build by simply running "./build.sh"
1061
+ Use cmake ENV{} to actually aquire the env variables
1062
+ Clarify comment
1063
+ Also check REVOLCE_IPV{4,6} setting when trying to derive a host name from the FTL database.
1064
+ Improve build.sh script. Add "install" and "clean" targets. Also ensure successive builds are possible to speed up the entire process.
1065
+ Allow no/false and yes/true for all config options.
1066
+ Re-aquire client and upstream pointers after a name resolution. As we're leaving the locked area for the resolve, we cannot control if the shared memory object changed meanwhile. If it did, then the pointers will point into nowhere, leading to a SEGV_MAPERR.
1067
+ Set nice value of pihole-FTL (configurable) to increase DNS server performance.
1068
+ Add CAP_SYS_NICE for the tests
1069
+ Ignore missing CAP_SYS_NICE in the CI tests as we are not allowed to change the nicencess.
1070
+ Add warning for invalid hostnames to FTL message table.
1071
+ Only open FTL database for storing a message when there is not already an open connection.
1072
+ Clarify warning that the check found AT LEAST one invalid character.
1073
+ Ensure host name errors do not accumulate.
1074
+ Close database on any erros to ensure nothing stays locked.
1075
+ Do not listen to real-time signals in helper processes
1076
+ Ignore real-time signals outside of the main process (such as in TCP forks)
1077
+ Fix #805. This fixes a buffer overflow when handling TCP requests. Details are on the dnsmasq mailing list.
1078
+ Ensure main process is terminated orderly when a fork fails miserably.
1079
+ Send real-time signal 2 from forks to main process to signal it should terminate with EXIT_FAILURE.
1080
+ Improve logging for forks and thread by including further details to the log ID
1081
+ Include thread names in crash reports to ease debugging.
1082
+ Print at least addresses when the addrline conversion wasn't successful.
1083
+ Bind to socket in thread instead of main process to ensure forks do not inherit sockets they shouldn't.
1084
+ Show fork created/terminated if any debug mode is enabled. Log reason for TCP worker termination (either client disconnected or connection timeout).
1085
+ Remove portfile not used by the current web interface any longer.
1086
+ Add support for additional query types: "A", "AAAA", "ANY", "SRV", "SOA", "PTR", "TXT", "NAPTR", "MX", "DS", "RRSIG", "DNSKEY" and "OTHER" (summing up all other possible DNS types)
1087
+ Tests: Test for new query types
1088
+ Don't use fshort-enums as it may make objects files incompatible.
1089
+ Always re-open gravity database handle when forking
1090
+ Children inherit file descriptors from their parents. As we don't need the API sockets in the forks, we clean them up after forking
1091
+ Thorough clean-up following 8270648da1eae77db381b848a47d79b85c206e29.
1092
+ Be explicit about if we count or query the number of domains. This simplifes the logic and makes it more readable.
1093
+ Do not assume a query to google.com returns only one fixed AAAA record.
1094
+ Remove privacy level 4. Systems currently running level 4 will automatically pick up the highest available level (which is now 3). Also tidy up enums into a dedicated file.
1095
+ Add additional_info column to queries table. We fill it with the domain that caused blocking the entire CNAME chain.
1096
+ Log CNAME blocking to pihole.log
1097
+ Include new column in database schema test
1098
+ Load domain causing the blocking in a CNAME inspection from the database during import. This ensures restarting FTL does not mean we lost this information.
1099
+ Store + import ID of regex used for blocking in additional_info field
1100
+ Fix an edge-case where CNAME blocking can be foiled when parts of the CNAME chain are already in the cache
1101
+ Fix incorrect attribution of the blocked status to the wrong domain. This also simplifies the terminology in the CNAME inspection routine.
1102
+ Revert "Remove portfile not used by the current web interface any longer."
1103
+ Tweak revert commit. We should add the port after configuring it and independtly from opening IPv4 and/or IPv6 sockets. Also, we cannot delete the port in close_telnet_port() as this function is called by TCP workers since v5.1 so we'd loose the port file when the first TCP query comes in.
1104
+ Test: Check port file exists and contains the expected number (4711)
1105
+ Skip second termiantion if there is already a termination event in progress. This has been observed with clients clsoing their connection exactly at the same time when dnsmasq wants to close the connection itself due to a timeout (it thinks this client is stale).
1106
+ Include the information for which client we have forked. Examplary message: "TCP worker forked for client 192.168.0.42 on interface enp0s25 (192.168.0.12)"
1107
+ Double time until TCP worker timeout from 150 seconds to 300 seconds. RFC 1035 says: "If the server needs to close a dormant connection to reclaim resources, it should wait until the connection has been idle for a period on the order of two minutes." We are unlikely to run into a limit here as the total number of allowed TCP workers is fixed as well.
1108
+ Increase limit for concurrently active TCP workers from 20 to 60. We've seen reports where 20 wasn't sufficient in user networks. Given that TCP workers do not really consume all that much more memory, this limit may even be increased further in case we recognize that 60 still isn't sufficient.
1109
+ Use atomic_flag_test_and_set to ensure that FTL_TCP_worker_terminating() cannot run two times even when called exactly at the same time.
1110
+ Wrap gravity reopening in locking to avoid a race collision with API requests (performed from independent threads).
1111
+ Do not loop over known domains in addition to looping over all FTL-DNS-cache entries.
1112
+ Factor out FTL sources into a separate object. This slightly enhances compilation speed.
1113
+ Allow IPv6 addresses ofthe form [::ffff:1.2.3.4] in --dhcp-option.
1114
+ Workaround for reported recvmsg() ignoring MSG_PEEK.
1115
+ Log listening on new interfaces
1116
+ Explicitly mark address port not used
1117
+ Compare address and interface index for allowed interface
1118
+ Cleanup interfaces no longer available
1119
+ Handle listening on duplicate addresses
1120
+ Remove duplicate address family from listener
1121
+ Suppress logging of listen addresses during startup.
1122
+ Apply floor of 60s to TTL of DNSKEY and DS records in cache.
1123
+ Change default lease time for DHCPv6 to one day.
1124
+ Do not try to bind a value when we should actually read one. This glitch was harmless, however, it prevented regex ID from being loaded from the database.
1125
+ Create and use a temporary copy of the domain string during the analysis
1126
1127
-------------------------------------------------------------------
1128
Sun Jan 19 09:12:25 UTC 2020 - Samu Voutilainen <smar@smar.fi>
1129
1130
- Remove comments from pihole-FTL.conf
1131
1132
-------------------------------------------------------------------
1133
Sat Jan 18 09:42:22 UTC 2020 - Samu Voutilainen <smar@smar.fi>
1134
1135
- Apply ignore-shmem.c-strncpy-error.patch only for Tumbleweed
1136
1137
-------------------------------------------------------------------
1138
Sat Jan 18 09:09:37 UTC 2020 - Samu Voutilainen <smar@smar.fi>
1139
1140
- Added patch fix-build-after-y2038-changes-in-glib.patch
1141
* Modified from upstream to adjust to filename changes.
1142
- Added patch ignore-shmem.c-strncpy-error.patch
1143
* The code adds null byte, so that is not a problem
1144
- Added patch fix-build-with-libnettle-3.5.patch
1145
* Modified from upstream to adjust to filename changes.
1146
1147
-------------------------------------------------------------------
1148
Sat Jan 18 08:26:08 UTC 2020 - Samu Voutilainen <smar@smar.fi>
1149
1150
- Comment cleanup
1151
- Ignore version.h caused macro-in-comment
1152
- Change to arch specific package
1153
1154
-------------------------------------------------------------------
1155
Mon Jan 13 11:40:12 UTC 2020 - Samu Voutilainen <smar@smar.fi>
1156
1157
- Changed pid path to point to real pid in service file
1158
1159
-------------------------------------------------------------------
1160
Mon Jan 13 09:12:52 UTC 2020 - Samu Voutilainen <smar@smar.fi>
1161
1162
- Added noreplace to config clauses
1163
1164
-------------------------------------------------------------------
1165
Mon Jan 13 08:06:43 UTC 2020 - Samu Voutilainen <smar@smar.fi>
1166
1167
- AdminLTE reads pihole-FTL.conf using PHP’s ini syntax
1168
1169
-------------------------------------------------------------------
1170
Fri Jan 10 11:58:06 UTC 2020 - Samu Voutilainen <smar@smar.fi>
1171
1172
- Added SUSE.readme for real
1173
1174
-------------------------------------------------------------------
1175
Fri Jan 10 09:01:53 UTC 2020 - Samu Voutilainen <smar@smar.fi>
1176
1177
- Added creation of /run/pihole via tmpfiles
1178
1179
-------------------------------------------------------------------
1180
Fri Jan 10 08:51:03 UTC 2020 - Samu Voutilainen <smar@smar.fi>
1181
1182
- Added undocumented file paths to supplied pihole-FTL.conf
1183
1184
-------------------------------------------------------------------
1185
Wed Jan 8 14:50:49 UTC 2020 - Samu Voutilainen <smar@smar.fi>
1186
1187
- Added commented /etc/permissions.d/pihole-ftl to instruct
1188
user about easy way of setting the permissions.
1189
1190
-------------------------------------------------------------------
1191
Wed Jan 8 13:30:11 UTC 2020 - Samu Voutilainen <smar@smar.fi>
1192
1193
- Added default pihole-FTL.conf
1194
1195
-------------------------------------------------------------------
1196
Wed Jan 8 12:03:01 UTC 2020 - Samu Voutilainen <smar@smar.fi>
1197
1198
- Patch Makefile to ignore the errors
1199
- Patch Makefile to contain dynamic libs
1200
1201
-------------------------------------------------------------------
1202
Wed Jan 8 11:56:47 UTC 2020 - Samu Voutilainen <smar@smar.fi>
1203
1204
- Generate version.h on the fly
1205
1206
-------------------------------------------------------------------
1207
Wed Jan 8 09:31:34 UTC 2020 - Samu Voutilainen <smar@smar.fi>
1208
1209
- Correct libnettle dependency
1210
1211
-------------------------------------------------------------------
1212
Wed Jan 8 09:31:20 UTC 2020 - Samu Voutilainen <smar@smar.fi>
1213
1214
- Removed comments
1215
1216
-------------------------------------------------------------------
1217
Wed Jan 8 09:07:26 UTC 2020 - Samu Voutilainen <smar@smar.fi>
1218
1219
- Added systemd service file
1220
1221
-------------------------------------------------------------------
1222
Wed Jan 8 08:43:00 UTC 2020 - Samu Voutilainen <smar@smar.fi>
1223
1224
- First version to build
1225
1226
-------------------------------------------------------------------
1227
Wed Jan 8 07:36:17 UTC 2020 - Samu Voutilainen <smar@smar.fi>
1228
1229
- Initial version
1230