Added support for restricting access to exams based on IP addresses.
In order to avoid the problem that students might participate on exams intended to be held e.g. on campus from at home, one can now restrict the access based on IP ranges. It is possible to restrict the access via multiple range blocks that can be predefined by the sysadmins. One could predefine e.g. IP range blocks for "Campus LAN", "On Site", "VPN", etc., which can be selected by lecturers for individual exams.
Every IP range block can be defined via multiple entries of disallowed and allowed IP ranges, where the addresses can be specified via IPv4 or IPv6 CIDR blocks (e.g. 127.208.0.0/16), or with wild cards or individual IP addresses. The usage of CIDR blocks requires an update to the updated version of NaviServer.
The IP restriction is used in the current implementation for restricting the regular start of the exam (proctored or non-proctored). Lecturers can still perform test runs for exams with restricted access.
This is needed to avoid a bad interaction with [ad_return_url] as it is used in www-toggle-publish-status in xowiki, since the workflow definition unsets the actual return_url, which causes ad_return_url to use the URL leading to this call (m=toggle-publish-status), causing a redirection loop.