Commit Graph

177 Commits (1f55beb8f5048bd12011628ea97a684630f3b1ea)
 

Author SHA1 Message Date
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
OpenGnSys Support Team 7e4e5b5e08 #915 add run command to REST API in ogAdmServer
Run command on client (through POST method):

	curl -X POST http://127.0.0.1:8888/shell/run -d @post_run.json

Request
	POST /shell/run
	{"clients": [ "192.168.2.1", "192.168.2.2" ], "run" : "ls" }
Reply:
	200 OK
2019-05-27 13:02:57 +02:00
OpenGnSys Support Team 5797e0b199 #915 add wol command to REST API in ogAdmServer
Send Wake-On-Lan to clients (through POST method):

Request:
	curl -X POST http://127.0.0.1:8888/wol
	{ "type" : "unicast", "clients" : [ { "addr" : "192.168.2.1", "mac" : "00AABBCCDD01" } ] }
Reply:
	200 OK
2019-05-27 13:02:52 +02:00
OpenGnSys Support Team 507c75c337 #915 Pass array of addresses to WakeUp()
To reuse this function to the REST API.
2019-05-27 13:02:49 +02:00
OpenGnSys Support Team 7b6fcdbc62 #915 add clients command to REST API in ogAdmServer
Request for existing clients:

	curl -X GET http://127.0.0.1:8888/clients

Request:
	GET /clients
Reply:
	200 OK
	{"clients": [ { "addr" : "192.168.2.1", "state" : "OPG" }, { "addr" : "192.168.2.2", "state" : "OFF" }]}
2019-05-27 13:02:45 +02:00
OpenGnSys Support Team 95e6520c4f #915 add initial REST API for ogAdmServer
Add REST API for ogAdmServer, this API is exposed through port 8888 on
the system that runs the ogAdmServer. The body of the HTTP message is
expressed in JSON format.

This patch implements the command "clients" that maps to the existing
legacy "Sondeo" command, that is used by the web interface to poll
refresh the client state.

This patch also includes an initial test infrastructure using 'curl' to
send commands to the new REST API.

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

This allows to refresh the status of the list of clients.
2019-05-27 13:02:37 +02:00
OpenGnSys Support Team 222637848b #915 add og_msg_alloc() and og_msg_free()
Add function to allocate and release the legacy message format.
2019-05-27 13:02:33 +02:00
OpenGnSys Support Team e979fd2020 #915 add og_send_cmd()
Add new function to check and send commands to the clients. This new
function takes an array of IP addresses (string) and send commands to
the clients.
2019-05-27 13:02:20 +02:00
OpenGnSys Support Team e3e4e6f677 #915 add og_socket_server_init()
Move code to create a socket into a function.
2019-05-27 13:02:06 +02:00
OpenGnSys Support Team 107b17a51b #915 add og_client_state_process_payload()
Move code that handles the message payload into function.
2019-05-27 13:02:00 +02:00
OpenGnSys Support Team d491dfdb2d #915 add og_client_state_recv_hdr()
Move code that handles the receiving header state into function.
2019-05-27 13:01:35 +02:00
OpenGnSys Support Team 0d6dc82669 #898 Remove unused encryption and decryption routines
Remove dead code to encrypt and decrypt the message.
2019-02-06 14:49:49 +01:00