Commit Graph

59 Commits (3550da73e6da062d69dd0d7f1f6889b684abb15d)

Author SHA1 Message Date
Jose M. Guisado 79d3062f81 Revert "#1065 linux: add systray icon"
This reverts commit 69d214f63b.
2022-02-03 10:33:37 +01:00
Jose M. Guisado ab7abf96a6 #1065 linux: add shell run operation
- Executed script runs with same privilege as ogClient process.
- Uses subprocess.run instead of subprocess.Popen, it's a bit simpler.
  We can't specify executable, though. Shouldn't need so in Linux mode.
- Uses shell=True, keep in mind security considerations listed at:
  https://docs.python.org/3/library/subprocess.html#security-considerations
  (shlex.quote can be used for unix shells)
2021-11-15 13:39:42 +01:00
Jose M. Guisado 69d214f63b #1065 linux: add systray icon
Adds a systray icon for linux mode. Uses pystray module. Expects a
favicon.ico stored in the same folder as the main ogclient python
script, but if not found a placeholder image is used.
2021-11-15 13:39:36 +01:00
Jose M. Guisado 2d3d31bf61 #1065 src: add linux mode
ogClient can run in "linux" mode. In addition to live or virtual.
Serves as a substitute to the legacy ogagent, which has not received any
updates since 2020/07/23.

Linux mode initially supports remote reboot and poweroff. Requires
updated ogServer with the Linux ogclient state.

ogClient can be set up to run in linux mode by specifying it in
ogclient.json:

