Commit Graph

209 Commits (333abbe160c3218c8525026518b8cc635dde299f)

Author SHA1 Message Date
OpenGnSys Support Team 333abbe160 #986 rename to ogserver 2020-06-19 11:19:55 +02:00
OpenGnSys Support Team 04ca20e9f1 #971 split into smaller file
Split ogAdmServer into several files:

* sources/rest.c that implements the server REST API.
* sources/client.c that implements the client REST API.
* sources/json.c that provides a few JSON helpers.
2020-06-18 18:46:48 +02:00
OpenGnSys Support Team cf7bbdac90 #971 move ogAdmLib to ogAdmServer
Move remaining ogAdmLib code to ogAdmServer
2020-06-09 13:32:28 +02:00
OpenGnSys Support Team f4e7832656 #971 add str_toupper()
Add new utils.c file and replace old StrToUpper().
2020-06-08 18:31:48 +02:00
OpenGnSys Support Team d8f2e6ba20 #971 do not use og_log()
ogAdmServer uses syslog for logging.
2020-06-08 18:13:05 +02:00
OpenGnSys Support Team 9c8a1390ff #971 replace og_info() by syslog() 2020-06-08 18:10:14 +02:00
OpenGnSys Support Team eba3c79321 #971 replace reservaMemoria() by calloc() 2020-06-08 18:06:25 +02:00
OpenGnSys Support Team 01586d69fb #971 replace liberaMemoria() by free() 2020-06-08 18:03:46 +02:00
Javier Sánchez Parra 3acd4b476f #942 add WoL on commands, procedures and tasks
These cases are different from a basic WoL command because they all use
the queue. The queue standard behaviour waits for the client to be ON
to send orders, but in WoL commands the client is going to be OFF. The
behaviour of WoL must be different.

This commit implements WoL for queued commands, procedures and tasks.
The queue now sends Wol commands without waiting to the client to be ON.
2020-06-02 12:32:36 +02:00
Javier Sánchez Parra 16e45fa83e #980 add procedure auto execution
Users can configure clients to execute a procedure at start.

This commit adapt this functionality to new functions and behaviour
of the ogAdmServer.
2020-06-02 12:32:36 +02:00
Javier Sánchez Parra a63ec0ba7f #942 Fix immediate procedures
New versions of ogAdmServer handle pending commands in a different way.
Instant procedures uses the old way, now unsupported, so we need to
adapt instant procedures.

This commit adapts instant procedures to work with the new pending
commands implementation.
2020-06-02 12:32:36 +02:00
OpenGnSys Support Team 6c7d827904 #942 ignore stale schedules on start 2020-06-02 12:32:36 +02:00
OpenGnSys Support Team 894d8332f4 #942 add command type to POST /schedule/create
Pass idcomando as task_id.
2020-06-02 12:32:36 +02:00
OpenGnSys Support Team 63c4ea5e12 #942 add enum og_schedule_type 2020-06-02 12:32:36 +02:00
OpenGnSys Support Team 8fa9ec647a #942 add type to POST /schedule/create
Moreover, add og_task_schedule_create() function.
2020-06-02 12:32:36 +02:00
OpenGnSys Support Team b31e7ddccf #890 handle 202 Accepted 2020-06-02 12:32:36 +02:00
OpenGnSys Support Team 38057365cb #941 missing og_dbi_close 2020-06-02 12:32:36 +02:00
Javier Sánchez Parra f7292aefab #980 Add action completion 2020-06-02 12:32:36 +02:00
Javier Sánchez Parra 85b345db77 #942 Add tasks to queue 2020-06-02 12:32:36 +02:00
Javier Sánchez Parra 9a85c7a317 #942 Fix task break down
OpenGnsys tasks can contain other tasks. To know if a element of the
task is another task, we need to check if it has the parameter tareaid
(Task ID). The code had a bug and the check was done on an non-existent
parameter

This commit fix this bug changing the non-existent parameter for
tareaid.

Signed-off-by: OpenGnSys Support Team <soporte-og@soleta.eu>
2020-06-02 12:32:36 +02:00
Javier Sánchez Parra e4907cc26a #942 Improve scope break down process
OpenGnsys has a hierarchical scope system to organize clients:

				 +------+
				 |Center|
				 +------+
				 |      |
				 |      |
				 v      v
	    +--------------------+      +----------+
	+-->+Groups of classrooms+----->+Classrooms|
	|   +-+------------------+      +----------+
	|     |                         |          |
	+-----+                         |          |
					v          v
		      +-----------------+          +-------+
		  +-->+Groups of clients+--------->+Clients|
		  |   +-+---------------+          +-------+
		  |     |
		  +-----+

