#define NET_DNS_ADDR_MAX 2
+#define MAX_WIFI_PROFILES 200
+
struct wifi_eap_config {
gchar *anonymous_identity;
gchar *ca_cert;
return TRUE;
}
-static gboolean __get_group_name(const gchar *prefix, const gchar *config_id, gchar **group_name)
+gboolean wifi_config_get_group_name(const gchar *prefix, const gchar *config_id, gchar **group_name)
{
gchar *mac_address = NULL;
gchar *g_name = NULL;
ERR("Cannot remove [%s]", pathname);
return FALSE;
}
-
return TRUE;
}
gboolean hidden = FALSE;
gboolean ret = FALSE;
- ret = __get_group_name(WIFI_CONFIG_PREFIX, config_id, &group_name);
+ ret = wifi_config_get_group_name(WIFI_CONFIG_PREFIX, config_id, &group_name);
if (ret != TRUE) {
ERR("Fail to get_wifi_config_group_name");
return FALSE;
return TRUE;
}
-static gboolean _save_configuration(const gchar *config_id, GKeyFile *keyfile)
+gboolean wifi_config_save_configuration(const gchar *config_id, GKeyFile *keyfile)
{
gchar *dir;
gchar *path;
gchar *group_name;
gboolean ret = FALSE;
- ret = __get_group_name(WIFI_CONFIG_PREFIX, config_id, &group_name);
+ ret = wifi_config_get_group_name(WIFI_CONFIG_PREFIX, config_id, &group_name);
if (ret != TRUE) {
ERR("Fail to get_wifi_config_group_name");
return FALSE;
gchar *dir;
gchar *group_name;
- ret = __get_group_name(WIFI_CONFIG_PREFIX, config_id, &group_name);
+ ret = wifi_config_get_group_name(WIFI_CONFIG_PREFIX, config_id, &group_name);
if (ret != TRUE) {
ERR("Fail to get_wifi_config_group_name");
return FALSE;
GKeyFile *keyfile;
gchar *group_name;
- ret = __get_group_name(WIFI_CONFIG_PREFIX, config_id, &group_name);
+ ret = wifi_config_get_group_name(WIFI_CONFIG_PREFIX, config_id, &group_name);
if (ret != TRUE) {
ERR("Fail to get_wifi_config_group_name");
return FALSE;
ret = FALSE;
}
- _save_configuration(config_id, keyfile);
+ wifi_config_save_configuration(config_id, keyfile);
g_key_file_free(keyfile);
g_free(group_name);
gboolean hidden = FALSE;
gboolean ret = FALSE;
- ret = __get_group_name(WIFI_CONFIG_PREFIX, config_id, &group_name);
+ ret = wifi_config_get_group_name(WIFI_CONFIG_PREFIX, config_id, &group_name);
if (ret != TRUE) {
ERR("Fail to get_wifi_config_group_name");
return FALSE;
conf->favorite = TRUE;
conf->autoconnect = TRUE;
- ret = __get_group_name(WIFI_CONFIG_PREFIX, config_id, &group_name);
+ ret = wifi_config_get_group_name(WIFI_CONFIG_PREFIX, config_id, &group_name);
if (ret != TRUE) {
__free_wifi_configuration(conf);
ERR("Fail to get_wifi_config_group_name");
g_key_file_set_boolean(keyfile, group_name, WIFI_CONFIG_FAVORITE, conf->favorite);
g_key_file_set_boolean(keyfile, group_name, WIFI_CONFIG_AUTOCONNECT, conf->autoconnect);
+#if GLIB_CHECK_VERSION(2,62,0)
+ gint64 real_time = 0;
+ GDateTime *dt_real_time = NULL;
+
+ real_time = g_get_real_time();
+ dt_real_time = g_date_time_new_from_unix_utc(real_time);
+ if (dt_real_time) {
+ gchar *str = g_date_time_format_iso8601(dt_real_time);
+ g_date_time_unref(dt_real_time);
+ if (str) {
+ g_key_file_set_string(keyfile, group_name,
+ WIFI_CONFIG_MODIFIED, str);
+ g_free(str);
+ }
+ }
+#else /* GLIB_CHECK_VERSION(2,62,0) */
+ GTimeVal modified;
+ g_get_current_time(&modified);
+ gchar *str = g_time_val_to_iso8601(&modified);
+ if (str) {
+ g_key_file_set_string(keyfile, group_name,
+ WIFI_CONFIG_MODIFIED, str);
+ g_free(str);
+ }
+#endif /* GLIB_CHECK_VERSION(2,62,0) */
+
/* Optional field */
if (conf->proxy_address != NULL) {
g_key_file_set_string(keyfile, group_name, WIFI_CONFIG_PROXY_METHOD, "manual");
i += 1;
}
- ret = _save_configuration(config_id, keyfile);
+ ret = wifi_config_save_configuration(config_id, keyfile);
if (ret == TRUE) {
INFO("Success to save configuration [%s]", config_id);
wifi_complete_save_configuration(wifi, context);
+ char *file;
+ if (get_files_count(CONNMAN_STORAGE) > MAX_WIFI_PROFILES) {
+ file = get_least_recently_profile(CONNMAN_STORAGE);
+ if (file) {
+ gchar *profileName = g_strdup_printf(CONNMAN_STORAGE "/%s", file);
+ INFO("least modified file: %s", profileName);
+ if (profileName) {
+ if (__remove_configuration(profileName) != TRUE)
+ DBG("Failed to remove profile: [%s]", profileName);
+ } else
+ ERR("Profile: [%s] does not exist", file);
+
+ g_free(profileName);
+ }
+ }
} else {
INFO("Fail to save configuration [%s]", config_id);
netconfig_error_dbus_method_return(context, NETCONFIG_ERROR_INTERNAL, "FailSaveConfiguration");
conf->favorite = TRUE;
conf->autoconnect = TRUE;
- ret = __get_group_name(WIFI_CONFIG_PREFIX, config_id, &group_name);
+ ret = wifi_config_get_group_name(WIFI_CONFIG_PREFIX, config_id, &group_name);
if (ret != TRUE) {
__free_wifi_configuration(conf);
ERR("Fail to get_wifi_config_group_name");
g_key_file_set_string(keyfile, group_name,
WIFI_CONFIG_EAP_SUBJECT_MATCH, conf->eap_config->subject_match);
- ret = _save_configuration(config_id, keyfile);
+ ret = wifi_config_save_configuration(config_id, keyfile);
if (ret == TRUE) {
INFO("Success to save eap configuration [%s]", config_id);
wifi_complete_save_eap_configuration(wifi, context);