DL6ER
|
862d4922e1
|
Merge branch 'development-v6' into new/queryLogRegex
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2024-01-16 22:46:31 +01:00 |
|
DL6ER
|
e35aa78030
|
Only free API data when the API was started
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2024-01-13 10:08:43 +01:00 |
|
DL6ER
|
35e1acb533
|
Do not accept password login when the system is configured to not require a password
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2024-01-07 15:26:56 +01:00 |
|
DL6ER
|
a961a4d14f
|
Do not accept DELETE session if no session is used (this also applies to password-less or localhost-no-auth mode)
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2024-01-07 15:20:24 +01:00 |
|
DL6ER
|
e5e9d11211
|
Fix DELETE API endpoints. They should return 204 when something was deleted and 404 is nothing was found at this resource
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2024-01-07 09:04:20 +01:00 |
|
Dominik
|
933e6f605f
|
Merge pull request #1728 from pi-hole/tweak/query_auth
Add authentication via query string
|
2024-01-07 07:50:58 +01:00 |
|
Dominik
|
8eef4d81bb
|
Merge pull request #1786 from pi-hole/tweak/session_no_ip
Do not pin SID to a specific IP address
|
2023-12-13 19:46:43 +01:00 |
|
DL6ER
|
dc1b1d1e08
|
Rename src/{ => config}/setupVars.{c,h}
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-12-07 16:58:22 +01:00 |
|
DL6ER
|
bd12616610
|
Do not pin SID to one specific IP address
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-11-27 13:34:00 +01:00 |
|
DL6ER
|
84ba6da404
|
max_sessions can only change across FTL restarts - not while it is running
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-11-10 20:05:06 +01:00 |
|
DL6ER
|
6e860f0c81
|
Add special reply for reused TOTP tokens
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-11-06 11:35:26 +01:00 |
|
DL6ER
|
28fe8dd499
|
Return 429 Too Many Requests with useful hint when number of available API seats is exceeded, also log currently configured number of API seats in the issues warning
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-11-06 10:38:15 +01:00 |
|
DL6ER
|
add7ceadda
|
Make number of maximum concurrent API sessions adjustable
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-11-04 17:00:59 +01:00 |
|
DL6ER
|
a96c283c0c
|
Add authentication via query string
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-11-03 19:41:08 +01:00 |
|
DL6ER
|
45fd5c8d36
|
Remove left-over debug output
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-10-31 19:40:33 +01:00 |
|
DL6ER
|
e741ba4c94
|
Add app password support
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-10-23 18:13:12 +02:00 |
|
DL6ER
|
f9a69a06ac
|
Store sessions only momentarily in between FTL restarts
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-10-22 23:32:11 +02:00 |
|
DL6ER
|
a2a8787239
|
Add new config option webserver.api.session.restore defaulting to true and move existing config option webserver.api.sessionTimeout -> webserver.api.session.timeout
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-10-22 08:51:11 +02:00 |
|
DL6ER
|
85b5c94858
|
Add save/restore of API sessions to the database to avoid a forced logout on FTL restarts. This updated the database to version 15
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-10-22 08:44:10 +02:00 |
|
DL6ER
|
64baa94395
|
Add new config option webserver.api.searchAPIauth defaulting to false
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-10-13 18:51:49 +02:00 |
|
DL6ER
|
b60e8bdc2f
|
Add /api/info/login and remove some parts from /api/auth
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-10-08 22:55:24 +02:00 |
|
DL6ER
|
c4237f1846
|
Include HTTPS port (if any) in /api/auth response
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-10-08 09:11:32 +02:00 |
|
DL6ER
|
856aae1bef
|
Add hint to login rate-limiting logging. We also remove the debug logging as there will always be a WARN
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-10-08 07:40:19 +02:00 |
|
DL6ER
|
2141db3d64
|
Add rate-limiting on password login attempts
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-10-07 19:59:32 +02:00 |
|
DL6ER
|
7772188498
|
Simplify deletion of sessions
Signed-off-by: Dominik Derigs <dl6er@dl6er.de>
|
2023-09-04 22:11:03 +02:00 |
|
DL6ER
|
b6b08f0c55
|
Prefer other authentication methods over COOKIE (which needs an CORS token in addition)
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-07-21 21:51:01 +02:00 |
|
DL6ER
|
6474c37e44
|
Add mg.request_info.is_authenticated to check if a user is authenticated
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-07-05 21:11:58 +02:00 |
|
DL6ER
|
2baa91b572
|
Enforece cookie auth only for API endpoints
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-05-31 21:13:27 +02:00 |
|
DL6ER
|
813509841b
|
Accept cookie authentication only when CSRF header is provided (and correct)
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-06-04 19:29:54 +02:00 |
|
DL6ER
|
f5f0354b3c
|
Generate and store CSRF token in the session
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-06-03 20:51:13 +02:00 |
|
Christian König
|
62cfc25b95
|
Fix spelling in v6
Signed-off-by: Christian König <ckoenig@posteo.de>
|
2023-05-30 22:42:13 +02:00 |
|
DL6ER
|
19c72d354e
|
!!! BREAKING CHANGE !!! Switch to the proven memory-hard password-hashing alogorithm BALLOON. The stored password hash will be upgraded on the first successdful login. To wave the necessity to implement BALLOON with every client trying to access the API, we remove the existing challenge-response authentication in favor of allowing login straight with the password. This has been avoided in the past, however, seems now acceptable that FTL (even by default) offers secure end-to-end encryption over HTTPS.
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-05-30 21:22:45 +02:00 |
|
DL6ER
|
73ae7e9474
|
Move password-related functions into a dedicated file
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-05-28 12:25:56 +02:00 |
|
DL6ER
|
fe3ed0bb74
|
Add LUA pihole.needLogin(remote_addr)
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-05-28 08:16:27 +02:00 |
|
DL6ER
|
7b72c762ce
|
Add dns boolean to /api/auth signalling if the DNS server is up and running
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-05-24 20:25:02 +02:00 |
|
DL6ER
|
f5cd3b00d2
|
Add strict_tls property to list of sessions showing if really every connection of this session happened over TLS/SSL
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-05-22 20:30:56 +02:00 |
|
DL6ER
|
f06b2e5397
|
Add tls boolean to list of sessions to indicate whether this session was established over a secure (end-to-end encrypted) connection
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-05-09 10:01:05 +02:00 |
|
DL6ER
|
b97d99ae3e
|
Start timer thread keeping an eye on timed blocking mode changes
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-05-07 09:15:12 +02:00 |
|
DL6ER
|
9b32553a62
|
Add API documentation for method to delete session by ID
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-03-13 10:32:19 +01:00 |
|
DL6ER
|
749486273e
|
Add method for deleteing sessions by their IDs
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-03-08 21:10:12 +01:00 |
|
DL6ER
|
4890e16b39
|
Use cryptographic randomness also for te API challenge and the SID generation
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-03-08 22:14:36 +01:00 |
|
DL6ER
|
9bf6176a64
|
Add TOTP 2FA to web interface and API
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-03-06 21:49:11 +01:00 |
|
DL6ER
|
b0c46dc416
|
Sub-paths in /api/auth are not allowed (except for explicitly existing API endpoints)
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-02-18 15:09:13 +01:00 |
|
DL6ER
|
4cc66df3f0
|
Rename /api/auth/session{ => s}
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-02-18 14:58:53 +01:00 |
|
DL6ER
|
fe6093f970
|
Remember login timestamp of API sessions
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-02-18 14:54:38 +01:00 |
|
DL6ER
|
9eaab48405
|
Mark currently active session when listing active sessions
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-02-14 22:59:52 +01:00 |
|
DL6ER
|
db0217f6f7
|
Add GET /api/auth/sessions for listing the currently active sessions
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-02-12 20:49:16 +01:00 |
|
DL6ER
|
5e436312f7
|
Invalidate all currently active sessions when password/pwhash are changed
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-02-12 20:42:04 +01:00 |
|
DL6ER
|
42c496e950
|
Add pseudo-element config->webserver.api.password which will compute and set webserver.api.pwhash to provide a convenient method of changing the password both via CLI and API
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-02-05 21:11:28 +01:00 |
|
DL6ER
|
187b0be39d
|
Rename config.webserver.{api => }.sessionTimeout and ensure it is also used for the cookie
Signed-off-by: DL6ER <dl6er@dl6er.de>
|
2023-02-03 18:12:55 +01:00 |
|