From 2f533be2d1f35f2053506e5f5b45a427a01569b0 Mon Sep 17 00:00:00 2001 From: Milind Murhekar Date: Wed, 28 Feb 2018 17:11:26 +0530 Subject: [PATCH] Add login support for captive/wispr portal Description: This patch sets the captive/wispr portal login credentials via connman-agent. Change-Id: I518099ba6b86c6d0d3c2e539a10d44fd1b071d09 Signed-off-by: Milind Murhekar --- packaging/net-config.spec | 2 +- src/wifi-agent.c | 46 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/packaging/net-config.spec b/packaging/net-config.spec index 7734ddd..a8aa2d3 100755 --- a/packaging/net-config.spec +++ b/packaging/net-config.spec @@ -1,6 +1,6 @@ Name: net-config Summary: TIZEN Network Configuration service -Version: 1.1.126 +Version: 1.1.127 Release: 3 Group: System/Network License: Apache-2.0 diff --git a/src/wifi-agent.c b/src/wifi-agent.c index b31bc21..8d4aa5e 100755 --- a/src/wifi-agent.c +++ b/src/wifi-agent.c @@ -41,6 +41,10 @@ #define NETCONFIG_AGENT_FIELD_WPS "WPS" #define NETCONFIG_AGENT_FIELD_WPS_PBC "WPS_PBC" #define NETCONFIG_AGENT_FIELD_WPS_PIN "WPS_PIN" +#if defined TIZEN_CAPTIVE_PORTAL +#define NETCONFIG_AGENT_FIELD_USERNAME "Username" +#define NETCONFIG_AGENT_FIELD_PASSWORD "Password" +#endif #define NETCONFIG_AGENT_ERR_CONNECT_FAILED "connect-failed" @@ -50,6 +54,10 @@ struct netconfig_wifi_agent { char *identity; char *passphrase; char *wps_pin; +#if defined TIZEN_CAPTIVE_PORTAL + char *username; + char *password; +#endif gboolean wps_pbc; }; @@ -63,12 +71,20 @@ static void __netconfig_agent_clear_fields(void) g_free(agent.identity); g_free(agent.passphrase); g_free(agent.wps_pin); +#if defined TIZEN_CAPTIVE_PORTAL + g_free(agent.username); + g_free(agent.password); +#endif agent.ssid = NULL; agent.name = NULL; agent.identity = NULL; agent.passphrase = NULL; agent.wps_pin = NULL; +#if defined TIZEN_CAPTIVE_PORTAL + agent.username = NULL; + agent.password = NULL; +#endif agent.wps_pbc = FALSE; } @@ -264,6 +280,22 @@ gboolean handle_set_field(NetConnmanAgent *connman_agent, DBG("Field [%s] - [%s]", field, agent.identity); } +#if defined TIZEN_CAPTIVE_PORTAL + } else if (g_strcmp0(field, NETCONFIG_AGENT_FIELD_USERNAME) == 0) { + if (g_variant_is_of_type(value, G_VARIANT_TYPE_STRING)) { + agent.username = g_strdup(g_variant_get_string(value, NULL)); + updated = TRUE; + + DBG("Field [%s] - [%s]", field, agent.username); + } + } else if (g_strcmp0(field, NETCONFIG_AGENT_FIELD_PASSWORD) == 0) { + if (g_variant_is_of_type(value, G_VARIANT_TYPE_STRING)) { + agent.password = g_strdup(g_variant_get_string(value, NULL)); + updated = TRUE; + + DBG("Field [%s] - [%s]", field, agent.password); + } +#endif } } @@ -372,6 +404,20 @@ gboolean handle_request_input(NetConnmanAgent *connman_agent, updated = TRUE; DBG("Settings [%s] - [%s]", field, agent.identity); +#if defined TIZEN_CAPTIVE_PORTAL + } else if (g_strcmp0(field, NETCONFIG_AGENT_FIELD_USERNAME) == 0 && + agent.username != NULL) { + g_variant_builder_add(builder, "{sv}", NETCONFIG_AGENT_FIELD_USERNAME, g_variant_new_string(agent.username)); + + updated = TRUE; + DBG("Settings [%s] - [%s]", field, agent.username); + } else if (g_strcmp0(field, NETCONFIG_AGENT_FIELD_PASSWORD) == 0 && + agent.password != NULL) { + g_variant_builder_add(builder, "{sv}", NETCONFIG_AGENT_FIELD_PASSWORD, g_variant_new_string(agent.password)); + + updated = TRUE; + DBG("Settings [%s] - [%s]", field, agent.password); +#endif } } -- 2.34.1