Update

Due to a short software update, docu.ilias.de will be unavailable from 14:45 CEST for approximately 10 minutes.

25. Internationale ILIAS-Konferenz

Feature Wiki

Information about planned and released features

Tabs

Test: Increase flexibility in specification of IP address restrictions

1 Initial Problem

With Test: Add IP Ranges as Access Constraint to Test Settings (and Test: Revision of the Participant Tab using the new data table), we have the ability to restrict test access via IP address ranges. While a very neat feature in and of itself, we find that simply restricting by means of IP address ranges based on a upper and lower bound can be restrictive or even incompatible with networking setups across different institutions. For example, a specific exam room might not be assigned a coherent segment of IP addresses, but instead simply a set of IP addresses.

2 Conceptual Summary

This feature request reworks the two areas where the Test component uses IP address ranges (given by their start and end address, respectively). These have been introduced by Test: Add IP Ranges as Access Constraint to Test Settings (IP address ranges for accessing a test, for all participants; pull request 7150) and Test: Revision of the Participant Tab using the new data table (extension of single IP address to an IP address range, as a per-participant setting; pull request 8188). The changes made by this feature request to these existing implementations cause the following to be supported:

  • so-called IP address definitions (see Add page for globally defining IP ranges),
  • IP subnets in CIDR notation (e.g. "192.168.178.0/24" or "2001:db8:deca:f2c0::/58"),
  • singular IP addresses (e.g. "192.168.178.34" or "2001:0db8:5e11:0:0dad::25")

At the same time, this feature request removes the ability to specify IP address ranges directly in the Test/Participant settings. Existing data is migrated to utilize IP address definitions (see Add page for globally defining IP ranges), importing a test from a previous ILIAS release is be handled in a similar fashion.

IP range settings for individual participants will be reworked identically, however with the additional constraint that only up to one entry can be made.

2.1 Non-goals and end of scope

This feature request is limited to the Test. Other parts of ILIAS that might be aware of or use IP addresses are not affected. In particular, the user profile may have a setting for the client IP address, which is tested during login if it is set; this functionality is not modified by this feature request.

2.2 Relation to other Feature Requests

This feature is complemented by and requires some functionality from Add page for globally defining IP ranges. It is assumed that both feature requests are delivered together.

3 User Interface Modifications

3.1 List of Affected Views

  • ParticipantTableIpRangeAction (and modal associated with modifying the IP range of an individual participant)
  • SettingsAccess
  • The table displaying individual test participants
  • The search filter for individual test participants

3.2 User Interface Details

Currently, the settings for an IP address range in a Test consist of two inputs (lowest and highest IP address with access). These will be replaced with a Tag input field. This input field will accept the following types of values:

  • so-called IP address definitions (see Add page for globally defining IP ranges),
  • IP subnets in CIDR notation (e.g. "192.168.178.0/24" or "2001:db8:deca:f2c0::/58"),
  • singular IP addresses (e.g. "192.168.178.34" or "2001:0db8:5e11:0:0dad::25")

Asynchronous autocomplete is employed in order to suggest names of so-called IP address definitions (see Add page for globally defining IP ranges).

The modal for defining Client IP ranges for individual participants will be modified identically to the test settings. However, only one entry (no matter the type) is permitted.

For both settings pages, it will no longer be possible to use IP address ranges specified by their start and end IP address.

The views that are modified by this feature are

  • the modal for changing allowed IP ranges for individual participants,
  • the table displaying individual test participants,
  • the search filter for individual test participants,
  • the segment of "Access" settings which allows for the specification of IP ranges. 

The filter option operates exactly the same way than before with the "From" or "To" IP range filters.

The table displays the configured IP address limitation selections as a comma-separated list.

In order to achieve this check from a technical standpoint, class.ilTestAccess.php is modified. Instead of checking whether a given client IP address is within the preset range, the new implementation needs to iterate over every entry made in the settings process ("every tag") and check the client IP address against every option individually. See the current implementation of the IP access check and our variant for more information.

3.3 New User Interface Concepts

None.

3.4 Accessibility Implications

None, as far as we know of.

4 Additional Information

4.1 Involved Authorities

If this request is related to multiple components, please list both authorities for all related components.

4.2 Technical Aspects

Introduction of this feature requires a database migration (as currently there are two columns, "ip_range_from" and "ip_range_to" in the database). We propose merging these entries into a new column, "ip_ranges". This solution requires additional parsing, compared to the previous one. In our current mockup, parsing encompasses:

  1. splitting the database entry into an array with explode,
  2. checking every array entry for "ref_" (for IP address definitions), "/" (slash, for IP subnets in CIDR-notation) or validity as an IP address (for individual IP addresses),
  3. perform validation depending on the type specified in step 2,
  4. checking whether the client IP address falls within the areas defined by the database entry (and the array thereof)

At worst, this requires iterating over all available entries set in the database. While we acknowledge the potential performance limitation this introduces, we feel that this is negligible overall.

Implementation of the necessary migrations will be performed with Add page for globally defining IP ranges.

4.3 Privacy

This feature does not introduce any new privacy issues, as it merely expands upon the concepts previously introduced in Test: Add IP Ranges as Access Constraint to Test Settings and Test: Revision of the Participant Tab using the new data table.

4.4 Security

This feature does not introduce any new security issues, as it merely expands upon the concepts previously introduced in Test: Add IP Ranges as Access Constraint to Test Settings and Test: Revision of the Participant Tab using the new data table.