{
	"opengnsys": {
		"ip": "192.168.56.10",
		"port": 8889,
		"log": "DEBUG",
		"mode": "linux",
	...
}
2021-11-15 13:37:40 +01:00
Jose M. Guisado f0aa3df485 Rename 'linux' folder and operations to 'live'
ogLive related operations are named inside a 'Linux' folder, also its
python class is named OgLinuxOperations. Rename every 'linux' occurrence
with live to further clarify this folder and operations.

 - OgLinuxOperations -> OgLiveOperations
 - src/linux/ -> src/live/

Fixes: 1377acee ('Rename 'linux' mode to 'live' mode')
2020-12-03 13:38:43 +01:00
Javier Sánchez Parra a11224d6f5 #1008 Add support to work with GPT table
ogClient /setup in linux mode do not support to indicate which table
type the user want to use. It always supposes that the partition table
is MBR/MSDOS.

Add ogClient support to work with GPT tables. Add new field table type
to /setup linux mode that expects a string with "MSDOS" or "GPT".

Example old JSON:
{
  "disk": "1",
  "cache": "0",
  "cache_size": "0",
  "partition_setup": [...]
}

Example new JSON:
{
  "type": "GPT",
  "disk": "1",
  "cache": "0",
  "cache_size": "0",
  "partition_setup": [...]
}
2020-11-27 12:52:54 +01:00
Javier Sánchez Parra 91f034e371 #1008 Add support for several disks
ogClient expect to receive information of 1 disk from the Cloning
Engine's script "getConfiguration". ogAdmClient, the deprecated ogLive
client daemon, supported for several disk.

Add ogClient support for several disk.
2020-11-18 13:11:55 +01:00
Javier Sánchez Parra c86eae48fe #1004 Add new fields to /image/create response
Extend ogClient to include more information about the image that has been
created. This patch modifies ogClient to read an info file created by image
creation script, add this info to the JSON response and then remove the file.

Example of new /image/create response:

{
  "disk": "1",
  "partition": "1",
  "code": "131",
  "id": "1",
  "name": "ubuntu",
  "repository": "192.168.56.10",
  "software": "Ubuntu 18.04.5 LTS \naccountsservice 0.6.45\n...",
  "clonator": "PARTCLONE",
  "compressor": "LZOP",
  "filesystem": "EXTFS",
  "datasize": 2100000
}

New fields are "clonator", "compressor", "filesystem" and "datasize".
2020-09-10 14:46:37 +02:00
Javier Sánchez Parra ffbcf7ebba Check return code on restore image command
When restore image command was sent and the restoration failed, you
could see in WebConsole the image as restored and the command completed,
as it if had not failed. This happened because ogClient did not check
the return code of restoration script.

This commit adds return code check on restore image. So, when return
code is a non-zero value ogClient responses with an error 500. When
ogServer receives this error response, it did not set in the database
the image as restored and command as completed without errors.
2020-06-23 13:42:39 +02:00
Roberto Hueso Gómez d7b7b0b175 Delete ogConfig.py
This file is only used for its OG_PATH variable, this variable is now in
ogClient.
2020-06-05 13:08:00 +02:00
Javier Sánchez Parra 147c890617 Fix OgLinuxOperations class params
Commit 621fb7a7 added class initialization with two parameters. These
two parameters were wrongly initialized, "self." was missing. The call
of these params in other functions of the class was also wrong.

This commit fix the initialization of the parameters of
OgLinuxOperations and fix the calls to these params.
2020-05-20 12:04:28 +02:00
Javier Sánchez Parra 621fb7a786 Adapt ogLinuxOperation to work with json config file
ogClient changed its config file format to json. This patch adapts
ogLinuxOperation to use new config file.

Co-authored-by: Roberto Hueso <rhueso@soleta.eu>
2020-05-18 08:33:37 +02:00
Roberto Hueso Gómez 32b73c50b1 Fix typo on linux shellrun operation 2020-05-14 17:27:42 +02:00
Roberto Hueso Gómez 269c7b5055 Rename operation 'execCMD' to 'shellrun'
This patch also ignores calls to shellrun when virtual mode is activated.
2020-05-13 17:30:12 +02:00
Javier Sánchez Parra 0807ec76ed Add realtime log menu
We observed that with the new ogClient the ogLive did not show the
realtime log menu*.

This commit changes the ogClient to launch the browser and show the
realtime log menu when some commands are executed.

* The realtime log menu is a menu that shows current status and info
  about the command that the ogLive is executing.
2020-04-22 10:39:02 +02:00
Roberto Hueso Gómez 2e3d47b7b8 Avoid writting /software output to a file 2020-04-17 16:59:48 +02:00
Javier Sánchez Parra eec50f777c Increase HTML menu regeneration cases
We have observed that the ogLive browser did not show the changes when
an image restoration o script execution was called. The problem was that
the HTML menu was not updated/regenerated in these cases.

This commit adds the call to the HTML regeneration function to image
restore and script execution commands. This way, when the browser is
restarted it loads the updated HTML menu.
2020-04-16 13:53:13 +02:00
Javier Sánchez Parra f0c550ee2a Change browser behaviour
We have observed that the browser did not show changes. This happens
because the ogClient opens the browser at the beginning and forget
about it. To show correctly the changes ogClient had to restart the
browser every time the menu html changes.

This commit changes the behaviour to restart the browser when the menu
html has changed.
2020-04-16 13:29:06 +02:00
Roberto Hueso Gomez 99ae598fbd Encapsulate operations in classes 2020-04-08 13:30:16 +02:00
OpenGnSys Support Team 2cd7f5b4fc missing update to use ogConfig.OG_PATH in linux/ogOperations.py 2020-03-20 15:11:02 +01:00
Javier Sanchez Parra 4cd87e9875 Make OG_PATH public
This commit changes the OG_PATH to a public varible of the class
ogConfig. This way we improve the configurability of the path.
2020-03-20 14:53:07 +01:00
Roberto Hueso Gómez bb9ec5d7a5 Handle scripts that end in \r 2020-02-25 18:56:49 +01:00
Roberto Hueso Gómez 54c0ebf098 Use 'bash' as the default shell for operations scripts 2020-02-09 00:04:43 +01:00
Roberto Hueso Gómez 1c236b4548 Use python f-strings for commands composition 2020-02-05 16:49:37 +01:00
Roberto Hueso Gómez eaba1acbc3 Fix /session execution
The script now reads arguments correctly.
2020-02-05 13:42:20 +01:00
Roberto Hueso Gómez fe4236dcd8 Fix /image/restore execution and response 2020-02-05 13:42:10 +01:00
Roberto Hueso Gómez 680214317e Fix /image/create execution and response 2020-02-05 13:41:54 +01:00
Alvaro Neira Ayuso 38056d78a7 (BUG) Rename OG_SCRIPT_PATH to OG_PATH 2020-02-04 14:19:38 +01:00
Roberto Hueso Gómez 2934773d88 Fix /setup execution and response 2020-02-03 10:15:54 +01:00
Roberto Hueso Gómez e96e187825 Fix parseGetConf(...) configuration parsing
This patch also reformats the response to the /refresh command.
2020-02-03 10:15:49 +01:00
Roberto Hueso Gómez dabc7ebf83 Change POST /refresh to GET /refresh
This patch changes the HTTP method for /refresh and cleans up the implementation
of the /refresh Linux operator.
2020-01-21 17:33:05 +01:00
Roberto Hueso Gómez ca0a62f9c6 Fix /software command Linux operation
This patch runs the script InventarioSoftware with the right arguments.
This also increases the recv buffer size for the test server.
2020-01-21 17:32:57 +01:00
Roberto Hueso Gómez 9890d60300 Fix /shell/run commands splitting
This patch splits shell commands either with ';' or '\n'.
2020-01-21 17:32:48 +01:00
Roberto Hueso Gómez 96c2ddea2d Fix /hardware command Linux operation
This patch runs the script InventarioHardware with the right arguments.
2020-01-21 17:32:42 +01:00
Alvaro Neira Ayuso 2e806531a0 (Clean-Up) Rename all the functions in ogRest to new ones more clears 2020-01-19 20:18:14 +01:00
Alvaro Neira Ayuso 8fc251eff3 (Clean-Up) Rename HTTPParser to restRequest 2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 8e54420dfd (Clean-Up) Rename cmd function/variables to use "run" syntax 2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso b5e182f7dd Add Refresh command
This patch allows us to execute refresh command using ogClient. This command
gets all the configuration in our machine and send this information to the
server. The format of the message that ogClient will send to the server will be:

{"disk": "1", "partition_setup": [{"partition": "1", "code": "LINUX",
"filesystem": "NTFS", "size": "498688", "format": "0"}, {"partition": "2",
"code": "LINUX", "filesystem": "NTFS", "size": "498688", "format": "0"},
{"partition": "3", "code": "LINUX", "filesystem": "NTFS", "size": "498688",
"format": "0"}]}
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso b2fd0b5fff Add image/create command for creating a new image
This patch allows us to use a new support for creating images using ogClient.
ogClient receives from the server a message which json body must be:

{"disk" : "1", "partition" : "1", "code" : "1", "id" : "1", "name" : "test",
"repository" : "192.168.2.4" }

ogClient returns to the server the software inventory executed before
create the image. The message for the server is:

{ "disk" : "0", "partition" : "1", "software" : "xyz" }

    "xyz" will be the output saved during the execution of InventarioSoftware in
    a specific path.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 05b1088827 Include License header 2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso d5dca0f756 Add stop command
This patch includes a new support for stopping all the process running on
the ogClient.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 38b57c4ae4 Improve setup command response
This patch adds a new response support. This way allows us to send a new
response message with more information about the partitions already set up.
The format of the response is:

{ "disk" : "1", "cache" : "1", "cache_size" : "0",
"partition_setup": [{"partition": "1", "code": "LINUX", "filesystem": "EMPTY",
"size": "498688", "format": "0"}...]
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso a306b8b9d8 Catch execution errors during restore image command
This patch allows us to send feedback to the server in case of error during
the execution of the command. In case of error, ogClient will send an
"Internal Error" http message.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 1ced3dd069 Improve hardware command response behavior
This patch give us a better support in case of error or success execution.
In error cases, the new behavior is to send an Internal Error http message (500).
Otherwise, the server will receive a message with a json with this format:

    { "hardware" : "xyz" }

"xyz" is the output saved in a specific path during the execution of
InventarioHardware.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 683afa6465 Improve software command response behavior
During our tests, we found some limitation during the execution of the software
command. We don't manage errors during the execution of this command. Moreover,
the server needs some information in case that everything is OK.

This patch modified the code for controlling the errors during the execution,
returning an "Internal Error" http message (500). Moreover, in case that
everything is OK, ogClient sends a message with this json body:

    { "disk" : "0", "partition" : "1", "software" : "xyz" }

"xyz" will be the output saved during the execution of InventarioSoftware in
a specific path.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 0f32b9ca88 Catch execution errors during init session command
This patch allows us to catch an exception when something wrong is happening
executing the init session command. In error cases, ogClient sends an internal
error http message to the server. Otherwise, an OK http message.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 2e342b50c8 Modify methods to use less arguments
Now, all the arguments are received from httpparser. Those arguments convert
the function in long lines of codes. Passing directly the httpparser, all the
function will have less arguments and will be more clear the code.
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso cc11d8f38f Add restore/image command for restoring images on the machine
ogAdmClient has a support to restore image on the machine. This new command
allows the new ogClient to execute the same script to restore the images
on the machine. The json format sent from the server must be:

{ "disk" : "1", "partition" : "1", "name" : "test",\
 "repository" : "192.168.56.10", "type" : "UNICAST", "profile": "1", "id": "1"}
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso efbe8a7960 Add setup command for configuring the machine
ogAdmClient has a support to configure the machines. This new command allows
the new ogClient to execute the same script to configure the machine.
The json format sent from the server must be:

{ "disk" : "1", "cache" : "0", "cache_size" : "70000000",\
"partition_setup": [{"partition": "1", "code": "NTFS", "filesystem": "NTFS",\
 "size": "11000000", "format": "0"}]}
2020-01-19 19:50:44 +01:00
Alvaro Neira Ayuso 261a5edf7c Add hardware command to inventory the machine hardware
ogAdmClient has a support to inventory the hardware in a machine. This new
command allows the new ogClient to execute the same script to inventory the hw.
No arguments needed for executing the command
2020-01-19 19:50:44 +01:00