X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fwifi-config.c;h=efcfd22660d4d1c6b9a06419b6d5521563be7732;hb=fd923f0bf938ceefa8610485bd50e81fd62479a8;hp=1824ef2a5b660265ea32fa19d7a46aaff7d4b61e;hpb=c656eafe1544b6ed1d4b6f9f32538b9b56740571;p=platform%2Fcore%2Fconnectivity%2Fnet-config.git diff --git a/src/wifi-config.c b/src/wifi-config.c index 1824ef2..efcfd22 100755 --- a/src/wifi-config.c +++ b/src/wifi-config.c @@ -82,6 +82,7 @@ static void __free_wifi_configuration(struct wifi_config *conf) g_free(conf->security_type); g_free(conf->is_hidden); g_free(conf->proxy_address); + g_free(conf->last_error); if (conf->eap_config) { g_free(conf->eap_config->anonymous_identity); g_free(conf->eap_config->ca_cert); @@ -102,44 +103,45 @@ static gboolean __get_mac_address(gchar **mac_address) gchar *tmp = NULL; gchar mac[13] = { 0, }; gint i = 0, j = 0; -#if defined TIZEN_TV - FILE *fp = NULL; - char buf[WIFI_MAC_ADD_LENGTH + 1]; - if (0 == access(WIFI_MAC_ADD_PATH, F_OK)) - fp = fopen(WIFI_MAC_ADD_PATH, "r"); - - if (fp == NULL) { - ERR("Failed to open file %s\n", WIFI_MAC_ADD_PATH); - *mac_address = NULL; - return FALSE; - } - if (fgets(buf, sizeof(buf), fp) == NULL) { - ERR("Failed to get MAC info from %s\n", WIFI_MAC_ADD_PATH); - *mac_address = NULL; - fclose(fp); - return FALSE; - } - tmp_mac = (char *)g_try_malloc0(WIFI_MAC_ADD_LENGTH + 1); - if (tmp_mac == NULL) { - ERR("malloc() failed"); - *mac_address = NULL; + if (TIZEN_TV) { + FILE *fp = NULL; + char buf[WIFI_MAC_ADD_LENGTH + 1]; + if (0 == access(WIFI_MAC_ADD_PATH, F_OK)) + fp = fopen(WIFI_MAC_ADD_PATH, "r"); + + if (fp == NULL) { + ERR("Failed to open file %s\n", WIFI_MAC_ADD_PATH); + *mac_address = NULL; + return FALSE; + } + + if (fgets(buf, sizeof(buf), fp) == NULL) { + ERR("Failed to get MAC info from %s\n", WIFI_MAC_ADD_PATH); + *mac_address = NULL; + fclose(fp); + return FALSE; + } + tmp_mac = (char *)g_try_malloc0(WIFI_MAC_ADD_LENGTH + 1); + if (tmp_mac == NULL) { + ERR("malloc() failed"); + *mac_address = NULL; + fclose(fp); + return FALSE; + } + g_strlcpy(tmp_mac, buf, WIFI_MAC_ADD_LENGTH + 1); fclose(fp); - return FALSE; - } - g_strlcpy(tmp_mac, buf, WIFI_MAC_ADD_LENGTH + 1); - fclose(fp); -#else - tmp_mac = vconf_get_str(VCONFKEY_WIFI_BSSID_ADDRESS); - if (tmp_mac == NULL) { - ERR("vconf_get_str(WIFI_BSSID_ADDRESS) Failed"); - *mac_address = NULL; - return FALSE; + } else { + tmp_mac = vconf_get_str(VCONFKEY_WIFI_BSSID_ADDRESS); + if (tmp_mac == NULL) { + ERR("vconf_get_str(WIFI_BSSID_ADDRESS) Failed"); + *mac_address = NULL; + return FALSE; + } } -#endif tmp = g_ascii_strdown(tmp_mac, (gssize)strlen(tmp_mac)); g_free(tmp_mac); - while (tmp[i]) { + while (tmp && tmp[i]) { if (tmp[i] != ':') mac[j++] = tmp[i]; i++; @@ -216,9 +218,10 @@ static GKeyFile *__get_configuration_keyfile(const gchar *group_name) keyfile = netconfig_keyfile_load(path); if (keyfile == NULL) { ERR("keyfile[%s] is NULL", path); - g_free(path); } + g_free(path); + return keyfile; } @@ -282,6 +285,8 @@ static gboolean _load_configuration(const gchar *config_id, struct wifi_config * } config->name = g_key_file_get_string(keyfile, group_name, WIFI_CONFIG_NAME, NULL); + DBG("name [%s]", config->name); + ret = __get_security_type(config_id, &config->security_type); if (ret != TRUE) { ERR("Fail to _get_security_type"); @@ -289,12 +294,18 @@ static gboolean _load_configuration(const gchar *config_id, struct wifi_config * g_free(group_name); return FALSE; } + DBG("security_type [%s]", config->security_type); + config->proxy_address = g_key_file_get_string(keyfile, group_name, WIFI_CONFIG_PROXY_SERVER, NULL); + if (config->proxy_address) + DBG("proxy_address [%s]", config->proxy_address); + hidden = g_key_file_get_boolean(keyfile, group_name, WIFI_CONFIG_HIDDEN, NULL); if (hidden) config->is_hidden = g_strdup("TRUE"); else config->is_hidden = g_strdup("FALSE"); + DBG("is_hidden [%s]", config->is_hidden); if (g_strcmp0(config->security_type, WIFI_SECURITY_EAP) == 0) { config->eap_config->anonymous_identity = g_key_file_get_string(keyfile, group_name, WIFI_CONFIG_EAP_ANONYMOUS_IDENTITY, NULL); @@ -305,9 +316,28 @@ static gboolean _load_configuration(const gchar *config_id, struct wifi_config * config->eap_config->eap_type = g_key_file_get_string(keyfile, group_name, WIFI_CONFIG_EAP_TYPE, NULL); config->eap_config->eap_auth_type = g_key_file_get_string(keyfile, group_name, WIFI_CONFIG_EAP_AUTH_TYPE, NULL); config->eap_config->subject_match = g_key_file_get_string(keyfile, group_name, WIFI_CONFIG_EAP_SUBJECT_MATCH, NULL); + + if (config->eap_config->anonymous_identity) + DBG("anonymous_identity [%s]", config->eap_config->anonymous_identity); + if (config->eap_config->ca_cert) + DBG("ca_cert [%s]", config->eap_config->ca_cert); + if (config->eap_config->client_cert) + DBG("client_cert [%s]", config->eap_config->client_cert); + if (config->eap_config->private_key) + DBG("private_key [%s]", config->eap_config->private_key); + if (config->eap_config->identity) + DBG("identity [%s]", config->eap_config->identity); + if (config->eap_config->eap_type) + DBG("eap_type [%s]", config->eap_config->eap_type); + if (config->eap_config->eap_auth_type) + DBG("eap_auth_type [%s]", config->eap_config->eap_auth_type); + if (config->eap_config->subject_match) + DBG("subject_match [%s]", config->eap_config->subject_match); } config->last_error = g_key_file_get_string(keyfile, group_name, WIFI_CONFIG_FAILURE, NULL); + if (config->last_error) + DBG("last_error [%s]", config->last_error); g_key_file_free(keyfile); g_free(group_name); @@ -511,7 +541,6 @@ static gboolean _get_field(const gchar *config_id, const gchar *key, gchar **val static GSList *_get_list(void) { GSList *list = NULL; - struct dirent ent_struct; struct dirent *dp = NULL; DIR *dir; @@ -521,7 +550,7 @@ static GSList *_get_list(void) return NULL; } - while ((readdir_r(dir, &ent_struct, &dp) == 0) && dp) { + while ((dp = readdir(dir)) != NULL) { if (g_strcmp0(dp->d_name, ".") == 0 || g_strcmp0(dp->d_name, "..") == 0 || strncmp(dp->d_name, WIFI_CONFIG_PREFIX, strlen(WIFI_CONFIG_PREFIX)) != 0) { continue; @@ -591,7 +620,7 @@ gboolean handle_get_config_ids(Wifi *wifi, GDBusMethodInvocation *context) wifi_complete_get_config_ids(wifi, context, (const gchar * const *)result); for (i = 0; i < length; i++) - if(result[i]) + if (result[i]) g_free(result[i]); if (result) @@ -623,19 +652,19 @@ gboolean handle_load_configuration(Wifi *wifi, GDBusMethodInvocation *context, g_variant_builder_add(b, "{sv}", WIFI_CONFIG_NAME, g_variant_new_string(conf->name)); g_variant_builder_add(b, "{sv}", WIFI_CONFIG_SECURITY_TYPE, g_variant_new_string(conf->security_type)); g_variant_builder_add(b, "{sv}", WIFI_CONFIG_HIDDEN, g_variant_new_string(conf->is_hidden)); - if (conf->proxy_address != NULL) { + + if (conf->proxy_address != NULL) g_variant_builder_add(b, "{sv}", WIFI_CONFIG_PROXYADDRESS, g_variant_new_string(conf->proxy_address)); - g_free(conf->proxy_address); - } else { + else g_variant_builder_add(b, "{sv}", WIFI_CONFIG_PROXYADDRESS, g_variant_new_string("NONE")); - } - if (conf->last_error != NULL) { + + if (conf->last_error != NULL) g_variant_builder_add(b, "{sv}", WIFI_CONFIG_FAILURE, g_variant_new_string(conf->last_error)); - g_free(conf->last_error); - } else { + else g_variant_builder_add(b, "{sv}", WIFI_CONFIG_FAILURE, g_variant_new_string("ERROR_NONE")); - } + g_free(conf->proxy_address); + g_free(conf->last_error); g_free(conf->name); g_free(conf->security_type); g_free(conf->is_hidden); @@ -660,12 +689,9 @@ gboolean handle_save_configuration(Wifi *wifi, GDBusMethodInvocation *context, if ((wifi == NULL) || (config_id == NULL) || (configuration == NULL)) { ERR("Invalid parameter"); netconfig_error_invalid_parameter(context); - SLOG(LOG_INFO, "MDM_LOG_USER", "Object=wifi-profile, AccessType=Create, Result=Failed"); return FALSE; } - ERR("save_configuration [%s]", config_id); - conf = g_new0(struct wifi_config, 1); g_variant_get(configuration, "a{sv}", &iter); @@ -673,35 +699,35 @@ gboolean handle_save_configuration(Wifi *wifi, GDBusMethodInvocation *context, if (g_strcmp0(field, WIFI_CONFIG_NAME) == 0) { if (g_variant_is_of_type(value, G_VARIANT_TYPE_STRING)) { conf->name = g_strdup(g_variant_get_string(value, NULL)); - ERR("name [%s]", conf->name); + DBG("name [%s]", conf->name); } else { conf->name = NULL; } } else if (g_strcmp0(field, WIFI_CONFIG_SSID) == 0) { if (g_variant_is_of_type(value, G_VARIANT_TYPE_STRING)) { conf->ssid = g_strdup(g_variant_get_string(value, NULL)); - ERR("ssid [%s]", conf->ssid); + DBG("ssid [%s]", conf->ssid); } else { conf->ssid = NULL; } } else if (g_strcmp0(field, WIFI_CONFIG_PASSPHRASE) == 0) { if (g_variant_is_of_type(value, G_VARIANT_TYPE_STRING)) { conf->passphrase = g_strdup(g_variant_get_string(value, NULL)); - ERR("passphrase []"); + DBG("passphrase []"); } else { conf->passphrase = NULL; } } else if (g_strcmp0(field, WIFI_CONFIG_HIDDEN) == 0) { if (g_variant_is_of_type(value, G_VARIANT_TYPE_STRING)) { conf->is_hidden = g_strdup(g_variant_get_string(value, NULL)); - ERR("is_hidden [%s]", conf->is_hidden); + DBG("is_hidden [%s]", conf->is_hidden); } else { conf->is_hidden = NULL; } } else if (g_strcmp0(field, WIFI_CONFIG_PROXYADDRESS) == 0) { if (g_variant_is_of_type(value, G_VARIANT_TYPE_STRING)) { conf->proxy_address = g_strdup(g_variant_get_string(value, NULL)); - ERR("proxy_address [%s]", conf->proxy_address); + DBG("proxy_address [%s]", conf->proxy_address); } else { conf->proxy_address = NULL; } @@ -712,6 +738,12 @@ gboolean handle_save_configuration(Wifi *wifi, GDBusMethodInvocation *context, ret = __get_group_name(WIFI_CONFIG_PREFIX, config_id, &group_name); if (ret != TRUE) { + g_free(conf->name); + g_free(conf->ssid); + g_free(conf->passphrase); + g_free(conf->is_hidden); + g_free(conf->proxy_address); + g_free(conf); ERR("Fail to get_wifi_config_group_name"); return FALSE; } @@ -741,10 +773,10 @@ gboolean handle_save_configuration(Wifi *wifi, GDBusMethodInvocation *context, ret = _save_configuration(config_id, keyfile); if (ret == TRUE) { - SLOG(LOG_INFO, "MDM_LOG_USER", "Object=wifi-profile, AccessType=Create, Result=Succeed"); + INFO("Success to save configuration [%s]", config_id); wifi_complete_save_configuration(wifi, context); } else { - SLOG(LOG_INFO, "MDM_LOG_USER", "Object=wifi-profile, AccessType=Create, Result=Failed"); + INFO("Fail to save configuration [%s]", config_id); netconfig_error_dbus_method_return(context, NETCONFIG_ERROR_INTERNAL, "FailSaveConfiguration"); } @@ -786,16 +818,14 @@ gboolean handle_load_eap_configuration(Wifi *wifi, GDBusMethodInvocation *contex g_variant_builder_add(b, "{sv}", WIFI_CONFIG_NAME, g_variant_new_string(conf->name)); g_variant_builder_add(b, "{sv}", WIFI_CONFIG_SECURITY_TYPE, g_variant_new_string(conf->security_type)); g_variant_builder_add(b, "{sv}", WIFI_CONFIG_HIDDEN, g_variant_new_string(conf->is_hidden)); - if (conf->proxy_address != NULL) { + if (conf->proxy_address != NULL) g_variant_builder_add(b, "{sv}", WIFI_CONFIG_PROXYADDRESS, g_variant_new_string(conf->proxy_address)); - g_free(conf->proxy_address); - } else + else g_variant_builder_add(b, "{sv}", WIFI_CONFIG_PROXYADDRESS, g_variant_new_string("NONE")); - if (conf->last_error != NULL) { + if (conf->last_error != NULL) g_variant_builder_add(b, "{sv}", WIFI_CONFIG_FAILURE, g_variant_new_string(conf->last_error)); - g_free(conf->last_error); - } else + else g_variant_builder_add(b, "{sv}", WIFI_CONFIG_FAILURE, g_variant_new_string("ERROR_NONE")); if (conf->eap_config != NULL) { @@ -861,12 +891,9 @@ gboolean handle_save_eap_configuration(Wifi *wifi, GDBusMethodInvocation *contex if ((wifi == NULL) || (config_id == NULL) || (configuration == NULL)) { ERR("Invalid parameter"); netconfig_error_invalid_parameter(context); - SLOG(LOG_INFO, "MDM_LOG_USER", "Object=wifi-profile, AccessType=Create, Result=Failed"); return FALSE; } - INFO("save [%s]", config_id); - conf = g_new0(struct wifi_config, 1); conf->eap_config = g_new0(struct wifi_eap_config, 1); @@ -875,91 +902,91 @@ gboolean handle_save_eap_configuration(Wifi *wifi, GDBusMethodInvocation *contex if (g_strcmp0(field, WIFI_CONFIG_NAME) == 0) { if (g_variant_is_of_type(value, G_VARIANT_TYPE_STRING)) { conf->name = g_strdup(g_variant_get_string(value, NULL)); - ERR("name [%s]", conf->name); + DBG("name [%s]", conf->name); } else { conf->name = NULL; } } else if (g_strcmp0(field, WIFI_CONFIG_SSID) == 0) { if (g_variant_is_of_type(value, G_VARIANT_TYPE_STRING)) { conf->ssid = g_strdup(g_variant_get_string(value, NULL)); - ERR("ssid [%s]", conf->ssid); + DBG("ssid [%s]", conf->ssid); } else { conf->ssid = NULL; } } else if (g_strcmp0(field, WIFI_CONFIG_PASSPHRASE) == 0) { if (g_variant_is_of_type(value, G_VARIANT_TYPE_STRING)) { conf->passphrase = g_strdup(g_variant_get_string(value, NULL)); - ERR("passphrase [%s]", conf->passphrase); + DBG("passphrase [%s]", conf->passphrase); } else { conf->passphrase = NULL; } } else if (g_strcmp0(field, WIFI_CONFIG_HIDDEN) == 0) { if (g_variant_is_of_type(value, G_VARIANT_TYPE_STRING)) { conf->is_hidden = g_strdup(g_variant_get_string(value, NULL)); - ERR("is_hidden [%s]", conf->is_hidden); + DBG("is_hidden [%s]", conf->is_hidden); } else { conf->is_hidden = NULL; } } else if (g_strcmp0(field, WIFI_CONFIG_PROXYADDRESS) == 0) { if (g_variant_is_of_type(value, G_VARIANT_TYPE_STRING)) { conf->proxy_address = g_strdup(g_variant_get_string(value, NULL)); - ERR("proxy_address [%s]", conf->proxy_address); + DBG("proxy_address [%s]", conf->proxy_address); } else { conf->proxy_address = NULL; } } else if (g_strcmp0(field, WIFI_CONFIG_EAP_ANONYMOUS_IDENTITY) == 0) { if (g_variant_is_of_type(value, G_VARIANT_TYPE_STRING)) { conf->eap_config->anonymous_identity = g_strdup(g_variant_get_string(value, NULL)); - ERR("anonymous_identity [%s]", conf->eap_config->anonymous_identity); + DBG("anonymous_identity [%s]", conf->eap_config->anonymous_identity); } else { conf->eap_config->anonymous_identity = NULL; } } else if (g_strcmp0(field, WIFI_CONFIG_EAP_CACERT) == 0) { if (g_variant_is_of_type(value, G_VARIANT_TYPE_STRING)) { conf->eap_config->ca_cert = g_strdup(g_variant_get_string(value, NULL)); - ERR("ca_cert [%s]", conf->eap_config->ca_cert); + DBG("ca_cert [%s]", conf->eap_config->ca_cert); } else { conf->eap_config->ca_cert = NULL; } } else if (g_strcmp0(field, WIFI_CONFIG_EAP_CLIENTCERT) == 0) { if (g_variant_is_of_type(value, G_VARIANT_TYPE_STRING)) { conf->eap_config->client_cert = g_strdup(g_variant_get_string(value, NULL)); - ERR("client_cert [%s]", conf->eap_config->client_cert); + DBG("client_cert [%s]", conf->eap_config->client_cert); } else { conf->eap_config->client_cert = NULL; } } else if (g_strcmp0(field, WIFI_CONFIG_EAP_PRIVATEKEY) == 0) { if (g_variant_is_of_type(value, G_VARIANT_TYPE_STRING)) { conf->eap_config->private_key = g_strdup(g_variant_get_string(value, NULL)); - ERR("private_key [%s]", conf->eap_config->private_key); + DBG("private_key [%s]", conf->eap_config->private_key); } else { conf->eap_config->private_key = NULL; } } else if (g_strcmp0(field, WIFI_CONFIG_EAP_IDENTITY) == 0) { if (g_variant_is_of_type(value, G_VARIANT_TYPE_STRING)) { conf->eap_config->identity = g_strdup(g_variant_get_string(value, NULL)); - ERR("identity [%s]", conf->eap_config->identity); + DBG("identity [%s]", conf->eap_config->identity); } else { conf->eap_config->identity = NULL; } } else if (g_strcmp0(field, WIFI_CONFIG_EAP_TYPE) == 0) { if (g_variant_is_of_type(value, G_VARIANT_TYPE_STRING)) { conf->eap_config->eap_type = g_strdup(g_variant_get_string(value, NULL)); - ERR("eap_type [%s]", conf->eap_config->eap_type); + DBG("eap_type [%s]", conf->eap_config->eap_type); } else { conf->eap_config->eap_type = NULL; } } else if (g_strcmp0(field, WIFI_CONFIG_EAP_AUTH_TYPE) == 0) { if (g_variant_is_of_type(value, G_VARIANT_TYPE_STRING)) { conf->eap_config->eap_auth_type = g_strdup(g_variant_get_string(value, NULL)); - ERR("eap_auth_type [%s]", conf->eap_config->eap_auth_type); + DBG("eap_auth_type [%s]", conf->eap_config->eap_auth_type); } else { conf->eap_config->eap_auth_type = NULL; } } else if (g_strcmp0(field, WIFI_CONFIG_EAP_SUBJECT_MATCH) == 0) { if (g_variant_is_of_type(value, G_VARIANT_TYPE_STRING)) { conf->eap_config->subject_match = g_strdup(g_variant_get_string(value, NULL)); - ERR("subject_match [%s]", conf->eap_config->subject_match); + DBG("subject_match [%s]", conf->eap_config->subject_match); } else { conf->eap_config->subject_match = NULL; } @@ -998,12 +1025,44 @@ gboolean handle_save_eap_configuration(Wifi *wifi, GDBusMethodInvocation *contex g_key_file_set_boolean(keyfile, group_name, WIFI_CONFIG_HIDDEN, hidden); } + if (conf->eap_config->anonymous_identity != NULL) + g_key_file_set_string(keyfile, group_name, + WIFI_CONFIG_EAP_ANONYMOUS_IDENTITY, conf->eap_config->anonymous_identity); + + if (conf->eap_config->ca_cert != NULL) + g_key_file_set_string(keyfile, group_name, + WIFI_CONFIG_EAP_CACERT, conf->eap_config->ca_cert); + + if (conf->eap_config->client_cert != NULL) + g_key_file_set_string(keyfile, group_name, + WIFI_CONFIG_EAP_CLIENTCERT, conf->eap_config->client_cert); + + if (conf->eap_config->private_key != NULL) + g_key_file_set_string(keyfile, group_name, + WIFI_CONFIG_EAP_PRIVATEKEY, conf->eap_config->private_key); + + if (conf->eap_config->identity != NULL) + g_key_file_set_string(keyfile, group_name, + WIFI_CONFIG_EAP_IDENTITY, conf->eap_config->identity); + + if (conf->eap_config->eap_type != NULL) + g_key_file_set_string(keyfile, group_name, + WIFI_CONFIG_EAP_TYPE, conf->eap_config->eap_type); + + if (conf->eap_config->eap_auth_type != NULL) + g_key_file_set_string(keyfile, group_name, + WIFI_CONFIG_EAP_AUTH_TYPE, conf->eap_config->eap_auth_type); + + if (conf->eap_config->subject_match != NULL) + g_key_file_set_string(keyfile, group_name, + WIFI_CONFIG_EAP_SUBJECT_MATCH, conf->eap_config->subject_match); + ret = _save_configuration(config_id, keyfile); if (ret == TRUE) { - SLOG(LOG_INFO, "MDM_LOG_USER", "Object=wifi-profile, AccessType=Create, Result=Succeed"); + INFO("Success to save eap configuration [%s]", config_id); wifi_complete_save_eap_configuration(wifi, context); } else { - SLOG(LOG_INFO, "MDM_LOG_USER", "Object=wifi-profile, AccessType=Create, Result=Failed"); + INFO("Fail to save eap configuration [%s]", config_id); netconfig_error_dbus_method_return(context, NETCONFIG_ERROR_INTERNAL, "FailSaveEapConfiguration"); }