Commit Graph

60 Commits

Author SHA1 Message Date
DL6ER 4cd935309e Merge pull request #969 from pi-hole/tweak/interruptsafe_systemcalls
Implement interrupt-safe systemcalls
2020-12-21 10:05:03 +01:00
DL6ER 0e0899691f Add more debugging output for domain reloading (on receipt of SIGHUP)
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-12-10 23:33:09 +01:00
DL6ER 7459d8235b Rename memory.c -> syscalls.c
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-12-09 20:21:03 +01:00
DL6ER 99a07ba57a Rename super-clients ---> alias-clients
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-11-15 19:09:48 +01:00
DL6ER 6f6ae518d2 Merge branch 'development' into new/super-clients
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-11-15 08:47:44 +01:00
DL6ER 7b0ab09b74 Make FTL upstream destination port-aware
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-11-13 00:16:55 +01:00
DL6ER b7fe809467 Reopening the FTL database may lead to rare race-collisions in SQLite3. We avoid them by keeping the database connection open all the time.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-09-27 23:35:44 +02:00
DL6ER 196fca38ff Merge branch 'development' into new/super-clients
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-09-21 23:28:57 +02:00
DL6ER 00bd54aead 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.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-24 20:39:41 +02:00
DL6ER 69c1181085 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.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-12 19:34:56 +02:00
DL6ER b422beb82a 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
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-11 21:13:36 +02:00
DL6ER e5b18944eb Implement super-client infrastructure
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-11 21:13:34 +02:00
DL6ER 54f92dd16a Merge branch 'development' into new/mac_clients
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-11 06:53:58 +02:00
DL6ER d3467daf44 Merge branch 'development' into new/tre-regex
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-11 00:21:33 +02:00
DL6ER 668ee9f83e Merge branch 'development' into new/mac_clients
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-11 00:18:54 +02:00
DL6ER 957ff0b3f8 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)
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-11 00:11:06 +02:00
DL6ER 82fe722af9 Add tests for ";querytype=A", ";querytype=!A" and ";invert". Add explicit support for query type NS.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-10 23:52:30 +02:00
DL6ER 778c233b38 Add ;querytype=!A option for INVERTED query type filtering.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-10 23:51:01 +02:00
DL6ER 68435f83d4 Make querytype string available everywhere in FTL.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-10 23:47:13 +02:00
DL6ER 3a4d8e2e0d Add ;querytype=AAAA option
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-10 23:43:02 +02:00
DL6ER fd79c1f5a4 Log previously seen client when interpreting EDNS0 client subnet information
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-08-10 23:09:59 +02:00
DL6ER 52af8e135b Merge branch 'release/v5.2' into new/mac_clients
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-07-29 12:21:12 +02:00
DL6ER a70cd5279f Merge pull request #847 from pi-hole/fix/guard_gravity_reopening
Safely reopen gravity database
2020-07-23 06:18:32 +02:00
DL6ER 9d0979431a Do not loop over known domains in addition to looping over all FTL-DNS-cache entries.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-07-21 20:01:35 +02:00
DL6ER 3af4f87dd5 Wrap gravity reopening in locking to avoid a race collision with API requests (performed from independent threads).
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-07-20 05:43:27 +02:00
DL6ER 0c4c92b3c2 Skip reading per-client regex data during the startup phase (initial history reading) to reduce CPU load. All (per-client) regex settings will be refreshed on the initial reload even when dnsmasq is started.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-06-23 23:31:12 +02:00
DL6ER 0923d6b73f Get groups for this client and set enabled regex filters when adding new clients
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-06-23 05:25:40 +02:00
DL6ER 9a131e5be2 Recheck more often for group updates for new clients to ensure we pick group-based blocking up as soon as possible.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-06-21 22:44:04 +02:00
DL6ER 843c4ab8c7 Recheck client groups after a certain amount of time.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-06-05 20:09:54 +02:00
DL6ER f18f758808 Merge branch 'development' into new/mac_clients
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-06-05 14:23:36 +02:00
DL6ER ed4e690245 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)
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-05-26 18:51:43 +02:00
DL6ER efee05115b Store client group information in shared memory.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-05-25 18:40:16 +02:00
DL6ER 24a3fa0158 Obtain and store interface also for clients not known through the neigh cache (e.g., VPN connected). This works currently only for clients requesting queries over UDP and when bind-interfaces is NOT used.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-05-20 14:29:42 +02:00
DL6ER 1b1e980745 Merge pull request #752 from pi-hole/new/warnings
Store warnings in database table
2020-05-11 23:54:44 +02:00
DL6ER 8133752224 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.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-05-11 20:03:28 +02:00
DL6ER 0e01af2910 Ensure message table is also flushed on receipt of real-time signals.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-05-11 19:40:43 +02:00
DL6ER 1bdb5ce677 Automatically block _esni.* subdomains of blocked domains. This can be disabled by setting BLOCK_ESNI=false in pihole-FTL.conf
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-04-21 14:10:33 +02:00
DL6ER 3aa6edcf07 Implement process-private prepared gravity database client statements. This fixes an incompatibility across forks when serving TCP traffic using dedicated workers.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-04-06 12:17:04 +02:00
DL6ER 564b286954 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.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-04-02 15:17:00 +00:00
DL6ER abe0c5bbab Merge branch 'release/v5.0' into tweak/sqlite_debugging
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-03-29 21:07:46 +00:00
DL6ER c0b1489434 Explicitly set prepared statements to NULL when they are finalized.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-03-25 07:57:44 +01:00
DL6ER 623f079f64 Import unknown clients from ARP table
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-03-24 15:56:58 +01:00
DL6ER 99bd5e77fb Client statement reinitialization has been moved into gravityDB_open(). No need to call it twice in FTL_reload_all_domainlists().
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-03-08 16:30:38 +01:00
DL6ER 7ca81e3d59 Merge pull request #685 from pi-hole/new/CNAME_inspection_details
Improvements to deep CNAME inspection data processing
2020-02-12 19:36:36 +01:00
DL6ER acdd2253e6 Finish renaming "forward destionations" to "upstreams".
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-02-11 10:09:02 +01:00
DL6ER c32d790eba Rename "forwarded" counter to "upstreams" to avoid confusion in the future. We used sed to ensure to have caught every reference.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-02-11 09:35:07 +01:00
DL6ER 7117d396b3 Add new CNAME-specific blocking modes [QUERY_GRAVITY_CNAME, QUERY_REGEX_CNAME, QUERY_BLACKLIST_CNAME] and store domain that was the reason for blocking during a CNAME inspection
Signed-off-by: DL6ER <dl6er@dl6er.de>
2020-01-29 09:57:43 +01:00
DL6ER 4c74a29f87 Add shared per-client regex array. This ensures TCP and UDP workers know the same details about client/regex combinations. This commit also fixes an issue with regex group associations for configured clients that have no assigned group.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-12-30 17:14:40 +00:00
DL6ER c9c7c27888 Add shared DNS cache for FTL. This cache is shared across forks and can be used by TCP and UDP clients avoiding any doubled amount of work.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-12-30 14:08:22 +00:00
DL6ER 997d9f9963 Reload all lists (but do not clear the DNS cache itself) on receipt of real-time signal 0.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2019-12-02 15:37:31 +00:00