Set the SameSite attribute to 'Lax' if not defined.
The SameSite attribute is a cross-site tracking prevention measure
and defines when cookies are sent within the HTTP headers and
the cases when they are not sent.
The 'Lax' configuration has the following features:
- Cookies are sent with same domain requests.
- Cookies are sent when the user navigates to your site by clicking
a link or submitting a form from another site.
- Not sent with requests made from other sites such as embeded content.
Prevent warning from browsers such as Firefox from complaining
about undefined SameSite value.
Hide the cache inspector when no cache elements are found in
neither of the selected clients.
Fix js exception caused by an array access in an empty image list.
Add a new user permission system to control the allowed operations
accessible from each account.
Add a permission matrix editable through the user/add and user/edit
views. The permission matrix has client, center, room, folder, image
and repository as permission targets and add, update and delete as
permission types.
Restrict each view based on the user permissions, hide all actions
from not autheticated users.
permissions defined in the class UserForm.
Serialize each user permissions into ogcp.json as:
{
...
"USERS" [
{
"USER": "admin"
...
"PERMISSIONS": {
"CLIENT": {
"ADD": true,
"UPDATE": true,
"DELETE": true,
},
... <- same structure for "CENTER", "ROOM", "FOLDER", "IMAGE"
and "REPOSITORY"
}
},
...
],
...
}
Grant all the permissions to old user configuration to not disrupt their
workflow. The administrator will need to assign the permissions for each
user.
Ignore scope and permission restrictions for admin users.
Save permissions and scopes even if the user is admin to account for the
case of a temporal admin promotion without losing the previous
configuration.
Use template inheritance for add_user.html and edit_user.html to prevent
big code duplication with the new HTML code to render the permission
matrix.
Make user administration an admin only feature.
Define methods get_permission and target_is_disabled to improve readability
in template conditionals that disable features based on user permissions.
Add view at /action/script/output to visualize the result of
/shell/run for multiple clients.
Use shell/output to request the execution data of the selected clients.
Each client element has execution timestamip (UTC), client ip, cmd,
return code and stdout of the executed command.
Add view at /action/script/run to visualize the available scripts
and run a single script file in the selected clients.
Use shell/list to request the script list and shell/run API call
to request the execution.
Add functionality to the "Opengnsys" text in the top navbar.
Comform to the general design priciple of executing a redirecting
after clicking the main logo.
Prevent unexpected behaviour in image operations caused by user
error.
Remove partitions of type 'EMPTY', 'LINUX-SWAP', 'CACHE' and 'EFI'
from the image/create, image/restore and image/update forms.
Remove check for the existence of these partitions in
action_image_restore as they are no longer available in the form.
If password and confirm password fields mismatch in user/edit,
then the user is deleted.
The deletion of the user happens before the password validation
and the new user configuration is only saved if the validation
passes.
Add code to properly handle the user deletion after the validation.
Add the option to leave the password fields empty in the form.
When the passwords are not set the user keeps the old password
configuration.
Define a EditUserForm based on UserForm in forms/auth.py to remove
the InputRequired validator in the password fields.
Update the html template to make the password fields optional.
Check if the image to be restored fits in the client's cache to
provide a better feedback for a failed restore operation.
Report the needed free space in clients where it does not fit.
Only check if the reported image size is not 0, older images
may not define the "size" attribute.
Ignore the check if the restore type is UNICAST-DIRECT.
Check the restored image fits in the target partition only if
the datasize value is not zero. Proceed with the check before
the image/restore request otherwise.
Fix the scope of the has_cache variable to reset the value for
each client.
Check the partition type based on the PART_TYPE_CODES string version
instead of the numerical value of the partition type.
Add front end for the client/move REST API.
Enable the move of multiple clients selected from the sidebar of
Scopes Management.
Show the target of the move operation as a list of paths in a
dropdown widget in the form. Each path will be structured as:
Server/Center/Room
The path will also contain folders if they are present.
Match user enabled scopes as numerical id instead of the scope
name.
Rename get_available_scopes to get_center_choices and add only
center data. This function returns the list of values used to
validate the data returned by the form (form.scopes.choices).
Fix scope filtering to only allow the scopes stored in the user
configuration. The filtering removes the scopes of type 'center'
from the scopes dictionary when the center id is not present in
the list of available scopes for the logged user.
Enable selection of multiple scopes in user/add and user/edit
for restricted users.
Replace quick form creation with an inline form definition in
add_user.html and edit_user.html
Check no center selection before missing server data.
Lack of checkbox selection will not carry server data as server
information is defined based on the components selected. Report
no center selection instead of lack server data in that case.
Allow the selection of multiple client checkboxes if they belong
to the same room.
Each checkbox input in the DOM has a "data-parent-room" attribute
whose value is the value of the "name" attribute of its parent
room scope component.
To check if a checkbox is a client and a sibling of the one being
checked we check if "data-parent-room" is available for both nodes
and if they have the same value.
Add cache buster to soleta.css in base.html to have control over
cache expirity.
Bump soleta.css version to ensure browser does not used older (cached)
version.
Add CSS rules to show a disclosure widget in the sidebar.
Show center checkboxes as disabled in the commands view sidebar
for visual consistency.
Add class "collapsed" to the proper HTML components to keep a
proper state on page reload.
Maintain selections made in scope sidebar after clicking an action
(ie. client add, room delete, etc.)
Use ids instead of names as the name html property is the same for
every room and center.
Call keepSelectedClients() in macros.html for both Scope Management
and Commands instead of only in Commands.
Add a "context" value to the checkbox id to separate scope and
commands values in local storage.
Fix the definition of javascript code to generate a correct
message window for multiple error messages.
The error is cause by a redefinition of 'let bgclass' in multiple
lines when the html template receives multiple error messages.
Each iteration to generate the code for the error messages tries
to redefine the variable bgclass and it causes the js to fail.
Add the server scope during scope filtering for user accounts
with restricted scope access.
The HTML server scope component in the sidebar holds important
information as a hidden component. The removal of the server
scope also removes the respective HTML component in the web.
Missing server scopes result in a backtrace while trying to get
data such as server IP.
Add better visualization to the boot modes shown in /action/mode.
Use a dictinary to implement hardcoded human readble strings of
the form choices.
A better method will be implemented in the future.
Defining a partition size <1 causes the partition to show with
a different configuration to the one configured in the form.
Any <1 size partition shows as Linux, Empty and the size field
without value.
Validate the form so we refuse any partition with size <1.
Add UNICAST and UNICAST-DIRECT to the image restore form.
UNICAST-DIRECT will transfer the images through a samba share
and proceed with the restore process without using any cache
partition.
UNICAST will try to first copy the image to the cache partition
and generate the full.sum file. Then the restore process is
executed.
Add default values to the partition and format form component.
Prevent index None from showing in the form when the client has an
empty disk with no partitions. Now the form will be created with
an entry of index 1 in adition to Type and Filesystem as Empty in
that case.
Use base 2 storage units in html templates as that's the correct
representation for the values shown in the web.
Remove units such as "Gbytes" and "MB" for their binary byte unit
counterparts.
Define the timestamp in the codepath executed when no server is
found active. Prevent the web to show a backtrace because the
timestamp variable is used but not defined as it is only created
when a server is found.
Implement cache management through cache/list and cache/delete
API REST methods.
The view corresponds to the URL action/cache and contains three
main parts:
- Free cache available in the client's bubbles.
- Image selection form to request the deletion and view the
client with that image in cache.
- Cache details per client to see total, used and available cache.
The main usecase for the view is the removal of cache to make room
for new images in clients with slow connections. Checking clients
where available cache space is not enough to hold the new image and
then requesting removal of specific images.
The html template receives the following structures from the view:
storage_data[ip] = {'used': 223452345,
'total': 2345234523452}
client_images[ip] = [f'{image_name}.{image_checksum}', ...]
image_data[f'{image_name}.{image_checksum}'] = {
clients: ['192.168.0.1', ...],
size: 34534530850,
name: image_name,
}
Enable working over multiple clients even if their OS configuration
is different to greatly improve the user's workflow.
Group clients with the same configuration under the same checkbox
in the form.
Report clients excluded from the boot instruction due to not
matching OS configuration.
Remove the 'Format' field from the Partition and Format form as
the default value will always be to format the partitions.
This will lead to less portantial codepaths to maintain and
support and less manual clicks in the web form.
Show the partition id as a non editable label in each partition
of the Partition and Format form.
Assign sequential partition id from top to down and recalculate
every partition id when a partition is removed.
Update all the name and id fields of the elements in the partition
form after a delete operation.
Inconsistent ids make form.validate() to always return False, this
causes all the form validation code to be skipped.
Add partition type info to the form data.
Check if the user is trying to restore on an invalid partition
type and report an error if that's the case. The invalid types are
'EMPTY', 'LINUX-SWAP', 'CACHE', 'EFI' and 'WIN-RECOV'.
Validate imagen names in POST /action/image/create.
Remove spaces at the begining and end of the image name, then
report error if the image name still contains space characters.
Refresh the disk layout before any command that displays it, no need to manually
call command -> refresh.
this cannot be skipped, POST /setup is an asynchronous invocation in ogserver is
asynchronous, POST /refresh provides the existing disk layout, otherwise it
shows the existing layout in the database which is not complete.
this is also good in case someone manipulates the disk from the command line.
Although ogcp support for multiple server, the plan is to only support for one
server in this version.
Remove Server: context information and Repo: in list images
preselect 'pxe' (if available) at adding a new client.
use a dedicated template for adding a client and remove irrelevant
partition table; client has yet to set its partition, so everytime, the
table would load empty.
Make delete confirmations show information in a manner that is easier to
read. This includes delete confirmations for centers, room and folder.
Messages are now more clear. Also, content table shows the type of the
items (folder, room, etc.)
Make list images command show only information of the images the user
has selected in the sidebar.
Improve readability of the information.
Show size and data size attributes rounded
Warn the user if no images have been selected in sidebar