summaryrefslogtreecommitdiffstats
path: root/sources/ogAdmServer.cpp
Commit message (Collapse)AuthorAgeFilesLines
* #915 Validate POST /clients parametersRoberto Hueso Gómez2019-11-061-0/+15
| | | | | | | This patch adds og_msg_params_validate function as well as some flags that can be used to validate parameters of a REST API request. This patch ensures that all required parameters are sent in the request.
* #924 Always check the result of a command to avoid errorsJavier Sánchez Parra2019-11-041-9/+15
| | | | | | | | | | | | | | | Irina reports that if you try to restore an image without success (for example: the disk does not have enough space), the database changes as if no error would happen. So you see the computer in the WebConsole with an image/OS that, actually, does not have. The bug is caused because the function respuestaEstandar only checks the result of a command if it has a session. So the problem is that the commands which use respuestaEstandar without a session can return an error, but the ogAdmServer always works as no error would occur. This commit changes the behaviour of respuestaEstadar to always check the result of a command, whether it has a session or not.
* #915 Use og_cmd_legacy_send in og_cmd_run_schedule for ogAdmServerRoberto Hueso Gómez2019-10-291-13/+2
| | | | | This patch simplifies the og_cmd_run_schedule function by calling og_cmd_legacy_send.
* #915 Add POST "run/schedule" command to REST API in ogAdmServerRoberto Hueso Gómez2019-10-251-0/+40
| | | | | | | | | | | | | | | | | This patch implements the command "run/schedule" that kicks in pending commands execution. Request: POST /run/schedule { "clients": ["192.168.56.11"] } Reply: 200 OK This patch also adds a simple test to cover correction of the command.
* #915 Fix POST "software" cmd in ogAdmServer and webJavier Sánchez Parra2019-10-111-3/+21
| | | | | | | | | | | | | | | | | | This patch adds the parameters "disk" and "partition" to POST "software" command. This way the client can create a software profile without failure. New request: POST /software { "clients":[ "192.168.56.12" ], "disk":"1", "partition":"1" } Reply: 200 OK
* #915 Add POST "image/restore/incremental" command to REST API in ogAdmServerJavier Sánchez Parra2019-10-111-0/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch implements the command "image/restore/incremental" that provides partitioning and formatting functionality. Request: POST /image/restore/incremental { "clients":[ "192.168.56.11", "192.168.56.12" ], "disk":"1", "partition":"1", "id":"8", "name":"test", "repository":"192.168.56.10", "profile":"25", "type":"MULTICAST_9000:full-duplex:239.194.2.11:70M:4:60", "sync_params":{ "diff_id":"10", "diff_name":"testdiff", "path":"", "method":"1", "sync":"2", "diff":"0", "remove":"1", "compress":"0", "cleanup":"0", "cache":"0", "cleanup_cache":"0", "remove_dst":"0" } } Reply: 200 OK
* #915 Add POST "image/create/incremental" command to REST API in ogAdmServerRoberto Hueso Gómez2019-10-111-0/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch implements the command "image/create/incremental". Request: {"clients":["192.168.56.11"], "disk":"1", "partition":"1", "id":"3", "name":"basica1", "repository":"192.168.56.10", "sync_params":{"sync":"1", "path":"", "diff":"0", "diff_id":"4", "diff_name":"p2", "remove":"1", "compress":"0", "cleanup":"0", "cache":"0", "cleanup_cache":"0", "remove_dst":"0" } } Reply: 200 OK
* #915 Add POST "image/restore/basic" command to REST API in ogAdmServerJavier Sánchez Parra2019-10-091-0/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch implements the command "image/restore/basic" that provides partitioning and formatting functionality. Request: POST /image/restore/basic { "clients":[ "192.168.56.11" ], "disk":"1", "partition":"1", "id":"9", "name":"test", "repository":"192.168.56.10", "profile":"17", "type":"UNICAST", "sync_params":{ "path":"", "method":"1", "sync":"1", "diff":"0", "remove":"1", "compress":"0", "cleanup":"0", "cache":"0", "cleanup_cache":"0", "remove_dst":"0" } } Reply: 200 OK
* #915 Add POST "image/create/basic" command to REST API in ogAdmServerJavier Sánchez Parra2019-10-081-0/+108
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* #915 Improve error management for og_json_parse_partition()Roberto Hueso Gómez2019-10-071-7/+23
| | | | Validate json input and return an error code when parsing is not correct.
* #915 Add POST "image/setup" command to REST API in ogAdmServerRoberto Hueso Gómez2019-10-071-0/+100
| | | | | | | | | | | | | | | | 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
* #915 Remove Apagar, CrearImagen, RestaurarImagen, InventarioHardware, ↵OpenGnSys Support Team2019-10-031-110/+0
| | | | | | InventarioSoftware These socketHidra calls have been replaced by the REST API, remove them.
* #915: Add POST /image/restore command to REST API in ogAdmServerRoberto Hueso Gómez2019-10-011-0/+63
| | | | | | | | | | | 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
* #915: add og_json_parse_string() and use itRoberto Hueso Gómez2019-10-011-70/+17
| | | | This patch avoids repeating similar code by using just one json parser.
* #915: Add POST /image/create command to REST API in ogAdmServerRoberto Hueso Gómez2019-10-011-0/+102
| | | | | | | | | | | 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
* #915: Removes braces for single statement if branchRoberto Hueso Gómez2019-10-011-4/+3
| | | | Just a cleanup.
* #915: Fix file descriptor leak in og_socket_server_init() from exit pathRoberto Hueso Gómez2019-09-191-0/+1
| | | | | | | | | | | | | | | | | 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.
* #915: Return 400 status code in POST methods when no payload is attachedRoberto Hueso Gómez2019-09-191-11/+20
| | | | | | | 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.
* #915 check HTTP Content-Length sizeJavier Sánchez Parra2019-09-101-1/+3
| | | | If Content-Length is too large ogAdmServer, close the connection..
* #915 fix missing null-terminated stringJavier Sánchez Parra2019-09-051-1/+1
| | | | | | 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.
* #915 do not bail out when failing to send message to stale clientsOpenGnSys Support Team2019-09-021-4/+2
| | | | | | 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.
* #559 fix out of bound array accessJavier Sánchez Parra2019-08-281-1/+1
| | | | | | | | 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.
* #915 trim unknown command syslog error to the initial 32 bytesOpenGnSys Support Team2019-08-281-1/+1
| | | | | 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 ...
* #915 add syslog error when HTTP request processing failsOpenGnSys Support Team2019-08-281-4/+17
|
* #915 add og_server_internal_error()OpenGnSys Support Team2019-08-281-5/+12
| | | | This function sends a 500 HTTP error to client.
* #915 add syslog debugging for HTTP requestOpenGnSys Support Team2019-08-281-4/+4
| | | | Display initial 32 bytes of the HTTP request.
* #915 close connection to REST API if request is too longOpenGnSys Support Team2019-08-281-1/+8
| | | | If REST API request length is >= 4096 bytes, close the connection.
* #915 add OG_CLIENTS_MAX definitionOpenGnSys Support Team2019-08-281-2/+4
| | | | | This definition specifies the maximum number of clients, that is set up to 4096.
* #915 set maximum REST API response to 64 KbytesOpenGnSys Support Team2019-08-281-2/+4
| | | | | The existing 4 Kbytes might not be enough to store the results of the GET /clients request, extend it up to 64 Kbytes.
* #915 json_dump_callback() takes flags as a parameterOpenGnSys Support Team2019-08-281-2/+2
| | | | | 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
* #915 allow up to 4096 clients from REST APIOpenGnSys Support Team2019-08-281-2/+2
| | | | Raise maximum number of clients to 4096.
* #915 reply with HTTP 405 when the method is incorrectJavier Sánchez Parra2019-08-271-12/+25
| | | | | When a command/request exists but the method is not correct returns 405 error code.
* #915 internal error response if reply is too longOpenGnSys Support Team2019-08-271-4/+11
| | | | In case reply is too long, return 501 internal server error.
* #891 fix crash in wol commandOpenGnSys Support Team2019-07-291-6/+6
| | | | | | | | | | | | | | | | | | | | 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.
* #915 returns 401 when incorrect authentication happensJavier Sánchez Parra2019-07-151-1/+3
| | | | | | | | 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.
* #559 fixes memory leak in tomaConfiguracion()Javier Sánchez Parra2019-07-151-0/+2
| | | | Calls fclose() after fopen() to release memory.
* #915 add POST software command to REST API in ogAdmServerOpenGnSys Support Team2019-07-031-0/+30
| | | | | | | | | | | | | 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.
* #915 add POST hardware command to REST API in ogAdmServerOpenGnSys Support Team2019-07-031-0/+30
| | | | | | | | | | | | | 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.
* #915 add support for HTTP AuthorizationOpenGnSys Support Team2019-06-241-1/+22
| | | | Add APITOKEN= field to ogAdmServer.cfg to specify the REST API key.
* #896 Fix memory leak in wake_up_broadcast()Javier Sánchez Parra2019-06-121-1/+1
| | | | call freeifaddrs() after getifaddrs() to release memory.
* #915 validate message length based on announced Content-Length fieldOpenGnSys Support Team2019-05-311-10/+14
| | | | | Otherwise, TCP segmentation leads to handle an incomplete payload, this problems manifests with errors when parsing the json body.
* #915 remove Actualizar(), Purgar(), Reiniciar() and IniciarSesion()OpenGnSys Support Team2019-05-301-86/+0
| | | | | | | | | 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.
* #915 add POST refresh command to REST API in ogAdmServerOpenGnSys Support Team2019-05-301-0/+29
| | | | | | | | | | | | | 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
* #915 add POST stop command to REST API in ogAdmServerOpenGnSys Support Team2019-05-301-0/+29
| | | | | | | | | | | | 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
* #915 add POST reboot command to REST API in ogAdmServerOpenGnSys Support Team2019-05-301-0/+29
| | | | | | | | | | | | 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
* #915 add POST poweroff command to REST API in ogAdmServerOpenGnSys Support Team2019-05-301-0/+29
| | | | | | | | | | | | 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
* #915 add og_cmd_legacy_send()OpenGnSys Support Team2019-05-291-4/+5
| | | | Add function to send legacy command to clients.
* #915 remove Sondeo(), respuestaSondeo(), ConsolaRemota(), Arrancar() and ↵OpenGnSys Support Team2019-05-271-199/+0
| | | | | | | | | | | | 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.
* #915 add POST session command to REST API in ogAdmServerOpenGnSys Support Team2019-05-271-0/+78
| | | | | | | | | | | | 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
* #915 add POST shell/output command to REST API in ogAdmServerOpenGnSys Support Team2019-05-271-0/+93
| | | | | | | | | | | | | 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" : "..." } ] }