OpenGnsys can send commands and tasks to several clients simultaneously
selecting a scope. For example: send poweroff to center Faculty of
Pharmacy. We had a waterfall process to loop through all members of the
scope and obtain the clients.

This commit simplifies the process with queries that save us to loop
through the members.

Co-authored-by: Irina Gómez <irinagomez@us.es>
2020-06-02 12:32:36 +02:00
Javier Sánchez Parra 87be2ce08d #980 Change initial probe to refresh
We have observed that an initial refresh is needed when the ogClient (in
ogLive mode) connects with the ogAdmServer, to generate the HTML menu.

This commit changes the probe command that was done at the beginning of
the connection to a refresh command. This way the client first generates
his HTML menu and the show to the user the browser with all the correct
information.
2020-06-02 12:32:36 +02:00
Javier Sánchez Parra 130b6ffae8 #942 Add weeks and week days to the schedule API
* add og_schedule_create_weekdays()
* add og_schedule_create_weeks()
* add og_schedule_create_days()
2020-06-02 12:32:36 +02:00
Roberto Hueso Gómez 54c7ca3bb3 #980 Complete API REST for ogClient 2020-06-02 12:32:36 +02:00
OpenGnSys Support Team e81d2309d0 #971 remove obsolete code 2020-06-02 12:32:36 +02:00
Roberto Hueso Gómez d1fc76c6b4 #942 Add REST API /schedule get function 2020-06-02 12:32:36 +02:00
OpenGnSys Support Team 83b242ce58 #942 Add support for scheduled tasks and commands
This field needs to be at least 31 bits long to store all days in a month.
Other fields are also set to 32 bits because unsigned int length can change
depending on the system.

We also need to support the three ways that the ogAdmAgent and the WebConsole
have to create an schedule. At first, we only supported the easiest
method:
	* Hour, day, month and year -> 10:00, 28, february, 2020

This commit adds these two ways to create an schedule:
	* Hour, week day, month and year -> 10:00, Monday, february,
	  2020
	* Hour, week, month and year -> 10:00, first week, february,
	  2020
2020-06-02 12:32:36 +02:00
Roberto Hueso Gómez af30cc7dbb #980 Add client REST API basic infrastructure in ogAdmServer 2020-06-02 12:32:36 +02:00
OpenGnSys Support Team 96b9bb865c #942 Add /run/task to API REST
This patch adds a new command to the REST API to run tasks.

A task (tarea) is composed of procedures (procedimientos), each procedure is
composed of commands (acciones) that are represented through legacy sockHidra
parameters in the database.

This results in iterating over the task (tareas_acciones) table in the
database to fetch the list of procedures (procedimientos).

Then, this iterates over the list commands that compose a procedures
represented through procedimientos_acciones table.

Finally, this builds and sends the sockHidra legacy message for the client.

This patch includes an implementation of the Linux linked list.
2020-06-02 12:32:36 +02:00
Javier Sánchez Parra 54d172e972 #915: Reply 413 status code when no payload is too large
If the payload is too long, then the API returns a 413 status code
(following RFC 7231) instead of the resetting the communication without
replying. This way it should be more clear when this problem is
happening.

The other commit I did related to the issue of the payload size
(1d9d93c) said that ogAdmServer do not log anything when it receives a
payload of a bigger size than supported, this is false. ogAdmServer
prints the next message to the syslog when this happens:

  ogAdmServer[6824]: client request from 127.0.0.1:43552 is too long
2020-04-06 16:35:20 +02:00
Javier Sánchez Parra 286dcd72eb #915 Increase request max length
Trying to send a WakeOnLan command to 150 clients I noticed that the
ogAdmClient closed (RST) the communication with the WebConsole without
answering or logging anything. The Webconsole logged:

	php: error occured during curl exec. Additioanl info: Array
	php: (
	php:     [url] => http://127.0.0.1:8888/wol
	php:     [content_type] =>
	php:     [http_code] => 0
	php:     [header_size] => 0
	php:     [request_size] => 199
	php:     [filetime] => -1
	php:     [ssl_verify_result] => 0
	php:     [redirect_count] => 0
	php:     [total_time] => 1.003122
	php:     [namelookup_time] => 4.9E-5
	php:     [connect_time] => 0.000273
	php:     [pretransfer_time] => 0.00035
	php:     [size_upload] => 7007
	php:     [size_download] => 0
	php:     [speed_download] => 0
	php:     [speed_upload] => 6986
	php:     [download_content_length] => -1
	php:     [upload_content_length] => 7007
	php:     [starttransfer_time] => 1.001793
	php:     [redirect_time] => 0
	php:     [redirect_url] =>
	php:     [primary_ip] => 127.0.0.1
	php:     [certinfo] => Array
	php:         (
	php:         )
	php:
	php:     [primary_port] => 8888
	php:     [local_ip] => 127.0.0.1
	php:     [local_port] => 43016
	php:     [http_version] => 0
	php:     [protocol] => 1
	php:     [ssl_verifyresult] => 0
	php:     [scheme] => HTTP
	php: )

