summaryrefslogtreecommitdiffstats
path: root/ogcp
Commit message (Collapse)AuthorAgeFilesLines
* views: validate MAC address after POSTAlejandro Sirgo Rica2024-07-031-2/+21
| | | | | | Check if the provided MAC address is valid in every form where the use has to provide one. Show an error message when the format is incorrect.
* views: show MAC as lowercase with colon separatorsAlejandro Sirgo Rica2024-07-031-4/+7
| | | | | | | Define a function to format the MAC string for every view in the web. Example of formatted MAC address: aa:bb:cc:dd:ee:aa Show MAC address in client pills in that same format.
* views: normalize every MAC address during POST processingAlejandro Sirgo Rica2024-07-031-3/+6
| | | | | | | | | | Use aabbccddeeaa as MAC format in every payload. List of accepted MAC formats: aabbccddeeaa aa:bb:cc:dd:ee:aa aa-bb-cc-dd-ee-aa aa.bb.cc.dd.ee.aa
* templates: fix commands button layoutAlejandro Sirgo Rica2024-07-031-4/+5
| | | | | Fix <div> structure to enable proper flow layout when the web size changes and the command buttons need to reposition.
* templates: preserve formatting in script outputAlejandro Sirgo Rica2024-07-011-1/+1
| | | | | Use <pre> instead of <samp> to display command output, as <pre> preserves the new lines and the format of its inner text.
* views: remove debug messages with payload infoAlejandro Sirgo Rica2024-07-011-2/+2
| | | | Remove print statements in views.py to reduce logging noise.
* ogcp: set default SameSite attribute in session cookie1.1.3-23Alejandro Sirgo Rica2024-06-281-0/+4
| | | | | | | | | | | | | | | | | 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.
* templates: improve client list in cache and boot os viewsAlejandro Sirgo Rica2024-06-282-2/+10
| | | | Show client IPs inside div components with a custom "card" styling.
* forms: replace Ok with Submit in form submit buttonAlejandro Sirgo Rica2024-06-281-3/+3
| | | | Make the submit label more uniform across the forms.
* templates: replace start session with boot OSAlejandro Sirgo Rica2024-06-281-1/+1
| | | | | Update the header in the BootOS view to better fit the purpose of the operation.
* templates: add vertical padding to the no cache messageAlejandro Sirgo Rica2024-06-281-1/+1
| | | | | Add vertical padding to the div holding the report of no selected client with cached images.
* templates: improve spacing in main dashboardAlejandro Sirgo Rica2024-06-281-1/+1
| | | | | Use a plain line break instead of a horizontal rule to split the server information.
* templates: hide detailed cache view with zero imagesAlejandro Sirgo Rica2024-06-281-5/+6
| | | | | | 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.
* templates: fix no image message in manage cache viewAlejandro Sirgo Rica2024-06-281-1/+1
| | | | | The template conditional must show the table when form.images has more than zero elements.
* templates: improve user sidebar styleAlejandro Sirgo Rica2024-06-281-3/+4
| | | | | Use Bootstrap list-group class and adjust content alignment with a flex container.
* views: add check for failed /center/info get requestAlejandro Sirgo Rica2024-06-281-0/+6
| | | | Check if the request response is null and report it to the user.
* views: notify user edit and user creationAlejandro Sirgo Rica2024-06-281-4/+8
| | | | Show a flash message when an user is created or edited successfully.
* views: fix English grammatical error in error messageAlejandro Sirgo Rica2024-06-281-5/+5
| | | | Replace "do not exists" with "does not exist" in error messages.
* templates: fix user form alignmentAlejandro Sirgo Rica2024-06-272-2/+3
| | | | Add class="mx-5" to allign the form with the header of the page.
* ogcp: improve page heading styleAlejandro Sirgo Rica2024-06-2748-62/+69
| | | | Make headings take less space and have a dashed line under them.
* ogcp: add user permission mechanismAlejandro Sirgo Rica2024-06-2713-136/+309
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* templates: rename Edit client to Update clientAlejandro Sirgo Rica2024-06-251-1/+1
| | | | | Rename Client/Edit client menu in scopes management view to keep the same naming pattern as the other menu elements.
* ogcp: add support to view script outputAlejandro Sirgo Rica2024-06-253-0/+118
| | | | | | | | | | 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.
* ogcp: add support to run scripts in clientsAlejandro Sirgo Rica2024-06-254-1/+113
| | | | | | | | 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.
* templates: make opengnsys buttom redirect to dashboardAlejandro Sirgo Rica2024-06-251-1/+1
| | | | | | 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.
* views: remove unsupported partition types from image operationsAlejandro Sirgo Rica2024-06-251-12/+31
| | | | | | | | | | | 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.
* templates: rename Start session to Boot OSAlejandro Sirgo Rica2024-06-201-1/+1
| | | | | Use a better name for the form action used to boot an operating system in the clients.
* templates: show client details at the end of the client optionsAlejandro Sirgo Rica2024-06-201-2/+2
| | | | | Move "Client details" to the last option of the "Client" dropdown in the Commands page.
* views: prevent user removal after password mismatch in user/editAlejandro Sirgo Rica2024-06-191-2/+6
| | | | | | | | | | | 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.
* views: make password optional in user/editAlejandro Sirgo Rica2024-06-193-15/+30
| | | | | | | | | 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.
* views: improve cache check messages in image/restoreAlejandro Sirgo Rica2024-06-191-2/+2
| | | | | Improve the wording of the error message reporting the clients without enough cache to hold the image to be restored.
* views: check if the image fits in cache before image/restoreAlejandro Sirgo Rica2024-06-181-0/+33
| | | | | | | | | 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.
* views: ignore image datasize check if datasize is zeroAlejandro Sirgo Rica2024-06-181-1/+1
| | | | | | 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.
* templates: remove servers view in main navbarAlejandro Sirgo Rica2024-06-181-3/+0
| | | | | Remove the Servers button from the main navbar but keep the multiserver related code.
* css: offset the sidebar to acommodate all disclosure widgetsAlejandro Sirgo Rica2024-06-182-1/+5
| | | | | Add a left padding to show the disclosure widget associated to a server item. Prevent the positioning of out of screen components.
* js: show correct initial disclosure widget stateAlejandro Sirgo Rica2024-06-172-1/+3
| | | | | Add the class "collapsed" to the html elements defined as not shown in the local storage for the images list sidebar.
* ogcp: add room details view to scopes managementAlejandro Sirgo Rica2024-06-173-0/+52
| | | | | | Add a readonly view for the room data. Mark all the form fields as readonly and set the hidden attribute to the submit field.
* ogcp: add center details view to scopes managementAlejandro Sirgo Rica2024-06-173-0/+56
| | | | | | Add a readonly view for the center data. Mark all the form fields as readonly and set the hidden attribute to the submit field.
* views: fix image restore cache checks1.1.3-22Alejandro Sirgo Rica2024-06-171-2/+3
| | | | | | | 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.
* ogcp: add move client to scopes managementAlejandro Sirgo Rica2024-06-174-1/+94
| | | | | | | | | | 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.
* templates: remove console.log statement in mode.htmlAlejandro Sirgo Rica2024-06-171-1/+0
| | | | Remove print statement generating noise in the browser logs
* templates: show oglive in client pillsAlejandro Sirgo Rica2024-06-171-0/+19
| | | | | | Add oglive to each client pill in action/oglive using js. This makes easier to have a global perspective of the client's configuration.
* ogcp: fix restricted user mode1.1.3-21Alejandro Sirgo Rica2024-06-141-18/+13
| | | | | | | | | | | | | | 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.
* forms: improve scopes field description in UserFormAlejandro Sirgo Rica2024-06-141-1/+1
| | | | | Improve the information provided to the user related to scope selection.
* forms: use checkboxes for scope selection in UserFormAlejandro Sirgo Rica2024-06-143-10/+83
| | | | | | | 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
* templates: remove dead code from edit_user.htmlAlejandro Sirgo Rica2024-06-141-8/+0
| | | | | Remove the <script> block as the function digestUserFormPassword no longer exists.
* views: fix center/update validation with no selectionAlejandro Sirgo Rica2024-06-141-3/+3
| | | | | | | 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.
* views: fix folder/update validationAlejandro Sirgo Rica2024-06-141-2/+2
| | | | | Validate request parameters before accessing the dictionary values. Prevent web backtrace.
* js: allow selection of multiple clients in scopes sidebarAlejandro Sirgo Rica2024-06-142-3/+16
| | | | | | | | | | | 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.
* ogcp: add disclosure widget to sidebarAlejandro Sirgo Rica2024-06-144-3/+19
| | | | | | | | | | | | 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.