Commit graph

1649 commits

Author SHA1 Message Date
Adam Warner
b4af3f3ead
We can also hardcode the PID file location in utils.sh
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2026-04-25 10:51:55 +01:00
Adam Warner
b065830df0
Merge commit from fork
hardcode PID file path in service hooks
2026-04-24 22:10:31 +01:00
darkexplosiveqwx
c65b63b10b
Merge branch 'development' into logrotate
Conflicts resolved: automated install/basic-install.sh

Signed-off-by: darkexplosiveqwx <101737077+darkexplosiveqwx@users.noreply.github.com>
2026-04-20 17:15:49 +02:00
Adam Warner
a3ed471d05
security: hardcode PID file path in service hooks
The pihole-FTL-prestart.sh and pihole-FTL-poststop.sh scripts are
executed as root by systemd (via the '+' prefix). Both previously read
the PID file path from pihole.toml via getFTLConfigValue — a file the
pihole user can write to directly. An attacker with pihole-user access
could set files.pid to an arbitrary path and trigger a service restart
to cause root to delete then recreate any file on the system, enabling
local privilege escalation.

Fix by inlining the hardcoded path /run/pihole-FTL.pid directly in
each hook, removing any dependency on user-controlled config. The same
hardening is applied to the SysV init script for consistency.

See: GHSA-6w8x-p785-6pm4

Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2026-04-19 16:42:58 +01:00
yubiuser
dca5d882f6
Apply suggestions from code review
Co-authored-by: Adam Warner <github@adamwarner.co.uk>
Signed-off-by: yubiuser <github@yubiuser.dev>
2026-04-17 17:13:01 +02:00
Christian König
ed3b6cb776
Set versions in /etc/pihole/versions to null if script fails
Signed-off-by: Christian König <github@yubiuser.dev>
2026-04-17 17:13:01 +02:00
darkexplosiveqwx
1c7154d5da
fix comment
Signed-off-by: darkexplosiveqwx <101737077+darkexplosiveqwx@users.noreply.github.com>
2026-04-10 20:49:58 +02:00
darkexplosiveqwx
f88e3e2893
Remove reference to /usr/local/bin/COL_TABLE
This was most likely added accidentally (during a refactor in 2017)
Both the 2017 and current version use /opt/pihole/COL_TABLE, as defined earlier and sourced earlier in the code.
Remove PIHOLE_COLTABLE_FILE from REQUIRED_FILES since /usr/local/bin as well as /opt/pihole are never checked

