From 670de70d0fae001abb1a97ff62db6ec8b2f2f490 Mon Sep 17 00:00:00 2001 From: Jaehyun Kim Date: Mon, 9 Jan 2023 14:15:50 +0900 Subject: [PATCH] Add dbus method to remove all AP configurations Change-Id: Ia110f13beca17b3f16e4ec8556ec78d6e1ada329 Signed-off-by: Jaehyun Kim --- include/wifi-config.h | 1 + interfaces/netconfig-iface-wifi.xml | 2 + .../etc/dbus-1/system.d/net-config-robot.conf | 1 + resources/etc/dbus-1/system.d/net-config.conf | 1 + src/wifi-config.c | 46 +++++++++++++++++++ src/wifi.c | 2 + 6 files changed, 53 insertions(+) diff --git a/include/wifi-config.h b/include/wifi-config.h index 7760244..4f674f6 100755 --- a/include/wifi-config.h +++ b/include/wifi-config.h @@ -99,6 +99,7 @@ gboolean handle_save_eap_configuration(Wifi *wifi, GDBusMethodInvocation *contex const gchar *ifname, const gchar *config_id, GVariant *configuration); gboolean handle_remove_configuration(Wifi *wifi, GDBusMethodInvocation *context, const gchar *ifname, const gchar *config_id); +gboolean handle_reset_wifi_config(Wifi *wifi, GDBusMethodInvocation *context); gboolean handle_set_config_field(Wifi *wifi, GDBusMethodInvocation *context, const gchar *ifname, const gchar *config_id, const gchar *key, const gchar *value); gboolean handle_get_config_passphrase(Wifi *wifi, GDBusMethodInvocation *context, diff --git a/interfaces/netconfig-iface-wifi.xml b/interfaces/netconfig-iface-wifi.xml index 4095690..ff272d1 100755 --- a/interfaces/netconfig-iface-wifi.xml +++ b/interfaces/netconfig-iface-wifi.xml @@ -135,6 +135,8 @@ + + diff --git a/resources/etc/dbus-1/system.d/net-config-robot.conf b/resources/etc/dbus-1/system.d/net-config-robot.conf index 1f3150e..da297ca 100755 --- a/resources/etc/dbus-1/system.d/net-config-robot.conf +++ b/resources/etc/dbus-1/system.d/net-config-robot.conf @@ -89,6 +89,7 @@ + diff --git a/resources/etc/dbus-1/system.d/net-config.conf b/resources/etc/dbus-1/system.d/net-config.conf index 5730ed9..bb7b99c 100755 --- a/resources/etc/dbus-1/system.d/net-config.conf +++ b/resources/etc/dbus-1/system.d/net-config.conf @@ -91,6 +91,7 @@ + diff --git a/src/wifi-config.c b/src/wifi-config.c index 8600990..737a177 100755 --- a/src/wifi-config.c +++ b/src/wifi-config.c @@ -1844,6 +1844,52 @@ gboolean handle_remove_configuration(Wifi *wifi, GDBusMethodInvocation *context, return TRUE; } +gboolean handle_reset_wifi_config(Wifi *wifi, GDBusMethodInvocation *context) +{ + DIR *dir_ptr = NULL; + struct dirent *file = NULL; + struct stat buf; + char dir_name[512] = { 0, }; + char file_name[1024] = { 0, }; + + g_return_val_if_fail(wifi != NULL, TRUE); + + DBG("Try to remove connman Wi-Fi config files..."); + + if ((dir_ptr = opendir(CONNMAN_STORAGE)) != NULL) { + while ((file = readdir(dir_ptr)) != NULL) { + if (strncmp(file->d_name, ".", 1) == 0 || strncmp(file->d_name, "..", 2) == 0 || + strncmp(file->d_name, WIFI_CONFIG_PREFIX, strlen(WIFI_CONFIG_PREFIX)) != 0) { + continue; + } + + snprintf(dir_name, 512, CONNMAN_STORAGE"/%s", file->d_name); + + if (lstat(dir_name, &buf) == -1) + continue; + + DBG("Remove wifi config: %s", file->d_name); + + if (S_ISDIR(buf.st_mode)) { + memset(file_name, 0, 1024); + snprintf(file_name, 1024, "%s/data", dir_name); + unlink(file_name); + memset(file_name, 0, 1024); + snprintf(file_name, 1024, "%s/settings", dir_name); + unlink(file_name); + } + rmdir(dir_name); + } + + closedir(dir_ptr); + sync(); + } + + wifi_complete_reset_wifi_config(wifi, context); + + return TRUE; +} + /* config field key / value */ /* * [wifi_macaddress_config_id] diff --git a/src/wifi.c b/src/wifi.c index 9486422..c58a448 100755 --- a/src/wifi.c +++ b/src/wifi.c @@ -278,6 +278,8 @@ void wifi_object_create_and_init(void) G_CALLBACK(handle_save_configuration), NULL); g_signal_connect(wifi_object, "handle-remove-configuration", G_CALLBACK(handle_remove_configuration), NULL); + g_signal_connect(wifi_object, "handle-reset-wifi-config", + G_CALLBACK(handle_reset_wifi_config), NULL); g_signal_connect(wifi_object, "handle-get-config-ids", G_CALLBACK(handle_get_config_ids), NULL); g_signal_connect(wifi_object, "handle-load-configuration", -- 2.34.1