Update setup-adaptor implementation
authornshero.lee <nshero.lee@samsung.com>
Mon, 18 Dec 2017 10:23:58 +0000 (19:23 +0900)
committernshero.lee <nshero.lee@samsung.com>
Mon, 18 Dec 2017 10:23:58 +0000 (19:23 +0900)
Signed-off-by: nshero.lee <nshero.lee@samsung.com>
include/sa_common.h
include/sa_types.h
src/sa_manager.c
src/sa_systemdata.c

index 4784da5..6a8b55c 100644 (file)
@@ -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)
index e73a1d9..655ff0a 100644 (file)
@@ -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;
 
index cf04b72..ddcf2c5 100644 (file)
@@ -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)
index f8cda83..fdf4a0a 100644 (file)
@@ -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)