This happened because request max length is set to 4096 bytes and my
request had a size of 7075 bytes. So, the max length was exceeded.

This commit increase the max length from 4096 to 16384. This way the
ogAdmServer supports larger request messages.
2020-04-03 14:43:55 +02:00
OpenGnSys Support Team bf8ba6ce4c #941 memleak in actualizaConfiguracion
Missing dbi_result_free(), use syslog() for logging.
2020-03-31 11:39:13 +02:00
OpenGnSys Support Team 26736edcd0 #941 Missing error in actualizaSoftware() and memleak in result
This patch fixes e052fdceec013 that adds a missing error in case
the insertion fails. This also releases the result in case the
entry exists.
2020-03-26 11:45:19 +01:00
OpenGnSys Support Team 4f850d5acc #580 double free in checkDato()
This is fixing e052fdceec013 that releases the libdbi result twice.
2020-03-24 11:17:46 +01:00
OpenGnSys Support Team 531b92fcc2 #915 remove dead code in ogAdmServer
These have been replaced by the new REST API.
2020-03-07 13:24:01 +01:00
Roberto Hueso Gómez 1c0eaf2fa6 #580 Fix uninitialized variables in ogAdmServer
This patch ensures that some variables are initialized before using them.
2020-03-07 13:22:56 +01:00
OpenGnSys Support Team ad2d308436 #967 rename .cpp to .c
This actually is C code, use the gcc compiler instead.
2020-03-05 23:45:48 +01:00
OpenGnSys Support Team 3b5ec70eae #967 Replace remaining C++ code 2020-03-05 23:42:35 +01:00
OpenGnSys Support Team 39918fa970 #941 use dbi layer from envioProgramacion 2020-03-04 14:55:11 +01:00
OpenGnSys Support Team 03f1941b37 #941 use dbi layer from actualizaHardware 2020-03-04 14:55:04 +01:00
OpenGnSys Support Team f482bda9d2 #941 use dbi layer from RESPUESTA_CrearSoftIncremental 2020-03-04 14:55:01 +01:00
OpenGnSys Support Team 9cc156c65a #941 use dbi layer from actualizaCreacionImagen() 2020-03-04 14:54:59 +01:00
OpenGnSys Support Team fa6b891637 #941 use dbi layer from actualizaConfiguracion() 2020-03-04 14:54:55 +01:00
OpenGnSys Support Team 0fde10b973 #941 use dbi layer from procesoInclusionCliente() 2020-03-04 14:54:52 +01:00
OpenGnSys Support Team 1d801be52c #941 use dbi layer from respuestaEstandar()
And update all callers.

Some of the db.Open() calls cannot be removed yet, since there are still
more function dependencies that need to be converted too.
2020-03-04 14:54:49 +01:00
OpenGnSys Support Team 39157320ec #941 Consolidate CrearSoftIncremental, RestaurarImagenBasica, RestaurarSoftIncremental, Configurar and EjecutarScript
These functions are identical, remove duplicated code.
2020-03-04 14:54:46 +01:00
OpenGnSys Support Team fbc783c090 #941 Consolidate RESPUESTA_Reiniciar, RESPUESTA_IniciarSesion and RESPUESTA_Apagar
They are identical, remove duplicated code.
2020-03-04 14:54:43 +01:00
OpenGnSys Support Team d3239f70eb #941 Consolidate RESPUESTA_Configurar and RESPUESTA_EjecutarScript
These function are almost identical, remove duplicated code.
2020-03-04 14:54:39 +01:00
OpenGnSys Support Team ad70969c2f #941 use dbi layer from buscaComandos() 2020-03-04 14:54:31 +01:00
OpenGnSys Support Team ecff9948e7 #941 use dbi layer from AutoexecCliente() 2020-03-04 14:54:21 +01:00