Commit Graph

538 Commits (efb5f2758506ef875e376e40e978b1f03bf0ef8c)
 

Author SHA1 Message Date
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
OpenGnSys Support Team 6b30dbc65c #915 add POST hardware command to REST API in ogAdmServer
This patch implements the command "hardware" that fetches the hardware
configuration from the clients.

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

This allows to refresh the hardware inventory from clients.
2019-07-03 02:56:07 +02:00
Javier Sánchez Parra eae2385f67 #915 Add API token to tests in ogAdmServer/tests/units/*
Add token parameter in REST API test infrastructure.
2019-06-24 13:50:43 +02:00
Javier Sánchez Parra b8234523d1 #915 update installer to add APITOKEN= to ogAdmServer.cfg
This is going to be used to protect calls to ogAdmServer

Example line for ogAdmServer.cfg:

APITOKEN=9b5fddfc5d4d1daa74ffd7ce7c3c9925
2019-06-24 13:46:10 +02:00
OpenGnSys Support Team fd305405b7 #915 add support for HTTP Authorization
Add APITOKEN= field to ogAdmServer.cfg to specify the REST API key.
2019-06-24 13:42:25 +02:00
Javier Sánchez Parra e45455ec82 #915 Remove unnecessary return in ogAdmServer/tests/run-tests.py
No need to explicit return call, remove it.
2019-06-12 11:02:47 +02:00
Javier Sánchez Parra 8322fd6acb #896 Fix memory leak in wake_up_broadcast()
call freeifaddrs() after getifaddrs() to release memory.
2019-06-12 11:01:33 +02:00
Javier Sánchez Parra b35438d27e #915 add test for POST /session REST API 2019-05-31 11:39:43 +02:00
Javier Sánchez Parra 496f5ebb49 #915 add test for POST /shell/output REST API 2019-05-31 11:39:29 +02:00
Javier Sánchez Parra 5312e73c91 #915 add test for POST /shell/run REST API 2019-05-31 11:39:06 +02:00
Javier Sánchez Parra 556aa6b858 #915 add test for POST /wol REST API 2019-05-31 11:39:01 +02:00
Javier Sánchez Parra c39b1f324e #915 add test for POST /clients REST API 2019-05-31 11:38:57 +02:00
Javier Sánchez Parra 1af2f4b55e #915 add test for GET /clients REST API 2019-05-31 11:38:52 +02:00
Javier Sánchez Parra 727a109f7d #915 add unit test infrastructure for REST API
This python script creates a database and starts ogAdmServer to run the
tests.  This requires root to be launched:

	# ./run-tests.py

From the 'tests' folder.
2019-05-31 11:35:42 +02:00
OpenGnSys Support Team eb6aa82cd4 #915 validate message length based on announced Content-Length field
Otherwise, TCP segmentation leads to handle an incomplete payload, this
problems manifests with errors when parsing the json body.
2019-05-31 00:20:05 +02:00
OpenGnSys Support Team 99c6c62d81 #915 remove Actualizar(), Purgar(), Reiniciar() and IniciarSesion()
The new REST API obsoletes the following commands:

- Actualizar() has been replaced by POST /refresh.
- Purgar() has been replaced by POST /stop.
- Reiniciar() has been replaced by POST /reboot.
- IniciarSesion() has been replaced by POST /session.
2019-05-30 15:32:26 +02:00
OpenGnSys Support Team 17f55b41c3 #915 add POST refresh command to REST API in ogAdmServer
Forces client to fetch and run any pending command from the server,
reload its local configuration file and re-start its selection menu.

curl -X POST http://127.0.0.1:8888/refresh -d @refresh.json

    Request
            POST /refresh
            {"clients": [ "192.168.2.1" ] }
    Reply:
            200 OK
2019-05-30 15:32:24 +02:00
OpenGnSys Support Team 1e6c889256 #915 add POST stop command to REST API in ogAdmServer
Stop the menu selection on client (through POST method):

curl -X POST http://127.0.0.1:8888/stop -d @stop.json

Request
	POST /stop
	{"clients": [ "192.168.2.1" ] }
Reply:
	200 OK
2019-05-30 15:32:22 +02:00
OpenGnSys Support Team 5f0191d73f #915 add POST reboot command to REST API in ogAdmServer
Reboot a client (through POST method):

        curl -X POST http://127.0.0.1:8888/reboot -d @reboot.json

Request
        POST /reboot
        {"clients": [ "192.168.2.1" ] }
Reply:
        200 OK
2019-05-30 15:32:18 +02:00
OpenGnSys Support Team 23fed47639 #915 add POST poweroff command to REST API in ogAdmServer
Power off a client (through POST method):

        curl -X POST http://127.0.0.1:8888/poweroff -d @poweroff.json

Request
        POST /poweroff
        {"clients": [ "192.168.2.1" ] }
Reply:
        200 OK
2019-05-30 15:32:01 +02:00
OpenGnSys Support Team 40023ff0b6 #915 add og_cmd_legacy_send()
Add function to send legacy command to clients.
2019-05-29 12:45:28 +02:00
OpenGnSys Support Team 8abc82f647 #915 remove Sondeo(), respuestaSondeo(), ConsolaRemota(), Arrancar() and EcoConsola()
The new REST API obsoletes the following commands:

- Sondeo() has been replaced by GET /clients.
- respuestaSondeo() has been replaced by POST /clients.
- ConsolaRemota() has been replaced by POST /shell/run.
- EcoConsola() has been replaced by POST /shell/output.
- Arrancar() has been replaced by POST /wol.
2019-05-27 13:03:14 +02:00
OpenGnSys Support Team 7ab5f0cbfb #915 add POST session command to REST API in ogAdmServer
Start a session on client (through POST method):

        curl -X POST http://127.0.0.1:8888/session -d @session.json

Request
        POST /session
        {"clients": [ "192.168.2.1" ] }
Reply:
        200 OK
2019-05-27 13:03:05 +02:00
OpenGnSys Support Team c6020f2ad1 #915 add POST shell/output command to REST API in ogAdmServer
Fetching result from run command on client (through GET method):

        curl -X POST http://127.0.0.1:8888/shell/output -d @post_shell_output.json

Request
        POST /shell/output
        {"clients": [ "192.168.2.1" ] }
Reply:
        200 OK
	{"clients": [ { "addr" : "192.168.2.1", "output" : "..." } ] }
2019-05-27 13:03:00 +02:00