Commit Graph

546 Commits (159f4c56a51344341a0d108629bef751595a095e)
 

Author SHA1 Message Date
Javier Hernandez 67cca9872a templates: Show username in top navbar
Show the username of the user currently logged-in in the top navbar.
2023-12-18 13:49:05 +01:00
Javier Hernandez 869f15ecf0 Limit restore image to images of assigned repo
Allow to restore only to images that are in the repo the client
is assigned to.
2023-12-15 13:02:54 +01:00
Javier Hernandez 6cb7be03fd Add scope-management for non-admin users
Add scope-management menu with limited commands for non-admin users;
commands allowed are add/edit/edit/delete/import client(s)
2023-12-15 12:06:27 +01:00
Javier Hernandez a9d367e795 views: Preselect client's associated repo
Make the create-image menu preselect the repo of the selected client
2023-12-15 11:44:38 +01:00
Javier Hernandez 24aab951a8 Group images by repos
Make the sidebar from the images menu display the list of repos grouped
by repos
2023-12-14 12:35:01 +01:00
Javier Hernandez aa6061dad7 Limit allowed scopes to only centers
Modify the add/edit users menu to make the 'allowed
scopes' field only display centers
2023-12-13 13:28:02 +01:00
Javier Hernandez 131404dfd7 ogcp.js: Remove id part from client bubbles
Bubbles depicting clients were previously displaying in the format
<client_name>_<client_id>. This commit changes that to only display the
name
2023-12-13 13:25:29 +01:00
Javier Hernandez 609ff0e19e views: add select repo in import clients
Add, in import clients menu, a selector to select the repo to be
associated with the clients about to import

modify OG_CLIENT_DEFAULT_BOOT variable to be 'oglive'; 'pxe' is not a
valid boot mode, and ogserver would return an error
2023-12-13 11:39:08 +01:00
Javier Hernandez 069733b00e base: Increase column size for sidebar
Make the sidebar wider to improve readability of its content
2023-12-12 14:32:47 +01:00
Javier Hernandez 0f5ba31c09 views: Add 'description' field to image details
Add a 'description' field to the image-details form.
2023-12-12 11:42:43 +01:00
Javier Hernandez 84bcdb3cae Change Image-details' 'Datasize' unit to MiB
Change the Image details form to display the 'Datasize' field of the
image in MiB instead of GiB
2023-12-12 11:00:19 +01:00
Javier Hernandez c66871f3ce Fix bug at create and update image
Fix a bug that made the create and update images actions unusable.

The data sent to post was incomplete; partition's 'code' data was missing.
2023-12-12 11:00:17 +01:00
Javier Hernandez c1548fd219 views: Check form contain a cache partition
Make the partition and format form fail if the user has not added a
cache partition.

A cache partition is required to make the restoration of images work
2023-12-11 13:34:25 +01:00
Javier Hernandez cc5c0105db ogcp.js: Fix bug when adding a new partition
Fix a bug that made the 'add a new partition' button unusable if all
partitions (rows) were deleted.

The reason for this bug was that the AddPartition() function would add a
new partition by cloning an already present html row element. This would
fail if no more rows were present in the table.

The solution implemented checks, previous to delete a partition, if it
is the last partition. If it is, then, instead of removing the whole
row, it just empties it.

Html button element needs to contain 'type="button"' attribute for this to
work. Otherwise, default action for the button is submit and it would
redirect after clicking.
2023-12-11 11:43:42 +01:00
OpenGnSys Support Team ddfaae0ef6 templates: add missing delete/update repository templates
Add missing templates.

Fixes: 15dd4c2a8f ('views: add action to update repo')
Fixes: 152337b6bd ('views: add action to delete repo')
2023-12-11 09:25:21 +01:00
Javier Hernandez f76c0ed24d views: change repo add view to follow convention
combine repo_add_get and repo_add_post into one, action_repo_add. This
is to follow convention across all the views and to clarify that it is
an action.

