Commit Graph

161 Commits (74061887ee64f5f04c444be1341f83568bb8319e)
 

Author SHA1 Message Date
Javier Sánchez Parra 74061887ee #915 Add test for POST /image/create/basic command
This test covers correction of the command.
2019-10-08 14:01:14 +02:00
Javier Sánchez Parra 01e77f4cb2 #915 Add POST "image/create/basic" command to REST API in ogAdmServer
This patch implements the command "image/create/basic" that provides
partitioning and formatting functionality.

Request:
	POST /image/create/basic
	{
	   "clients":[
	      "192.168.56.11"
	   ],
	   "disk":"1",
	   "partition":"1",
	   "code":"131",
	   "id":"8",
	   "name":"debianbasica",
	   "repository":"192.168.56.10",
	   "sync_params":{
	      "sync":"1",
	      "diff":"0",
	      "remove":"1",
	      "compress":"0",
	      "cleanup":"0",
	      "cache":"0",
	      "cleanup_cache":"0",
	      "remove_dst":"0"
	   }
	}
Reply:
	200 OK
2019-10-08 14:00:47 +02:00
Roberto Hueso Gómez e3af7eed4d #915 Improve error management for og_json_parse_partition()
Validate json input and return an error code when parsing is not correct.
2019-10-07 12:54:53 +02:00
Roberto Hueso Gómez ad4d4bdbbe Add test for POST /image/create command
This test covers correction of the command.
2019-10-07 11:15:28 +02:00
Roberto Hueso Gómez dbcc83daa5 #915 Add POST "image/setup" command to REST API in ogAdmServer
This patch implements the command "image/setup" that provides partitioning and
formatting functionality.

Request:
	POST /image/setup
	{ "clients" : [ "192.168.56.11" ], "disk" : "1", "cache" : "1", "cache_size" : "0",
	"partition_setup":
	[{"partition": "1", "code": "LINUX", "filesystem": "EMPTY", "size": "498688", "format": "0"},
	 {"partition": "2", "code": "LINUX-SWAP", "filesystem": "EMPTY", "size": "199987", "format": "0"},
	 {"partition": "3", "code": "LINUX", "filesystem": "EMPTY", "size": "31053824", "format": "0"},
	 {"partition": "4", "code": "EMPTY", "filesystem": "EMPTY", "size": "0", "format": "0"}]}
Reply:
	200 OK
2019-10-07 11:14:41 +02:00
OpenGnSys Support Team e6cfd83323 #915 Remove Apagar, CrearImagen, RestaurarImagen, InventarioHardware, InventarioSoftware
These socketHidra calls have been replaced by the REST API, remove them.
2019-10-03 11:34:02 +02:00
OpenGnSys Support Team e5cfdd6406 #915: adapt test to use id and profile fields
Update restore_image.json to use id and profile fields.
2019-10-01 12:59:50 +02:00
Roberto Hueso Gómez 1dde02e1ab #915: Add POST /image/restore command to REST API in ogAdmServer
This patch implements the command "image/create" that creates an image
in a client.

	Request:
		POST /image/restore
		{ "clients" : [ "192.168.56.11" ], "disk" : "1", "partition" : "1", "name" : "test", "repository" : "192.168.56.10", "type" : "UNICAST", "filesystem": "1", "image_id": "1"}
	Reply:
		200 OK
2019-10-01 12:56:10 +02:00
Roberto Hueso Gómez c87a1dbdfb #915: add og_json_parse_string() and use it
This patch avoids repeating similar code by using just one json parser.
2019-10-01 12:56:10 +02:00
Roberto Hueso Gómez 1a8ada191f #915: Add POST /image/create command to REST API in ogAdmServer
This patch implements the command "image/create" that creates an image
in a client.

    Request:
            POST /image/create
	    { "clients" : [ "192.168.2.1" ], "disk" : "1", "partition" : "1", "code" : "1", "id" : "1", "name" : "test", "repository" : "192.168.2.2" }
    Reply:
            200 OK
2019-10-01 12:56:10 +02:00
Roberto Hueso Gómez 7bdc8fdf75 #915: Removes braces for single statement if branch
Just a cleanup.
2019-10-01 12:56:10 +02:00
Roberto Hueso Gómez 8b1beddbe4 #915: Fix file descriptor leak in og_socket_server_init() from exit path
Call close() to release the socket in the event of an error.