4.5 Contact

Author of this request: Meißner, Bastian [bmeissner.ur]
This request was created in association with Roeser, Nico [nicoroeser].

Please contact the T&A authority if you plan add this to the JF agenda and/or if the PR needed to be reviewed: Strassner, Denis [dstrassner].

4.6 Funding

Funding status and funding parties are listed in the block 'Status of Feature' in the right column of this page.

If you are interested to give funding for this feature, please get into contact with the person mentioned above as 'Contact'.

The University of Regensburg is implementing this functionality (incl. unit tests, suggestions for TestRail test cases, and support for some languages). As per discussing with the relevant authorities, funding is required for review and integration of this feature upon completion.

Strassner, Denis [dstrassner], 21 MAY 2026: Currently the University of Regensburg, the University of Bonn, and the KIT have offered funding. I contacted them to specify the concrete amount of funding they are willing to provide. Please contact me if your institution could also provide funding.

5 Discussion

Kergomard, Stephan [skergomard], 24. FEB 2026: As I understand this, this would introduce a place to administrate IP ranges in the administration settings of the Test. From where I stand this would be completely out of scope: The Test should never administrate IP ranges. From where I stand this should be two requests: One to introduce an administration for IP ranges in ILIAS in general and a second one to then use it in the Test (and then, to even remotely justify implementing this feature, probably more to introduce it in all places where IPs can be specified). This IP ranges could e.g. also be used to administrate access to the platform as a whole. I'm strictly against introducing the ranges in the administration of the test.

Sesterhenn, Fabian [sesterhenn], 25. FEB 2026: Please explain further why this request is "completely out of scope" for the test. As of right now, the test already supports limiting access to itself via IP address. Because of that I would say this request falls within the scope of the test.

Kergomard, Stephan [skergomard], 25. FEB 2026: If I'm understanding my post correctly, I didn't write that. I wrote that the administration of the IP ranges is out of scope for the test. A test allows to administer questions, responses, and grading, but not IP ranges. The article already specifies that there might be other uses for this option which is another strong hint that this doesn't belong inside the Test. But this request is labeled as pertaining to the Test and I'm specifying that most of it doesn't and that thus there are actually two requests with different scopes inside this one.

Rabah, Rachid [rabah], 27. FEB 2026:  I fully back Fabian's point. The Test already restricts access by IP, so supporting multiple ranges is a natural evolution of existing functionality and not a new concept. The need is real and shared across several institutions. Splitting this into a global IP administration plus a separate Test integration may be architecturally cleaner in therory, but delay a feature that is needed now for exam operations. Nothing in this FR prevents a system-wide approach later; but that possibility should not block a concrete, well-defined, and funded request.

Sesterhenn, Fabian [sesterhenn], 27. FEB 2026: My argument would be that users already can enter "ranges" of IP addresses by simply stringing them together. Not the same I know and I can see Stephans point. For us at THK this FR would be very welcome, but it isn't time-critical. And if there are indeed more use cases for a clean administration of IP ranges we should push this approach.

Meißner, Bastian [bmeissner.ur], 26. MAR 2026: We have rewritten this feature suggestion to only include further customization options for IP ranges. Naming for such IP ranges will be handled through Add page for globally defining IP ranges.

Nishino, Kenji [kentoni], 20. APR 2026: We consider this feature to be very useful and already have a corresponding plugin that allows us to manage IP addresses flexibly during an examination. Having the IP address restriction within the test object makes sense, as it allows us to control access from different rooms within our examination pool. At the same time, students requiring special arrangements can sit the exam from external locations. This ensures maximum flexibility whilst maintaining security. 

Hoyer, Philip [philiphoyer], 04. MAY 2026: I agree to Kenjis comment. KIT does very much welcome the ability to include multiple IP ranges in CIDR-notation for IPv4 and IPv6 addresses for restricting access to tests. This would allow as to conduct examinations in the specified pool rooms without having to lock the examination instance via web server config change or taking other measures. The same applies to the https://docu.ilias.de/go/wiki/wpage_8863_1357, which should enable trained examiners to restrict access to the exams by themself. If funding or testing for this feature is needed, please do not hesitate to contact me.

Strassner, Denis [dstrassner], 21 MAY 2026: Please note that this feature will only be part of trunk if his partner's feature, Add page for globally defining IP ranges also approved through the JourFixe and merged to trunk before this feature. We have discussed this condition with Nico and Bastian, and they agreed upon this. 

Roeser, Nico [nicoroeser], 5 JUN 2026: I have gone through the text of this feature request and reformulated some parts. Goal was to to harmonize the language and avoid misunderstandings during people’s preparation of the upcoming Jour Fixe and the discussion there. I have also found and inserted references to the second feature request (and respective pull request) which has introduced changes (admittedly, with rather low visibility) that are updated by this feature request. The details of this feature request are now easier to follow, I hope. I have of course not made changes to the actual assertions of this feature request.

6 Implementation

Feature has been implemented by {Please add related profile link of this person}

6.1 Description and Screenshots

{ Description of the final implementation and screenshots if possible. }

6.2 Test Cases

Test cases completed at {date} by {user}

  • {Test case number linked to Testrail} : {test case title}

6.3 Privacy

Information in privacy.md of component: updated at {date} by {user} | no change required

6.4 Approval

Approved at {date} by {user}.

Last edited: 24. Jun 2026, 08:51, Meißner, Bastian [bmeissner.ur]