| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
captiveportal_disconnect_all() removes the users one at a time and in some cases, when many hundreds of users are connected, can take up to several dozens of seconds to complete.
Instead of looping through all users, send all the accounting information, reset the user database and delete all the active rules and reinit them. Use locking to prevent new users from logging in until the function ends.
(cherry picked from commit 47f967856ef25557d87430026e8b208a8852381f)
|
|
|
|
|
|
|
|
|
|
| |
or rebooting
Make captiveportal_radius_stop_all() log the disconnections in the system log and fix it so that it works with the zone id parameter and sends complete RADIUS accounting packets.
Since several zones can share the same RADIUS server, send an Accounting-Off packet only when rebooting, not when disabling a zone.
(cherry picked from commit 3ece6d5404e0d4a53243d12e6b58793fad66dd5a)
|
|
|
|
|
|
|
|
| |
rc.prunecaptiveportal and captiveportal_disconnect_all()
Convert rc.prunecaptiveportal to lock()/unlock()/try_lock() and use the lock to ensure that there aren't race conditions between it and captiveportal_disconnect_all().
(cherry picked from commit d793617ee9b4c3f66575737df3e8f6cf04e7c782)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
captiveportal_disconnect_all() and captiveportal_prune_old()
Captiveportal_disconnect_all() loops through the active users and disconnects them immediately but doesn't remove them from the user database, only adding them to a list that is processed after the end of the loop.
Since the loop can take several seconds if there are many users connected, captiveportal_prune_old() can be called after some users have been disconnected but before they're removed from the database.
When this happens and the user has an idle timeout set, captiveportal_prune_old() tries to find the last activity time and gets an invalid value because the user has already been removed from the fw table, so it uses the login time as last activity time.
Finally, if the login time is more than one idle timeout in the past, it tries to disconnect again the user and sends a RADIUS Accounting-Stop packet with termination-cause Idle-Timeout and zero Acct-Input-Octets/Acct-Output-Octets that overwrites the correct packet sent by captiveportal_disconnect_all().
To work around it, remove the users from the database before disconnecting them (this fixes only the case where captiveportal_disconnect_all() runs before captiveportal_prune_old()).
(cherry picked from commit 025ec94a3285c129d2e14b00b629e811b83a9330)
|
|
|
|
|
|
| |
Add a function to disconnect all logged in users and a button to call it in the captive portal status page.
(cherry picked from commit feab4e54a446050555f4708d173977968f58918d)
|
|
|
|
| |
(cherry picked from commit aa1c6774927fd6e1b11a9315900035c0e084fd82)
|
|
|
|
|
|
| |
Add an option to choose whether the time spent idle by a user disconnected for exceeding the idle timeout must be included in the total session time sent to the RADIUS server or not.
(cherry picked from commit 1878e1c932fa467956ef44d4bd39adb7d4d21243)
|
|
|
|
| |
(cherry picked from commit f3838572c59ea5ebe656851511c75d217afec815)
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
For safety, use include_once() when including various "side" files.
There are a couple of instances of include("guiconfig,inc") that I
changes to use require_once() to be consistent with everywhere else.
The remaining cases of include() are just (hundreds of) head.inc and
footer.inc - those are only at the start/end of the ordinary top-level
interactive PHP files. There is no nested interaction of those to think
about, so that should be fine.
|
|
|
|
|
|
|
|
|
| |
$cpzone is always in lowercase, it's used as the array key used in
config.xml. Use it in two cases where the $cp['zone'] was being wrongly
used:
- To find out zoneid
- To replace PORTAL_ACTION url
|
|
|
|
|
| |
A maybe "better" version to try.
(cherry picked from commit 0a02fc5eefb265e0684d4447bf0a7c2a9687a188)
|
|
|
|
|
|
| |
Forum: https://forum.pfsense.org/index.php?topic=110243.0
This is a trial - make sure it really works before committing.
(cherry picked from commit 6fb36cdd74dd005a9a2bc799889978b4897e6dcf)
|
| |
|
|
|
|
| |
Text Align & Background Color
|
| |
|
| |
|
| |
|
|
|
|
| |
It needs a sleep between the stop and start, and it needs slightly different figures for start/stop time in the request.
|
|
|
|
| |
each iteration since it's changed inside loop. Reported on https://github.com/pfsense/pfsense/pull/2487
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
table entries. Ticket #5622
|
|
|
|
| |
default value PHP uses with sqlite 2.x versions (pfSense 2.1.x and earlier) and prevents the issues noted in Ticket #5622
|
| |
|
|
|
|
| |
was the reason they were added, it was never finished and it's not being used
|
| |
|
| |
|
|
|
| |
Fix of Bug #2155
|
|
|
|
|
|
| |
The malformed rules breaks the parsing of initialisation rules.
Issue: #4746
|
| |
|
|
|
|
| |
zone" command, breaking CP for any system that doesn't have VIPs defined.
|
|
|
|
|
|
| |
logged in, show the logout page instead if it's custom.
Must be a custom logout page that does not include a redirect.
|
|
|