infer says:

sources/ogAdmServer.cpp:1244: error: RESOURCE_LEAK
  resource acquired by call to `socket()` at line 1236, column 6 is not released after line 1244, column 3.
  1242.   			 sizeof(on));
  1243.   	if (res < 0) {
  1244. > 		syslog(LOG_ERR, "cannot set broadcast socket\n");
  1245.   		return false;
  1246.   	}

Not a real problem since OS releases process resources if the server
cannot bind to the port, but just to be correct here.
2019-09-19 16:06:07 +02:00
Roberto Hueso Gómez c1c89e196c #915: Return 400 status code in POST methods when no payload is attached
If no payload is attached to method that requires a payload, then the API
returns a 400 status code (following RFC 7231) instead of the previous 404.

test_0001_get_clients.py is also modified to fit the new status code.
2019-09-19 16:06:03 +02:00
Roberto Hueso Gómez 55edb404b7 #915: Fix incorrect method and code in invalid GET requests
Some tests should perform GET requests however they incorrectly use POST.
Return codes for these tests have also been fixed.
2019-09-18 17:40:41 +02:00
Roberto Hueso Gómez 72b6c26a49 #915: Remove duplicated test
This test is already performed in test_0001_get_clients.py
2019-09-18 17:40:41 +02:00
Roberto Hueso Gómez 741524f59b #915: more descriptive function name in test
This test sends a POST with no body, which is illegal, use a function
name that describes this.
2019-09-18 17:40:41 +02:00
Javier Sánchez Parra 46d791ae44 #915 add test for too large HTTP request fields
This test checks for wrong headers HTTP requests:

	1. POST /clients with a content length larger than a signed int.
	2. POST /clients with an auth token larger than 63 characters.
2019-09-10 11:10:34 +02:00
Javier Sánchez Parra 36ad0061d7 #915 check HTTP Content-Length size
If Content-Length is too large ogAdmServer, close the connection..
2019-09-10 11:10:34 +02:00
Javier Sánchez Parra 64e653773e #915 fix missing null-terminated string
This patch changes the number of characters stored in cli->auth_token
from 64 to 63. This way the array has the last position available to
store the null character.
2019-09-05 13:14:33 +02:00
Javier Sánchez Parra 784495f5d5 #915 adds test for too large HTTP request
This test checks for too large HTTP requests, for example:

	POST /clients

with a body of 4096 bytes.
2019-09-04 20:13:11 +02:00
OpenGnSys Support Team 3e8fcf0b40 #915 do not bail out when failing to send message to stale clients
Clients might enter power saving mode, hence, closing the connection
with the server. When the server sends a request to refresh its state,
if they are gone, do not break the iteration over the list of clients.
2019-09-02 13:36:50 +02:00
Javier Sánchez Parra 3de93a9503 #559 fix out of bound array access
This patch change the size of the array ptrPar from 6 to 7.

cppcheck says:

[sources/ogAdmServer.cpp:598]: (error) Array 'ptrCfg[6]' accessed at index 6, which is out of bounds.
2019-08-28 18:39:33 +02:00
Javier Sánchez Parra 882fec820e #915 check ogAdmServer binary existence when running pythong tests
Currently, if you try to run the python test without the ogAdmServer
binary, it will throw an exception.

This patch adds a check to ensure the existence of the ogAdmServer binary
at the beginning of the script.

 # python3 run-tests.py
 You need to build the ogAdmServer binary to run these tests :-)
