diff options
author | Javier Sánchez Parra <jsanchez@soleta.eu> | 2020-09-23 11:01:22 +0200 |
---|---|---|
committer | OpenGnSys Support Team <soporte-og@soleta.eu> | 2020-09-29 12:43:07 +0200 |
commit | 403e7c323b3069c8c70088ded30de3096a216e3f (patch) | |
tree | af2d46c5838054ba77cb99bcb67a928eab52ba60 /src/cfg.c | |
parent | f068a79c1a39f7f796e045628693241b0f3bc15a (diff) |
#1004 Add GET /images
This commit adds GET /images to the ogServer REST API.
This call returns information of all the images in ogServer.
Example response:
{
"images": [
{
"filename": "ubuntu.img",
"datasize": 2150400000,
"size": 613476223,
"modified": "Wed Sep 23 10:37:36 2020",
"permissions": "744"
},
{
"filename": "test.img",
"datasize": 2150400000,
"size": 613236475,
"modified": "Tue Sep 29 08:57:47 2020",
"permissions": "744"
}
],
"disk": {
"total": 52573995008,
"free": 39624544256
}
}
Diffstat (limited to 'src/cfg.c')
-rw-r--r-- | src/cfg.c | 27 |
1 files changed, 26 insertions, 1 deletions
@@ -88,9 +88,28 @@ static int parse_json_wol(struct og_server_cfg *cfg, json_t *element) return 0; } +static int parse_json_repo(struct og_server_cfg *cfg, json_t *element) +{ + const char *key; + json_t *value; + + json_object_foreach(element, key, value) { + if (!strcmp(key, "directory")) { + if (og_json_parse_string(value, &cfg->repo.dir) < 0) + return -1; + } else { + syslog(LOG_ERR, "unknown key `%s' in repo\n", key); + return -1; + } + } + + return 0; +} + #define OG_SERVER_CFG_REST (1 << 0) #define OG_SERVER_CFG_DB (1 << 1) #define OG_SERVER_CFG_WOL (1 << 2) +#define OG_SERVER_CFG_REPO (1 << 3) int parse_json_config(const char *filename, struct og_server_cfg *cfg) { @@ -138,6 +157,11 @@ int parse_json_config(const char *filename, struct og_server_cfg *cfg) break; } flags |= OG_SERVER_CFG_DB; + } else if (!strcmp(key, "repository")) { + if (parse_json_repo(cfg, value) < 0) + return -1; + + flags |= OG_SERVER_CFG_REPO; } else { syslog(LOG_ERR, "unknown key `%s' in %s\n", key, filename); @@ -150,7 +174,8 @@ int parse_json_config(const char *filename, struct og_server_cfg *cfg) if ((flags & OG_SERVER_CFG_REST) && (flags & OG_SERVER_CFG_DB) && - (flags & OG_SERVER_CFG_WOL)) { + (flags & OG_SERVER_CFG_WOL) && + (flags & OG_SERVER_CFG_REPO)) { ret = 0; } else { syslog(LOG_ERR, "Missing attributes in json file"); |