Signed-off-by: darkexplosiveqwx <101737077+darkexplosiveqwx@users.noreply.github.com>
2026-04-10 20:49:54 +02:00
Adam Warner
1cb17cdcf9
Wipe version file before creating a new one (#6538) 2026-04-03 23:15:33 +01:00
Adam Warner
3c3952a60e
Merge commit from fork
Refactor version loading to enhance security and prevent shell injection
2026-04-03 16:53:17 +01:00
Adam Warner
2aa38f4fd7
Return 0 instead of 1 to make compatibile with set -e
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2026-03-24 18:43:32 +00:00
Christian König
2f8fa724f2
Prevent exiting due to set -e
Signed-off-by: Christian König <github@yubiuser.dev>
2026-03-22 10:01:11 +01:00
Christian König
300cdb71b8
Fix return status capture of FTL check_download exists
Signed-off-by: Christian König <github@yubiuser.dev>
2026-03-22 09:49:54 +01:00
Adam Warner
e001c87479
Refactor version loading to enhance security and prevent shell injection
Signed-off-by: Adam Warner <me@adamwarner.co.uk>
2026-03-18 21:41:36 +00:00
RD WebDesign
36601eef3a
Remove readonly from piholeNetworkFlush.sh to avoid error message
This is a quick fix to avoid the error when api.sh tries to set the
variable again.

Signed-off-by: RD WebDesign <github@rdwebdesign.com.br>
2026-03-01 17:29:19 -03:00
Christian König
f28233729c
Remove additional ':' from debug log system time output
Signed-off-by: Christian König <github@yubiuser.dev>
2026-02-24 08:51:07 +01:00
Christian König
4125bcccdc
Files should be created before calling addOrEditKeyValPair
Signed-off-by: Christian König <github@yubiuser.dev>
2026-02-18 09:25:10 +01:00
Christian König
ac37014628
Truncate version file instead of removing and creating freshly
Signed-off-by: Christian König <github@yubiuser.dev>
2026-02-18 09:22:11 +01:00
Christian König
d765ce768f
Wipe version file before creating a new one
Signed-off-by: yubiuser <github@yubiuser.dev>
2026-02-16 20:11:17 +01:00
darkexplosiveqwx
32b37668cf
add logrotate to DEB and RPM dependencies
Signed-off-by: darkexplosiveqwx <101737077+darkexplosiveqwx@users.noreply.github.com>
2026-01-29 21:22:50 +01:00
Dan Schaper
7442623f2f
Debug log - Add colors to gravity tables (#6485) 2025-12-04 12:52:07 -07:00
RD WebDesign
1f4ed9b518
Replace some strings with their colored equivalents
Signed-off-by: RD WebDesign <github@rdwebdesign.com.br>
2025-11-30 18:43:40 -03:00
RD WebDesign
95ae51bbdb
Use more specific strings on the tables to match only desired text
- use `--no---` and `--yes---` to make sure the strings won't match user
comments or parts of domains
- also use `-ALLOW-` and `-BLOCK-`

Also reduce the domain column to 90 characters

Signed-off-by: RD WebDesign <github@rdwebdesign.com.br>
2025-11-30 18:42:02 -03:00
RD WebDesign
247b0c506b
Remove custom FTL FirewallD zone checks from debug log
Removed checks for custom FTL FirewallD zone in piholeDebug.sh.

Signed-off-by: RD WebDesign <github@rdwebdesign.com.br>
2025-11-26 23:46:43 -03:00
Adam Warner
d4db2dca22
Improve gravity tables presentation on the debug log (#6460) 2025-11-25 18:59:04 +00:00
RD WebDesign
8c6bb3f8da
Use text colums instead of number codes on gravity tables
- Domains table ("type" column): replace 0, 1, 2 and 3 with
  "exact-allow", "exact-deny", "regex-allow" and "regex-deny"
- All tables: use yes/no for "enabled" columns

Signed-off-by: RD WebDesign <github@rdwebdesign.com.br>
2025-11-20 16:46:38 -03:00
RD WebDesign
987a59f7e5
Show "Block" and "Allow" instead of 0 and 1
Signed-off-by: RD WebDesign <github@rdwebdesign.com.br>
2025-11-19 16:35:39 -03:00
darkexplosiveqwx
1dc8bfc950
Use port from dns.port in piholeDebug.sh
Signed-off-by: darkexplosiveqwx <101737077+darkexplosiveqwx@users.noreply.github.com>
2025-11-16 16:35:05 +01:00
Rob Gill
bf41c3dded
debug - speed up processing and display of file contents and services
Use bash-internal globs and parameter expasion in preference to
assignment from output of ls or basename per file/directory.

When displaying file contents, call sed once and preprocesses the entire
file (eg pihole.toml), rather than spawning a new sed process for every
line of the file.

When checking services, call awk once to extract all data for each ip:port
pair, rather than three times.

Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2025-11-10 14:33:07 +10:00
RD WebDesign
40aa986af1
Add list "type" (block/allow) to the debug log table
Signed-off-by: RD WebDesign <github@rdwebdesign.com.br>
2025-11-03 17:39:36 -03:00
Dominik
106b999054
Rename views, upgrade gravity database and bump gravity databae version (#6386) 2025-10-05 20:33:30 +02:00
Michael Ziminsky (Z)
4bf67a3c79
Alpine: Add some additional dependencies and minor script fixes
Signed-off-by: Michael Ziminsky (Z) <mgziminsky@users.noreply.github.com>
2025-08-16 21:47:55 +00:00
DL6ER
9e258e7005
Rename views, upgrade gravity database and bump gravity databae version
Signed-off-by: DL6ER <dl6er@dl6er.de>
2025-08-15 19:39:21 +02:00
DL6ER
5cb601200c
Use non-interactive shell in utils.sh:getFTLConfigValue to avoid colored output
Signed-off-by: DL6ER <dl6er@dl6er.de>
2025-07-26 21:54:25 +02:00
Adam Warner
24d8754033
Revert "pihole api - use keepalive for curl queries" 2025-07-26 12:35:02 +01:00
Rob Gill
5b4a7b8b74
pihole api - use keepalive for curl queries
Adds the keepalive header to all curl requests

This reduces session establishment time across the multiple

requests necessary to authenticate, obtain response and log out

Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2025-07-26 18:48:32 +10:00
Dan Schaper
29b6252935
Fix gravity user permission checking and fix error on pihole-FTL --config failures (#6352) 2025-07-22 15:27:07 -07:00
Dan Schaper
f324d4cc7d
Separate network flush and arp table flush functions (#6319)
This PR updates the function flushing the network tables and the ARP table. It separates the two, renaming the whole function to networkflush and makes flushing ARP optional by appending --arp. Deletion of the network table is now done via FTL's /action/flush/arp endpoint.

Documentation: https://github.com/pi-hole/docs/pull/1253
Related PR in the FTL repo: https://github.com/pi-hole/FTL/pull/2541
2025-07-22 15:20:50 -07:00
Christian König
9580dc6560
Improve setFTLConfigValue function
Signed-off-by: Christian König <github@yubiuser.dev>
2025-07-22 12:50:42 +02:00
Christian König
285b3c37f9
Tweak fluash ARP function
Signed-off-by: Christian König <github@yubiuser.dev>
2025-07-22 12:45:22 +02:00
Dan Schaper
be36432f24
Speed up pihole api (#6336) 2025-07-21 10:51:25 -07:00
Dan Schaper
35ce3580e5
Reduce pihole --query jq calls (#6334) 2025-07-20 18:02:45 -07:00
Dan Schaper
90eb5778ca
Re-order authentication errors in verbose mode (#6338) 2025-07-20 17:46:07 -07:00
RD WebDesign
dad27f8d06
Remove readonly from list.sh to avoid errors
Signed-off-by: RD WebDesign <github@rdwebdesign.com.br>
2025-07-14 21:20:39 -03:00
Christian König
71501e15e5
Re-order authentication errors in verbose mode
Signed-off-by: Christian König <github@yubiuser.dev>
2025-07-13 22:16:40 +02:00
Rob Gill
0187087da0
Speed up pihole --api
Get session authentication information via single jq operation,
setting defaults if no data returned.

Simplify jq test for valid JSON data

Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2025-07-14 05:44:46 +10:00
Rob Gill
05ad3d7155
Update advanced/Scripts/query.sh
Co-authored-by: yubiuser <github@yubiuser.dev>
Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2025-07-12 22:25:22 +00:00
Rob Gill
ea8272d7d4
speed up pihole --query
Count list and gravity matches using jq in a single step.

Use jq's map to simplify list processing, eliminating intermediate
jsons.

Eliminate while loop for each lists's final output and formatting.

Signed-off-by: Rob Gill <rrobgill@protonmail.com>
2025-07-12 14:25:17 +10:00
Dan Schaper
1e88ce4975
piholeDebug - Get default route robustly (#6303) 2025-07-11 16:19:54 -07:00
Dan Schaper
b3d193b34c
Update Firewalld tests to match v6 ports (#6307) 2025-07-10 14:15:41 -07:00