| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
This patch adds an example chart using chartjs to the dashboard to show
the disk usage.
https://www.chartjs.org/docs/latest/getting-started/
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Modify the base template to add the sidebar and command bar, implemented
just in the scopes view.
This patch also modifies the "actions/mode.html" template to be shown in
the scopes page. Any other action that should be inside the scopes
should do the same, add the scopes and clients to the template context
and use the "scopes.html" as base in those actions.
The notification has been also changed to use a toast notification
instead of the usual alert to avoid changing the layout on error.
|
|
|
|
|
|
|
|
|
| |
Update the login template based on the AdminLTE extra page:
https://adminlte.io/themes/v3/pages/examples/login.html
This patch also adds a font-awesome icon to the login page, we've
font-awesome from the AdminLTE plugins so we can use this icons in the
interface.
|
|
|
|
|
|
|
|
|
|
| |
This patch adds the css and js sources from the AdminLTE template to the
base template so it can be used in all templates.
There's also some flexbox bootstrap classes [1] to place the footer at
the bootom always, even when there's no content to fill the page.
[1] https://getbootstrap.com/docs/4.6/utilities/flex/
|
|
|
|
|
| |
This patch redirects to the login page instead of showing an empty page
when the user is not logged in.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add the open source AdminLTE bootstrap dashboard template to the static
folder, and some plugins that we'll use in the following changes to the
templates.
Plugins:
* jquery
* bootstrap
* font-awesome
https://adminlte.io/
|
| |
|
|
|
|
| |
Update license header in files.
|
|
|
|
|
|
|
|
| |
Creates "delete room" form with a select to choose a room to delete.
Adds a new button inside the button group in the scopes view. Because
scopes checkboxes values maps to ips the only way to specify the room to
delete is in the delete room form itself, using a select input.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Creates "add room" form with required inputs only: center, name and
netmask.
Adds a new button inside the button group in the scopes view. Because
scopes checkboxes values maps to ips the only way to specify the center
in which to add the room is in the add room form itself, using a select
input.
In the future, the RoomForm can be used to display room information once
such functionality lands in the ogserver.
|
|
|
|
|
| |
Add list with ogLives installed in the server and highlight the default
ogLive.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add the following disk stats to the dashboard:
* Disk size: shows the amount of total disk size in Gibibytes.
* used: shows the amount of used disk size in Gibibytes.
* available: shows the amount of free disk size in Gibibytes.
* use(%): shows the amount of used disk size in percentage.
|
|
|
|
|
|
|
| |
Users want to know latest created/modified images to manage new images
or changes made on existing images.
This commit adds a list with the 10 latest created or modified images.
|
|
|
|
| |
Users want to easily know the number of images an ogServer has.
|
|
|
|
|
|
|
|
|
|
| |
When the user logs into ogcp, the web page redirects him to "Scopes".
In the future ogcp will have a dashboard showing multiple stats and
details. This dashboard will be in "Home" path and we want the user to
see it when he logs in.
Change login redirection from "Scopes" to "Home".
|
|
|
|
|
|
|
|
| |
* Adds label for each action page.
* Adds a colored state for opengnsys connected clients
* Fix nav active item
* Rename some actions
* Adds DISK to partition and format form
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Ogcp requires a simple login page in order to avoid exposure of the
ogServer API to anyone trying to access the web page.
Because the main authorization mechanism in ogServer is the api token
the login implemented for the ogcp does not include registration process
but a single user and password specified in the ogcp.json.
"USER": "user",
"PASS": "pass"
Adds two new views: /login and /logout. They are used to login the user so
that the rest of views regarding ogServer functionality can be accessed
in a "login required" fashion. Index view (/) is an exception, it can be
accessed logged in or not so different data can be displayed.
Templates can now access a variable "current_user" to get information
about login status. This is a Flask-Login feature.
- Templates regarding login can be found in templates/auth/
- Login form is defined in forms/auth.py to separate it from
action_forms.py
- Adds Flask-Login module to requirements.txt
- Adds default user and pass in ogcp.json
|
|
|
|
|
|
|
|
| |
quick_form macro from Flask-Bootstrap creates vertical forms by
default, this rendered each partition spanning too much vertical space.
Use form_type='inline' from quick_form macro to compact the whole setup
form.
|
|
|
|
|
|
| |
* Use validate_ips and flashed messages for some more actions.
* Use extra_classes in quick_form macro to add bootstrap classes to
rendered forms
|
|
|
|
|
|
|
|
|
|
| |
This patch enables a set of ips to be specified as a target of an image
restore action.
The set of selected computers must have the same partition setup in
order for the form to be rendered sucessfully, if different partition
setups are detected a redirection is made and an error flash message
is shown.
|
|
|
|
|
|
| |
This action is related to /mode in ogServer API. Allows changing
the netboot template for a set of given clients, previously selected
in the /scopes view.
|
|
|
|
|
|
|
|
|
|
|
| |
Adds in a declarative way the validation of the image name form control
when creating a partition image.
This commit serves as an example of adding a predefined validator of the
WTForms module. Custom validator may be added by creating a given
function and appending it to the list of validators.
See https://wtforms.readthedocs.io/en/2.3.x/validators/#custom-validators
|
|
|
|
|
|
|
|
| |
Add a function to validate that the ips received from the /scopes form
is valid (no more, no less).
Also redirects to the /scopes when any final request to the ogServer is
responded by a "200 OK"
|
|
|
|
|
|
| |
An error was produced when rendering the setup form of a computer
with any FAT32 partition. It was missing from the mapping of codes
received in a response to a given filesystem.
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit may serve for future reference as to how some cosmetic
changes have been applied to the web.
Primarily using bootstrap classes in order to adjust margin or padding,
there are mechanisms that allow modifying the class of an
underlying html element in WTForms. Bootstrap classes are written
directly in html templates for Flask.
Also add a Soleta branded footer.
|
|
|
|
|
|
| |
These are used to store a message string that can be later accessed. We
can use Flask flash messages to alert about any error or providing info
when processing a request.
|
|
|
|
|
|
|
|
| |
Image creation action was lacking a template to render the form. This
patch adds said template.
Also redirects to /scopes when the request was processed by the ogserver
successfully.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously the only method (in the form select) was "UNICAST". This
patch enables specifying a correct parameter for the underlying script
to fetch the image to be restored.
UNICAST-DIRECT makes the administrator transfer the image through the
network. UNICAST-CACHE indicates the taget pc to search for the image in
its cache partition.
Also redirects to the /scopes when ogserver responds with 200 OK.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A new parameter for the setup/ was added: type. Regarding the disk
partition scheme. It must be either "MSDOS" or "GPT".
ogServer expects a 4 partition setup in order to succesfully execute a
setup/ command. Ogcp is currently getting the partition to modify
one partition at a time. This patch enables ogcp to "autofill" with
empty partitions the partition_setup payload parameter.
TODO: In the future, the setup/ logic should not need to query the
database once again in order to create the 'partition_setup' payload
parameter with the form modifications.
|
|
|
|
| |
Do not use the same name as ogserver config file.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch introduces the usage of Flask.Config class so the config can
be read at startup (__init__) only once. Config keys must be uppercase
so that from_json method does take it into account.
dormousehole.readthedocs.io/en/stable/api.html#flask.Config.from_json
Prior to this patch each request required opening and closing the
ogserver.json file via load_config in views.py.
In the future the decorated load_config function inside views.py
may be removed to avoid creating multiple instances of the OGServer
class.
|
|
|
|
|
|
|
|
| |
This action lists every piece of software installed in an OS from a
client.
This action can handle listing the software from the DB as well as
updating that DB with the latest client information.
|
|
|
|
|
| |
This action handles the creation of the image in the DB as well as the
'.img' file.
|
|
|
|
| |
These templates were not added in previous commits.
|
|
|
|
| |
This script is used to run a Flask testing environment.
|
|
|
|
|
| |
This action provides the image restoring functionality on a specific
client.
|
|
|
|
|
| |
This action provides the functionality to run one of the installed OSs
in a client.
|
|
|
|
| |
This action lists all the hardware items in a client.
|
|
|
|
|
| |
This action provides the functionality to add a new client to an
ogServer.
|
|
|
|
|
| |
This action is used to visualize the specific details of a client, such
as its IP, Name, MAC, etc.
|
|
|
|
| |
This view deletes and formats a partition from the selected machine.
|
|
|
|
|
|
| |
Partition filesystem are encoded with integers in the DB. We need to
send the type string instead of the encoded integer, so this patch
parses the encoded integer to string.
|
|
|
|
|
| |
This provides a menu to setup the internal partitions setup of each
machine. Delete partitions is still just a placeholder.
|
|
|
|
| |
This avoids trying to parse CSFT token as an IP.
|
| |
|
|
|
|
| |
This handles HTTP 500 internal server errors.
|
|
|
|
| |
This handles HTTP 404 page does not exist errors.
|
|
|
|
| |
This action can be applied on single or multiple scopes.
|
|
|
|
|
|
| |
This action can be applied on one or multiple scopes. This
implementation use Flask-WTF as a way to build and valdiate forms. As a
side effect, this adds CSRF protection to all forms.
|
|
|
|
| |
This action handles reboot on one or multiple scopes.
|