From: nshero.lee Date: Mon, 18 Dec 2017 10:23:58 +0000 (+0900) Subject: Update setup-adaptor implementation X-Git-Tag: submit/tizen_4.0/20180104.080035~25 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=89b5e077fc04e64174c584e437e6daaaea03da8f;p=platform%2Fcore%2Fsystem%2Fsetup-adaptor.git Update setup-adaptor implementation Signed-off-by: nshero.lee --- diff --git a/include/sa_common.h b/include/sa_common.h index 4784da5..6a8b55c 100644 --- a/include/sa_common.h +++ b/include/sa_common.h @@ -25,6 +25,8 @@ #define LOG_TAG "SETUP-ADAPTOR" +#define MIN(X, Y) ((X) < (Y) ? (X) : (Y)) + #define _E(fmt, arg...) LOGE(fmt, ##arg) #define _D(fmt, arg...) LOGD(fmt, ##arg) #define _W(fmt, arg...) LOGW(fmt, ##arg) diff --git a/include/sa_types.h b/include/sa_types.h index e73a1d9..655ff0a 100644 --- a/include/sa_types.h +++ b/include/sa_types.h @@ -86,11 +86,11 @@ typedef enum { * */ typedef struct { - char *ipAddress; - char *netmask; - char *defaultGateway; - char *primaryDnsServer; - char *secondaryDnsServer; + char ipAddress[255+1]; + char netmask[255+1]; + char defaultGateway[255+1]; + char primaryDnsServer[255+1]; + char secondaryDnsServer[255+1]; } sa_network_static_s; /** @@ -103,8 +103,8 @@ typedef struct { typedef struct { int enabled; int dhcpEnabled; - char *ssid; - char *password; + char ssid[255+1]; + char password[255+1]; sa_network_static_s *staticInfo; } sa_wifi_s; @@ -131,7 +131,7 @@ typedef struct { typedef struct { sa_wifi_s *wifi; sa_eth_s *eth; - char *httpProxyHost; + char httpProxyHost[255+1]; int httpProxyPort; } sa_network_s; @@ -155,7 +155,7 @@ typedef struct { * */ typedef struct { - char *deviceName; + char deviceName[255+1]; } sa_systemdata_s; /** @@ -166,8 +166,8 @@ typedef struct { * */ typedef struct { - char *version; - sa_network_s *network; + char version[127+1]; + sa_network_s *networkData; sa_systemdata_s *systemData; } sa_config_s; diff --git a/src/sa_manager.c b/src/sa_manager.c index cf04b72..ddcf2c5 100644 --- a/src/sa_manager.c +++ b/src/sa_manager.c @@ -93,7 +93,7 @@ static void __print_config_info(sa_config_s * config) if (config != NULL) { if (config->version != NULL) _D("Version [%s]", config->version); - network = config->network; + network = config->networkData; if (network != NULL) { wifi = network->wifi; if (wifi != NULL) { @@ -179,15 +179,15 @@ static void __release_network_resource(sa_network_s * network) } } -static void __release_config_resource(sa_config_s * config, sa_network_activate_pararms_s * activateParams) +static void __release_config_resource(sa_config_s *config, sa_network_activate_pararms_s *activateParams) { if (config != NULL) { if (config->version != NULL) free(config->version); - if (config->network != NULL) - __release_network_resource(config->network); + if (config->networkData != NULL) + __release_network_resource(config->networkData); if (config->systemData != NULL) { if (config->systemData->deviceName != NULL) diff --git a/src/sa_systemdata.c b/src/sa_systemdata.c index f8cda83..fdf4a0a 100644 --- a/src/sa_systemdata.c +++ b/src/sa_systemdata.c @@ -184,7 +184,27 @@ static char *json_getStringFromArray(char *data, char *arrayKey, int arrayIndex, return ret_buf; } -static char *json_getStringfromObj(json_object * inputObj, char *key) +static int json_get_boolean_from_obj(json_object *inputObj, char *key) +{ + struct json_object *bodyObj; + enum json_type type; + int ret = 0; + + type = json_object_get_type(inputObj); + + if (type == json_type_object) { + if (json_object_object_get_ex(inputObj, key, &bodyObj)) { + ret = json_object_get_boolean(bodyObj); + } else { + _E("ERROR : no data"); + + } + } + json_object_put(inputObj); + return ret; +} + +static char *json_get_string_from_obj(json_object *inputObj, char *key) { const char *buf = NULL; char *ret_buf = NULL; @@ -212,114 +232,103 @@ static char *json_getStringfromObj(json_object * inputObj, char *key) return ret_buf; } -static int __parse_networkData(char *data, sa_network_s * network) +static int __parse_network_eth(json_object *inputObj, sa_eth_s *eth) { - struct json_object *configObj = NULL; - struct json_object *networkObj = NULL; - struct json_object *wifiObj = NULL; - struct json_object *ethernetObj = NULL; - - char *ssid = NULL; - char *password = NULL; - int enabled = 0; - int dhcpEnabled = 0; - char *ipAddress = NULL; - char *netmask = NULL; - char *defaultGateway = NULL; - char *primaryDnsServer = NULL; - char *secondaryDnsServer = NULL; - - configObj = json_tokener_parse(data); - - if (configObj != NULL) { - - /*status = json_getStringfromObj(configObj, "Action"); - if(status != NULL) { - memcpy(task_info->status, status, strlen(status)+1); - if(status != NULL) { - free(status); - status = NULL; - } - } - if(json_object_object_get_ex(eventObj, "Actor", &actorObj)) { - if(json_object_object_get_ex(actorObj, "Attributes", &attributeObj)) { - name = dockerform_json_getStringfromObj(attributeObj, "com.docker.swarm.service.name"); - if(name != NULL) { - memcpy(task_info->id, name, strlen(name)+1); - if(name != NULL) { - free(name); - name = NULL; - } - } - } - } */ - } else { - _D("eventObj is null"); - return -1; +} + +static int __parse_network_wifi(json_object *inputObj, sa_wifi_s *wifi) +{ + +} + +static int __parse_network_data(char *data, sa_network_s *network) +{ + + return 0; +} + + +static int __parse_system_data(char *data, sa_systemdata_s *system) +{ + return 0; +} + + +static int __parse_version(json_object *inputObj, sa_config_s *setupConfig) +{ + char *version = NULL; + + if (inputObj == NULL || setupConfig == NULL) { + return -1; } - _D("dockerform_parse_container_info end"); + version = json_get_string_from_obj(inputObj, SA_CONFIG_VERSION); + + if (version != NULL) { + memcpy(setupConfig->version, version, MIN(strlen(version), sizeof(setupConfig->version)-1)); + free(version); + version = NULL; + } return 0; } -static int __parse_config(char *file, sa_config_s * config) +static int __parse_config(char *file, sa_config_s *setupConfig) { struct json_object *configObj = NULL; - char *json_data = NULL; - char *version = NULL; - sa_network_s *network = NULL; - int read_len = 0; + char *jsonData = NULL; + int readLen = 0; int fd = 0; int len = 0; + int ret = 0; fd = open(file, O_RDONLY); if (fd) { - len = lseek(fd, 0L, SEEK_END) - 1; - - lseek(fd, 0L, SEEK_SET); - json_data = (char *)malloc(len + 1); - if (json_data) { - memset(json_data, 0x00, len + 1); - - read_len = read(fd, json_data, len); - - _D("JSON full data[%s]", json_data); - - /* configObj = json_tokener_parse(json_data); - if (configObj != NULL) { - - // version - version = json_getStringfromObj(configObj, SA_CONFIG_VERSION); - - if(version != NULL) { - memcpy(config->version, version, strlen(version)+1); - if(version != NULL) { - free(status); - status = NULL; - } - } - } - - // network - config->network = - // systemData - config->systemData = - container_create_info_h->name = json_getString(json_data, "name"); - container_create_info_h->image = json_getString(json_data, "image"); - container_create_info_h->entry_cmd = json_getString(json_data, "entry_cmd"); - container_create_info_h->volume = json_getString(json_data, "volume"); - container_create_info_h->net_mode = json_getString(json_data, "net_mode"); - container_create_info_h->privileged = json_getNumber(json_data, "privileged"); - container_create_info_h->enable = json_getNumber(json_data, "enable"); - */ - free(json_data); + len = lseek(fd, 0L, SEEK_END); + + if (len > 0) { + lseek(fd, 0L, SEEK_SET); + jsonData = (char *)malloc(len + 1); + if (jsonData != NULL) { + memset(jsonData, 0x00, len + 1); + readLen = read(fd, jsonData, len); + _D("JSON full data[%s]", jsonData); + + configObj = json_tokener_parse(jsonData); + + if (configObj != NULL) { + // parse version + ret = __parse_version(configObj, setupConfig); + + // parse system data + if (ret == 0) { + ret = __parse_system_data(configObj, setupConfig->systemData); + } + + // parse network data + if (ret == 0) { + ret = __parse_network_data(configObj, setupConfig->networkData); + } + } else { + ret = -1; + _E("ConfigObj is not existed"); + } + + free(jsonData); + } else { + ret = -1; + _E("memory allocation fail for jsonData"); + } } + close(fd); + } else { + ret = -1; + _E("config file can't be opened"); } - return 0; + return ret; } int sa_systemdata_get_config_info(char *file, sa_config_s * config)