rename repos_details template to repos_add. Now it is clear the purpose
of each action template; there is one for each: add, delete and update
2023-12-05 12:15:34 +01:00
Javier Hernandez 15dd4c2a8f views: add action to update repo
allow the user to update a repo by selecting one and pressing the update
button.
2023-12-05 11:38:26 +01:00
Javier Hernandez 152337b6bd views: add action to delete repo
allow the user to delete a repo by selecting one and pressing the delete
button. Previous to deletion, show the user a confirmation page (a form)
with the details of the repo to delete

the confirmation form is constructed with the fields of Repoform.
RepoForm is also used in template used to create a repo. To make both
templates work with RepoForm, RepoForm's field 'create' has been renamed to
'submit'

ogcp.js: add a function to make that, when the user selects a
repository, the server in which it is contained is automatically
checked. We need it checked so that action_repo_delete can know the
server to which it has to send the delete request. Use data-server in
repos_details.html to make this work

Validate, in action_delete_repo, that user has only selected one repo to
delete. In order to do that, action_delete_repo view needs to be able to
get a list of all selected repos. This is only possible if <input>
elements that are associated with repos info contain a different name
attribute per repo. In this case, template repos.html has been modified
to use name={repo name}-{repo_id}.  After this, parse_elements() will
work and parse a set containing all selected repos.

modify html input associated to repos server in order to follow same
convention as in other templates. For example, images uses image-server;
scopes, scope-server.
2023-12-05 10:21:09 +01:00
OpenGnSys Support Team 0718ccac75 cfg: add template file
this template configuration file is used by the installer.
2023-12-04 10:45:38 +01:00
OpenGnSys Support Team 2108d974bd init: missing import logging
Otherwise:

 NameError: name 'logging' is not defined

is reported.
2023-12-04 10:04:19 +01:00
Javier Hernandez 2858436341 src: add menu to manage repos
The menu includes a list of the repos of each server. The user can
select a server or a repo to make changes.

As of now, the only action possible is to add a repo to selected
server.

The work contained in this commit can be structured in:

1. Add the repos menu:
- Add a 'repos' button in the menus bar (base.html).
- Add repos.html template to create the management repos menu.
- In ogcp.js, add function to store in browser's local storage which
  elements of the sidebar are uncollapsed. This saves the sidebar state
  after a page refresh.
- Add manage_repos() in views.py

2. Allow to add a repo:
- Add template with form to add a repo (repos_details.html)
- Create RepoForm(FlaskForm) in action_forms.py
- Add repo_add_get() and repo_add_post() in views.py
2023-12-01 17:20:08 +01:00
OpenGnSys Support Team 215e3c2fc0 init: filter out GET /scopes/status requests
ogcp.js calls this endpoint very often, which send a request to the ogserver
through the REST API. This call is needed because javascript code cannot
directly talk to the ogserver since it does not know what the API_KEY is.
Add a filter to skip log GET /scopes/status requests.

Thanks to DaniGM for helping with this.
2023-12-01 12:42:41 +01:00
OpenGnSys Support Team 1a64f581ae views: set computer netmask to 0
This is never used by ogserver, instead the room netmask is always used.
2023-11-30 21:01:49 +01:00
Javier Hernandez 0340c17dc3 views: Add placeholder for mac field
Add a placeholder that shows the user an example of what a valid mac
address looks like.

By now, mac needs to be specified as AABBCCDDEEFF without : for historical
reasons.
2023-11-30 11:35:30 +01:00
Javier Hernandez 7f93221617 views: fix client details
- netmask is no accesible anymore, remove it.
- The form made reference to fields that do not exist anymore:
  netmask and netdriver (removed in a previous commit)
- make the repository field show the repo that is in use
2023-11-29 13:20:18 +01:00
Javier Hernandez 3b932fc6a8 views: fix repository list in update client
Make the repository list's first element be the current repo in use.
This is needed because, otherwise, an update could inadvertently
change the repo.

