Reduced the amount of code by switching which element the access
denied message is added to. Switched section to aside to better
reflect their semantics. "Access denied" is now a h2 element in order
to follow heading guidelines.
Mostly renaming of HTML tags to be more in line with the semantic
standard, but also a slight restructuring so the page gets a better
heading structure and the tabbing experience becomes more in line with
other DSV sites.
Buttons now always get focus from left to right, with the main
actionable button last in the context. they also get a slightly more
obvious outline.
Added a footer containing a very minimal accessibility statement and
contact information.
CSS has been restructured to use nested selectors as far as possible
in order to make the file more readable.
A new /cron endpoint has been introduced, which triggers a cleanup routine.
The cleanup routine loops over all existing clients and deletes all that are
older than the value configured in config.ini.
Periodically calling the cron endpoint is the responsibility of the server admin.
Basically all configuration variables are set in the if block governed by
the existence of config.ini. If the file already exists, the script would
quickly run into uninitialized variables and crash. The script will now
refuse to proceed if config.ini exists.
The UserInfo endpoint is for fetching the users profile (name, email, phone number, picture, and so on). Token introspection is for inspecting the access token and determining the authorities the user has (subject (principal), entitlements, and scopes granted).
Also made a small change to the python startup handling, ensuring that
there is always a tunnel configuration file as soon as the service
successfully starts for the first time.
The information is sent via the cookie 'server_settings'. The value is a
base64-encoded json object containing the data necessary
for site-specific customization.
Also fixed a bug that was preventing the 'add new client' button from being
disabled when the client limit is reached.