Commit Graph

4945 Commits

Author SHA1 Message Date
DL6ER 48fc06d46b Add POST /api/teleporter to upload and install backed up configuration
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-25 21:51:12 +01:00
DL6ER d51aa378a3 Add /api/action/reboot and /api/action/poweroff (needs extra capability CAP_SYS_BOOT)
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-24 20:26:37 +01:00
DL6ER e4383775d1 Add /api/action/gravity which can be used to trigger a run of pihole -g. The output is live streamed using HTTP/1.1 chunked encoding.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-24 20:15:45 +01:00
DL6ER f9a9f3aa8f Add "--teleporter" to "pihole -FTL -h"
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-24 19:42:05 +01:00
DL6ER 2ecf2b841e Add (a stripped down variant of the) pihole-FTL.db database into the Teleporter archive
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-24 19:39:51 +01:00
DL6ER 1e4dbe41b5 Add (a stripped down variant of the) gravity.db database into the Teleporter archive
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-24 19:24:15 +01:00
DL6ER aec188bea1 Add /etc/hosts, /etc/pihole/dhcp.leases (if it exists) and all files in /etc/dnsmasq.d into the Teleporter archive
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-24 19:24:20 +01:00
DL6ER 785c21817e Add pihole-FTL --teleporter to create Teleporter ZIP file in the current directory. We need to add "zipinfo" as package to our ftl-build containers to be able to verify the fiel independently (this is already done by Python for the ZIP archive received from the API - but it doesn't hurt to test twice)
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-23 22:21:19 +01:00
DL6ER 96434c3e9a Fix a small logic quirk preventing us from being able to change config parameters via PATCH /api/config. This issue was created in 4c62a02026
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-23 22:02:05 +01:00
DL6ER 13168c377b Add GET /api/teleporter
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-23 21:56:11 +01:00
DL6ER 4c62a02026 Only change config when new value is different from the current value. This allows to set all config options at once but without restarting dnsmasq when none of its config values are changed
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-23 21:35:35 +01:00
DL6ER 6afab76dcc Give hint about where the JSON parser failed when passing invalid JSON.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-23 21:26:11 +01:00
DL6ER 15dd20b8ec Mark several config options as "advanced" (will be hidden by default on the future settings page)
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-23 21:21:22 +01:00
DL6ER 22941f9490 Update .github/workflows/openapi-validator.yml to account for "Node.js 12 actions are deprecated" warnings
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-23 21:06:11 +01:00
DL6ER 88e8ab9fd5 !!! BREAKING CHANGE !!! Redesign TOML config structure
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-22 12:32:10 +01:00
DL6ER 0856153699 Add ability to list allowed values (for enums) in JSON form. Add pretty-printing for TOML and update all help test descriptions from the official Pi-hole documentation
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-22 12:01:42 +01:00
DL6ER 2e54ca5577 Add /config/_server offering DNS server suggestions for the settings page
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-22 10:11:31 +01:00
DL6ER db128644c9 Rotate config files into /etc/pihole/config_backups instead of cluttering /etc/pihole itself
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-22 10:06:22 +01:00
DL6ER 47ac129a53 !!! BREAKING CHANGE !!! Rename pihole-FTL.toml to pihole.toml and it is a Pi-hole wide config file also covering all the dnsmasq settings, etc.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-22 10:01:54 +01:00
DL6ER 517e58909a Include FTL version in headers of pihole-FTL.toml and 01-pihole.conf
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-22 09:55:34 +01:00
DL6ER d5fd0f7dcf Remove mictortar, we'll use ZIP instead of TAR.GZ for multi-file archives. This is already available through miniz.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-22 09:49:11 +01:00
DL6ER b55c1a673a Add Desktop Management Interface (DMI) properties to /api/info/host
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-22 09:44:40 +01:00
DL6ER 5e67e488dc Tests: Add test for embedded GZIP compressor
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-22 09:24:40 +01:00
DL6ER 024130a638 Expose GZIP uncompressor via CLI
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-22 09:10:49 +01:00
DL6ER acf187d8b3 Expose GZIP compressor via CLI
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-21 19:43:22 +01:00
DL6ER 4026d5f7a2 Include info.yaml in build
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-21 14:54:13 +01:00
DL6ER 6e6b74a453 Add line with error on request for setting an invalid dnsmasq configuration to ease debugging
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-21 13:44:47 +01:00
DL6ER 1142540aac Single out a few items from /api/info/system into /api/info/{sensors,host,ftl}
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-18 20:16:31 +01:00
DL6ER 37bafc1365 Move /api/{ftl -> info}/client, /api/ftl/dbinfo -> /api/info/database, /api/ftl/sysinfo -> /api/info/system, and /api/version -> /api/info/version
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-18 20:16:31 +01:00
DL6ER aeb61a3026 Add HTTP OPTIONS method processing. Using something like "curl -X OPTIONS -I pi.hole:8080/api/... will return an Allow header specifying which endpoint supports which method.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-21 12:53:04 +01:00
DL6ER 6233bb489a Add GET /config/_topics which will be helpful when automatically generating a Pi-hole settings page
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-18 20:16:31 +01:00
DL6ER 10ed1459b3 Add "allowed" as JSON (where applicable) and "type" in /api/config?detailed=true to allow automatic settings page generation
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-18 20:16:31 +01:00
DL6ER 02b7f50c55 Keep (up to) 15 config files in rotated form. To save space, we leave the most recent 4 uncompressed and compress the remaining files
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-20 18:51:11 +01:00
DL6ER 88e57ef9e3 Manage custom.list through the universal /config/dns/hosts instead of its own interface. This reduces code duplication.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-20 18:32:21 +01:00
DL6ER 91f04fd053 Check if /sys/firmware/devicetree/base/model exists before trying to access it
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-20 18:15:41 +01:00
DL6ER 91f2645ace Also allow all IPv6 addresses in default webserver ACL
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-20 04:59:43 +01:00
DL6ER a59efd3ebd Run config file rotation only when writing to the config file
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-20 04:58:55 +01:00
DL6ER 28bb27c125 Fix incorrectly returned 404 for existing API endpoints when not logged in
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-20 04:56:11 +01:00
DL6ER 19d7582896 Free regex memory in final cleanup routine to ensure allocated regex do not show up as definitely lost memory in valgrind analysis
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-20 04:52:54 +01:00
DL6ER d041c494ae Add missing specs/{logs,endpoints}.yaml to pre-compiled logs
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-20 04:49:11 +01:00
DL6ER 0f69342811 Rotate config files away instead of forcefully overwriting them. This allows users to easily revert in case they made unwanted changes.
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-20 04:47:27 +01:00
DL6ER bd266d6589 Further improvements for check_space()
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-20 04:39:31 +01:00
DL6ER 1a084c3fda Improve code comments in daemon.c
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-20 04:37:11 +01:00
DL6ER 145d84db95 Add more detailed warning about why writing to or removing the PID file failed (if this is the case)
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-20 04:33:21 +01:00
DL6ER ea8ef2aa1b Fix incorrect union member being used in check_space()
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-20 04:32:24 +01:00
DL6ER 7b479782fd Implement proper testing of dnsmasq options before applying new configuration
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-18 20:12:11 +01:00
DL6ER 2d6c25d573 Add GET /config/{element} for more specific requests as well as PATCH and DELETE /config/{element}/{value} for direct array manipulation
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-18 18:19:19 +01:00
DL6ER a506d38d9f Materialize the pseudoelement config.port as config.dnsmasq.port (it can now also be changed)
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-18 04:39:09 +01:00
DL6ER 8cd94adbc4 Add ability to query nested config items, e.g. /api/config/dnsmasq/upstreams returning: {"config": { "dnsmasq": { "upstreams": [ "127.0.0.1#5335" ] } } }
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-18 04:31:11 +01:00
DL6ER 1ae49c7baf Add /api/logs/{ftl,http,ph7}
Signed-off-by: DL6ER <dl6er@dl6er.de>
2023-01-18 04:22:50 +01:00