Remove a print statement that is no longer needed
2023-11-29 13:20:07 +01:00
Javier Hernandez 4a70bc174c views: populate repositories in client form
Make, in add and edit clients forms, the field repository show the list
with the actual repositories, not a harcoded value.
2023-11-29 10:43:02 +01:00
Javier Hernandez ad41a0dfbe image: rename and remove fields
- remove field image 'id'
- change size to display MiB instead of GiB
- replace 'Modified' with 'Last update'
2023-11-27 09:45:16 +01:00
Javier Hernandez 9fa90e0593 templates: translate shutdown state keys
Change key element 'Apagado' to its English form 'Shutdown'
2023-11-27 09:45:16 +01:00
Javier Hernandez bb66d9ed42 views: Make 'partition' field use same format
Make forms containing a 'Partition' field use all the same format (ie.
<Disk id> | <Partition id> | <Partion type> <Partition format>")

Signed-off-by: OpenGnSys Support Team <soporte-og@soleta.eu>
2023-11-27 09:45:16 +01:00
Javier Hernandez 4f565255af client: Remove 'netmask' in form
Remove unnecessary field 'netmask' from forms used to create and update
clients. Netmask is configured in rooms instead.
2023-11-27 09:44:47 +01:00
Javier Hernandez 3f27dd3ef1 views: allow to edit a client
Add a form to allow the user to update a client.

ip field is in read only mode because this is the primary key to
identify a client in db.

Fields corresponding to boot mode (ie. oglivedir and boot) are also in
read only for now; ogServer has to fix set boot mode functionality
before it can be added here.
2023-11-24 11:04:30 +01:00
Javier Hernandez 3a0cdbda5a src: Remove netdriver field in client form
Remove netdriver field from forms used to add or update a client.
At the time of creating (or updating) a client, ogCP uses a hardcoded
value for this field of the payload.

This field is not used by oglive in any way, remove it.
2023-11-23 10:21:22 +01:00
Javier Hernandez 739ac075dc views: add field 'gateway' in add-room form
Add the possibility to configure a gateway in a room.
2023-11-14 15:44:14 +01:00
Jose M. Guisado 0b210404d8 ogcp.js: fix images selector in "images" section
Any operation inside "Images" view fails with error message 'missing
"image-server" key'. Operations under images view section are loading
image info and "delete image".

Previously, a hidden checkbox entry was added to support multiple
ogServer images entries. This hidden checkbox value holds the
corresponding ogServer address of some image list. This hidden
'image-server' checkbox is checked or unchecked whenever some visible
image from this server is checked in the list by the user.

Commit 70eb7389bb introduces checkImageServer javascript function that
mainly attaches an onchange event to each image checkbox so that
checking or unchecking it updates the hidden 'image-server' checkboxes
holding the ogserver address associated with each ogserver entry list.

When loading "Images" view each configured ogServer entry is collapsed
(thus each image checkbox is hidden). The current selector is ignoring
hidden checkboxes and thus checkImageServer is unable to attach the
necessary onchange event to each image checkbox.

The hidden 'image-server' checkbox is always hidden and does not need
attaching any onchange event. Fix selector by not ignoring hidden
elements and omitting any checkbox with name 'image-server'.

Fixes: 70eb7389bb ("Add ogServer parameter to imagesForm")
2023-07-11 17:52:17 +02:00
Jose M. Guisado db68dcea46 ogcp: add backup boolean field in image update
User can use this boolean field to specify if an backup copy needs to be
created before updating an image.

This only applies when sending a request to a client (ogClient)
supporting this parameter.
2023-07-07 13:22:23 +02:00
Jose M. Guisado ae3f83b3c3 views: use \s to match whitespace in client import regex
Some programs substitute regular space characters (\u0020) by en spaces
(\u2002) when displaying monospace text. Others replace it by
non-breaking spaces.

Using a character set such as [ \t\n] to match any possible "space
related" character. Use \s to match any kind of whitespace related
character in the regex.

Pasted from python's documentation:

\s

    For Unicode (str) patterns:

	Matches Unicode whitespace characters (which includes
	[ \t\n\r\f\v], and also many other characters, for example the
	non-breaking spaces mandated by typography rules in many languages). If
	the ASCII flag is used, only [ \t\n\r\f\v] is matched.
	[...]

Fixes: d9f8c95618
('views: better dhcp conf parsing when importing clients')
2023-06-28 12:48:22 +02:00
Jose M. Guisado d9f8c95618 views: better dhcp conf parsing when importing clients
This new regex allows parsing of:

	- Irrelevant options that the user may paste from its config
	  file, eg. 'option host-name'.
	- Allows linebreaks.

Hosts still require to have 'hardware ethernet' first, and then
'fixed-address'.

For example this regex admits dhcp host declarations such as

	host pir36-22_78 {
	      hardware ethernet d8:5e:d3:25:28:9d;
	      fixed-address 10.1.36.78;
	      option host-name "pc_78";
	}

Summary of the regex:

(?: *host *)			# Match host keyword and spaces
([\w.-]*)     			# Match any word character (alphanum and underscore)
(?:[ \n\r]*{[ \n\r]*)  		# Match any space or newline, then match { and any following space or newline
(?:[ \t]*hardware *ethernet *)  # Match any space or tab character followed by 'hardware ethernet'
((?:[0-9A-Fa-f]{2}[:-]){5}(?:[0-9A-Fa-f]{2}))  # Match the mac address using ':' or '-' as separator
(?: *;)				# Match any space character before a ';'
(?:[ \t\n\r]*fixed-address *)	# Match any space, tab or newline followed by 'fixed address' and any following space
(\d+\.\d+\.\d+\.\d+)		# Match an ip address (no validity check)
(?: *;)(?:[ \r\n]*[^}]*})	# Match any space followed by ';', then match any character except '}'
2023-06-27 17:06:34 +02:00
Jose M. Guisado 9c91fb16b4 views: add placeholder text inside dhcp conf textarea
Help user by hinting the current expected format via a placeholder in
the textarea box.