2019-08-28 17:54:57 +02:00
Javier Sánchez Parra e397e7930f #915 add missing brackets to WOL API test json
Without the brackets the call works (200 response) but the ogAdmServer
does not send the WOL packets.
2019-08-28 17:53:19 +02:00
OpenGnSys Support Team 7c67487ab3 #915 trim unknown command syslog error to the initial 32 bytes
Aug 28 17:12:33 server ogAdmServer[10110]: 127.0.0.1:54640 POST /nonexistent HTTP/1.1^M Host ...
Aug 28 17:12:33 server ogAdmServer[10110]: unknown command: nonexistent HTTP/1.1^M Host: loca ...
2019-08-28 17:31:48 +02:00
OpenGnSys Support Team a12af6a6e1 #915 add syslog error when HTTP request processing fails 2019-08-28 17:22:19 +02:00
OpenGnSys Support Team 15685e618f #915 add og_server_internal_error()
This function sends a 500 HTTP error to client.
2019-08-28 17:22:12 +02:00
OpenGnSys Support Team 84a25639b3 #915 add syslog debugging for HTTP request
Display initial 32 bytes of the HTTP request.
2019-08-28 17:22:05 +02:00
OpenGnSys Support Team 20dcb0a906 #915 close connection to REST API if request is too long
If REST API request length is >= 4096 bytes, close the connection.
2019-08-28 17:16:01 +02:00
OpenGnSys Support Team 881f532ee1 #915 add OG_CLIENTS_MAX definition
This definition specifies the maximum number of clients, that is set up
to 4096.
2019-08-28 17:15:49 +02:00
OpenGnSys Support Team e80c85fbff #915 set maximum REST API response to 64 Kbytes
The existing 4 Kbytes might not be enough to store the results of the
GET /clients request, extend it up to 64 Kbytes.
2019-08-28 17:15:35 +02:00
OpenGnSys Support Team 7e6ba45f95 #915 json_dump_callback() takes flags as a parameter
Not as the buffer size, this leads to incorrectly printing the json
output since this might set on the JSON_EMBED flag on libjansson >= 2.10
2019-08-28 17:15:14 +02:00
OpenGnSys Support Team ba2e868019 #915 allow up to 4096 clients from REST API
Raise maximum number of clients to 4096.
2019-08-28 11:50:11 +02:00
Javier Sánchez Parra 7dc8fdbaff #915 reply with HTTP 405 when the method is incorrect
When a command/request exists but the method is not correct returns 405
error code.
2019-08-27 14:32:13 +02:00
OpenGnSys Support Team fbc30b2669 #915 internal error response if reply is too long
In case reply is too long, return 501 internal server error.
2019-08-27 12:02:57 +02:00
Ramón M. Gómez 0524f69bfe Merge branch 'devel-browser-newlinks' into devel 2019-08-20 17:31:21 +02:00
OpenGnSys Support Team c80e0e9725 #891 fix crash in wol command
Irina reports a crash in the wol command on Ubuntu 18.04 and gcc 7.4.0:

==9542== Process terminating with default action of signal 6 (SIGABRT)
==9542==    at 0x6C37E97: raise (raise.c:51)
==9542==    by 0x6C39800: abort (abort.c:79)
==9542==    by 0x6C82896: __libc_message (libc_fatal.c:181)
==9542==    by 0x6D2DCD0: __fortify_fail_abort (fortify_fail.c:33)
==9542==    by 0x6D2DC91: __stack_chk_fail (stack_chk_fail.c:29)
==9542==    by 0x111DB1: WakeUp(int, char*, char*, char*) (ogAdmServer.cpp:1390)
==9542==    by 0x11199F: Levanta(char**, char**, int, char*) (ogAdmServer.cpp:1251)
==9542==    by 0x118372: og_cmd_wol(json_t*, og_msg_params*) (ogAdmServer.cpp:3580)
==9542==    by 0x119B91: og_client_state_process_payload_rest(og_client*) (ogAdmServer.cpp:4030)
==9542==    by 0x11A4E9: og_client_read_cb(ev_loop*, ev_io*, int) (ogAdmServer.cpp:4212)
==9542==    by 0x5EA1D72: ev_invoke_pending (in /usr/lib/x86_64-linux-gnu/libev.so.4.0.0)
==9542==    by 0x5EA53DD: ev_run (in /usr/lib/x86_64-linux-gnu/libev.so.4.0.0)

sscanf() returns integers (32-bits) instead of array of 8-bits.
2019-08-20 17:26:48 +02:00
OpenGnSys Support Team 429bd3665c #891 fix crash in wol command
Irina reports a crash in the wol command on Ubuntu 18.04 and gcc 7.4.0:

==9542== Process terminating with default action of signal 6 (SIGABRT)
==9542==    at 0x6C37E97: raise (raise.c:51)
==9542==    by 0x6C39800: abort (abort.c:79)
==9542==    by 0x6C82896: __libc_message (libc_fatal.c:181)
==9542==    by 0x6D2DCD0: __fortify_fail_abort (fortify_fail.c:33)
==9542==    by 0x6D2DC91: __stack_chk_fail (stack_chk_fail.c:29)
==9542==    by 0x111DB1: WakeUp(int, char*, char*, char*) (ogAdmServer.cpp:1390)
==9542==    by 0x11199F: Levanta(char**, char**, int, char*) (ogAdmServer.cpp:1251)
==9542==    by 0x118372: og_cmd_wol(json_t*, og_msg_params*) (ogAdmServer.cpp:3580)
==9542==    by 0x119B91: og_client_state_process_payload_rest(og_client*) (ogAdmServer.cpp:4030)
==9542==    by 0x11A4E9: og_client_read_cb(ev_loop*, ev_io*, int) (ogAdmServer.cpp:4212)
==9542==    by 0x5EA1D72: ev_invoke_pending (in /usr/lib/x86_64-linux-gnu/libev.so.4.0.0)
==9542==    by 0x5EA53DD: ev_run (in /usr/lib/x86_64-linux-gnu/libev.so.4.0.0)

sscanf() returns integers (32-bits) instead of array of 8-bits.
2019-07-29 12:37:54 +02:00
Javier Sánchez Parra 8903c6819e #915 adds tests for a non existent method
This test adds four new error test cases:

1. Non existent method with POST.
2. Non existent method with GET.
3. Non existent method with POST but with wrong API token.
4. Non existent method with POST but without json.
2019-07-15 09:53:40 +02:00
Javier Sánchez Parra 66001f0a6c #915 returns 401 when incorrect authentication happens
ogAdmServer REST API now meets the starndar RFC 7235 when incorrect auth
happens.

og_client_not_authorized() now sends "401 Unauthorized" and
"WWW-Authenticate" instead of 404.
2019-07-15 09:51:53 +02:00
Javier Sánchez Parra 9c7954b4cc #915 adds test for POST /software REST API
This test covers two two scenarios:

1. Correct usage.
2. Incorrect usage, use this command with GET (this returns http 405).
2019-07-15 09:51:22 +02:00
Javier Sánchez Parra 022774b255 #915 adds test for POST /hardware REST API
This test covers two two scenarios:

1. Correct usage.
2. Incorrect usage, use this command with GET (this returns http 405).
2019-07-15 09:51:03 +02:00
Javier Sánchez Parra e46b09ba2c #915 adds test for POST /refresh REST API
This test covers two two scenarios:

1. Correct usage.
2. Incorrect usage, use this command with GET (this returns http 405).
2019-07-15 09:50:43 +02:00
Javier Sánchez Parra 84c4544f61 #915 adds test for POST /stop REST API
This test covers two two scenarios:

1. Correct usage.
2. Incorrect usage, use this command with GET (this returns http 405).
2019-07-15 09:50:21 +02:00
Javier Sánchez Parra 5ea87f3c92 #915 adds test for POST /reboot REST API
This test covers two two scenarios:

1. Correct usage.
2. Incorrect usage, use this command with GET (this returns http 405).
2019-07-15 09:49:51 +02:00
Javier Sánchez Parra a914462bbf #915 adds test for POST /poweroff REST API
This test covers two two scenarios:

1. Correct usage.
2. Incorrect usage, use this command with GET (this returns http 405).
2019-07-15 09:49:04 +02:00
Javier Sánchez Parra a887c7b4c8 #915 tests correct command, /session
This should test /shell/run instead of /session
2019-07-15 09:47:38 +02:00
Javier Sánchez Parra a927e14133 #559 fixes memory leak in tomaConfiguracion()
Calls fclose() after fopen() to release memory.
2019-07-15 09:44:42 +02:00
Javier Sánchez Parra 880cc90c14 #915 Improve test output using unittest discover
* Call the tests with python module unittest. In particular, the
  discover function.

* Rename tests files to meet the default requirements of discover
  function.
2019-07-05 17:41:26 +02:00
OpenGnSys Support Team b4a9fddf30 #915 add POST software command to REST API in ogAdmServer
This patch implements the command "software" that fetches the software
configuration from the clients.

Request:
        POST /software
        {"clients" : [ "192.168.2.1", "192.168.2.2" ]}
Reply:
        200 OK

This allows to refresh the software inventory from clients.
2019-07-03 02:56:07 +02:00