From 5a3fd51261b40196dca461798ff4ca50417e0c75 Mon Sep 17 00:00:00 2001 From: "Jose M. Guisado" Date: Mon, 8 Nov 2021 16:31:00 +0100 Subject: #1065 client: add support for ogclient linux state ogClient can be run in linux mode, intended for exposing some ogServer commands when running in a linux distribution. When connecting with a client in linux mode, do not expect a full partition setup response. Just expect a 'status', and then accept the connection without updating any partition information in the database. --- src/client.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/client.c') diff --git a/src/client.c b/src/client.c index f6de95e..5befa9c 100644 --- a/src/client.c +++ b/src/client.c @@ -286,6 +286,7 @@ static int og_resp_refresh(json_t *data, struct og_client *cli) struct og_partition disks[OG_DISK_MAX] = {}; const char *serial_number = NULL; struct og_computer computer = {}; + const char *status = NULL; char cfg[4096] = {}; struct og_dbi *dbi; const char *key; @@ -304,12 +305,19 @@ static int og_resp_refresh(json_t *data, struct og_client *cli) err = og_json_parse_partition_array(value, partitions); } else if (!strcmp(key, "serial_number")) { err = og_json_parse_string(value, &serial_number); + } else if (!strcmp(key, "status")) { + err = og_json_parse_string(value, &status); } if (err < 0) return err; } + if (status && !strncmp(status, "LINUX", strlen("LINUX"))) { + cli->status = OG_CLIENT_STATUS_LINUX; + return 0; + } + if (strlen(serial_number) > 0) snprintf(cfg, sizeof(cfg), "ser=%s\n", serial_number); -- cgit v1.2.3-18-g5258