diff options
author | Jose M. Guisado <jguisado@soleta.eu> | 2021-11-08 16:31:00 +0100 |
---|---|---|
committer | Jose M. Guisado <jguisado@soleta.eu> | 2021-11-17 09:07:57 +0100 |
commit | 5a3fd51261b40196dca461798ff4ca50417e0c75 (patch) | |
tree | 9fa7ec0222f6206703cc57788d2dd2ac48363f3e | |
parent | ac3ce22c35db2133816ca30a0a2148ca3dfa6da3 (diff) |
#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.
-rw-r--r-- | src/client.c | 8 | ||||
-rw-r--r-- | src/rest.c | 2 | ||||
-rw-r--r-- | src/rest.h | 1 |
3 files changed, 11 insertions, 0 deletions
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); @@ -124,6 +124,8 @@ static const char *og_client_status(const struct og_client *cli) return "OPG"; case OG_CLIENT_STATUS_VIRTUAL: return "VDI"; + case OG_CLIENT_STATUS_LINUX: + return "LINUX"; default: return "OFF"; } @@ -16,6 +16,7 @@ enum og_client_status { OG_CLIENT_STATUS_OGLIVE, OG_CLIENT_STATUS_BUSY, OG_CLIENT_STATUS_VIRTUAL, + OG_CLIENT_STATUS_LINUX, }; enum og_cmd_type { |