Current regex has its limitations when parsing dhcpd host declarations.
It does not support multi line host declarations or different options
outside "hardware ethernet ..." and "fixed-address ...".
2023-06-27 08:56:49 +02:00
Javier Sánchez Parra d029df8e84 Show warning when formatting clients without disks
If an administrator selects a client without disks and goes to
"Partition & Format", ogCP redirects it again to "Commands" and shows a
floating message indicating that the client has no disks.
2022-11-17 17:36:15 +01:00
Javier Sánchez Parra fc02d891cd Fix typo in save_user() function 2022-11-17 17:36:15 +01:00
Javier Sánchez Parra eeda698f40 Open real time log in a new tab 2022-11-17 17:36:15 +01:00
Javier Sánchez Parra 93758f3831 Disable scopes tree and add Back button in log view
All views from Commands section have this two attributes.
2022-11-17 17:36:15 +01:00
Javier Sánchez Parra 6aad8535f0 Update Spanish translations 2022-11-17 17:36:15 +01:00
Javier Sánchez Parra 46682c3ff9 Rename "Scopes" section to "Scopes management" 2022-11-17 17:36:15 +01:00
Javier Sánchez Parra 5d265aa532 Show scopes section only to administrators 2022-11-17 17:36:15 +01:00
Javier Sánchez Parra e1908c2543 Show servers section only to administrators 2022-11-17 17:36:15 +01:00
Javier Sánchez Parra 42bf42f580 Add clients in Linux and Windows mode
Scopes tree shows clients booted in Linux and Windows with ogClient
installed. It also shows if the user logs in.
2022-11-17 17:36:15 +01:00
Javier Sánchez Parra 693f5255b1 Assign servers to users
Instead of give permissions on all centers of a server selecting each one
of them, you can select the server that contains all this centers.
2022-11-07 12:58:27 +01:00
Javier Sánchez Parra 0f6641d92f Set server variable on GET /action/image/update
Otherwise, ogCP crashes on image update.

Fixes: 8726ade ("Adapt commands to work with several ogServers")
2022-11-07 12:58:27 +01:00