diff options
Diffstat (limited to 'client/agent.c')
-rw-r--r-- | client/agent.c | 79 |
1 files changed, 43 insertions, 36 deletions
diff --git a/client/agent.c b/client/agent.c index 12b0a984..baa0a87b 100644 --- a/client/agent.c +++ b/client/agent.c @@ -95,6 +95,11 @@ static struct agent_data agent_request = { static struct agent_input_data vpnagent_input_handler[] = { { "OpenConnect.Cookie", false, "OpenConnect Cookie? ", request_input_string_return }, + { "OpenConnect.ServerCert", false, + "OpenConnect server certificate hash? ", + request_input_string_return }, + { "OpenConnect.VPNHost", false, "OpenConnect VPN server? ", + request_input_string_return }, { "Username", false, "VPN username? ", request_input_string_return }, { "Password", false, "VPN password? ", request_input_string_return }, { }, @@ -109,7 +114,7 @@ static int confirm_input(char *input) { int i; - if (input == NULL) + if (!input) return -1; for (i = 0; input[i] != '\0'; i++) @@ -130,7 +135,7 @@ static int confirm_input(char *input) static char *strip_path(char *path) { char *name = strrchr(path, '/'); - if (name != NULL) + if (name) name++; else name = path; @@ -142,7 +147,7 @@ static char *agent_path(void) { static char *path = NULL; - if (path == NULL) + if (!path) path = g_strdup_printf("/net/connman/connmanctl%d", getpid()); return path; @@ -150,12 +155,12 @@ static char *agent_path(void) static void pending_message_remove(struct agent_data *request) { - if (request->message != NULL) { + if (request->message) { dbus_message_unref(request->message); request->message = NULL; } - if (request->reply != NULL) { + if (request->reply) { dbus_message_unref(request->reply); request->reply = NULL; } @@ -178,12 +183,12 @@ static void pending_command_complete(char *message) else __connmanctl_agent_mode("", NULL, NULL); - if (agent_request.message != NULL) + if (agent_request.message) next_request = &agent_request; - else if (vpn_agent_request.message != NULL) + else if (vpn_agent_request.message) next_request = &vpn_agent_request; - if (next_request == NULL) + if (!next_request) return; pending_message = next_request->message; @@ -199,8 +204,8 @@ static void pending_command_complete(char *message) static bool handle_message(DBusMessage *message, struct agent_data *request, GDBusMethodFunction function) { - if (agent_request.pending_function == NULL && - vpn_agent_request.pending_function == NULL) + if (!agent_request.pending_function && + !vpn_agent_request.pending_function) return true; request->message = dbus_message_ref(message); @@ -367,9 +372,9 @@ static void request_input_next(struct agent_data *request) { int i; - for (i = 0; request->input[i].attribute != NULL; i++) { + for (i = 0; request->input[i].attribute; i++) { if (request->input[i].requested == true) { - if(request->input[i].func != NULL) + if (request->input[i].func) __connmanctl_agent_mode(request->input[i].prompt, request->input[i].func, request); @@ -403,7 +408,7 @@ static void request_input_ssid_return(char *input, struct agent_data *request = user_data; int len = 0; - if (input != NULL) + if (input) len = strlen(input); if (len > 0 && len <= 32) { @@ -422,7 +427,7 @@ static void request_input_passphrase_return(char *input, void *user_data) /* TBD passphrase length checking */ - if (input != NULL) + if (input) len = strlen(input); if (len == 0 && request->input[WPS].requested == false) @@ -445,7 +450,7 @@ static void request_input_string_return(char *input, void *user_data) struct agent_data *request = user_data; int i; - for (i = 0; request->input[i].attribute != NULL; i++) { + for (i = 0; request->input[i].attribute; i++) { if (request->input[i].requested == true) { request_input_append(request, request->input[i].attribute, input); @@ -464,7 +469,7 @@ static DBusMessage *agent_request_input(DBusConnection *connection, DBusMessageIter iter, dict, entry, variant; char *service, *str, *field; DBusMessageIter dict_entry, field_entry, field_value; - char *argument, *value, *attr_type; + char *argument, *value, *attr_type = NULL; int i; @@ -519,7 +524,7 @@ static DBusMessage *agent_request_input(DBusConnection *connection, dbus_message_iter_next(&dict_entry); } - for (i = 0; request->input[i].attribute != NULL; i++) { + for (i = 0; request->input[i].attribute; i++) { if (strcmp(field, request->input[i].attribute) == 0) { request->input[i].requested = true; break; @@ -570,7 +575,7 @@ static int agent_register_return(DBusMessageIter *iter, const char *error, { DBusConnection *connection = user_data; - if (error != NULL) { + if (error) { g_dbus_unregister_interface(connection, agent_path(), AGENT_INTERFACE); fprintf(stderr, "Error registering Agent: %s\n", error); @@ -583,6 +588,13 @@ static int agent_register_return(DBusMessageIter *iter, const char *error, return -EINPROGRESS; } +static void append_path(DBusMessageIter *iter, void *user_data) +{ + const char *path = user_data; + + dbus_message_iter_append_basic(iter, DBUS_TYPE_OBJECT_PATH, &path); +} + int __connmanctl_agent_register(DBusConnection *connection) { char *path = agent_path(); @@ -595,18 +607,16 @@ int __connmanctl_agent_register(DBusConnection *connection) agent_connection = connection; - if (g_dbus_register_interface(connection, path, + if (!g_dbus_register_interface(connection, path, AGENT_INTERFACE, agent_methods, - NULL, NULL, &agent_request, - NULL) == FALSE) { + NULL, NULL, &agent_request, NULL)) { fprintf(stderr, "Error: Failed to register Agent callbacks\n"); return 0; } result = __connmanctl_dbus_method_call(connection, CONNMAN_SERVICE, CONNMAN_PATH, "net.connman.Manager", "RegisterAgent", - agent_register_return, connection, - DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_INVALID); + agent_register_return, connection, append_path, path); if (result != -EINPROGRESS) { g_dbus_unregister_interface(connection, agent_path(), @@ -621,7 +631,7 @@ int __connmanctl_agent_register(DBusConnection *connection) static int agent_unregister_return(DBusMessageIter *iter, const char *error, void *user_data) { - if (error != NULL) { + if (error) { fprintf(stderr, "Error unregistering Agent: %s\n", error); return 0; } @@ -646,8 +656,7 @@ int __connmanctl_agent_unregister(DBusConnection *connection) result = __connmanctl_dbus_method_call(connection, CONNMAN_SERVICE, CONNMAN_PATH, "net.connman.Manager", "UnregisterAgent", - agent_unregister_return, NULL, - DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_INVALID); + agent_unregister_return, NULL, append_path, path); if (result != -EINPROGRESS) fprintf(stderr, "Error: Failed to unregister Agent\n"); @@ -675,7 +684,7 @@ static int vpn_agent_register_return(DBusMessageIter *iter, const char *error, { DBusConnection *connection = user_data; - if (error != NULL) { + if (error) { g_dbus_unregister_interface(connection, agent_path(), VPN_AGENT_INTERFACE); fprintf(stderr, "Error registering VPN Agent: %s\n", error); @@ -700,10 +709,9 @@ int __connmanctl_vpn_agent_register(DBusConnection *connection) agent_connection = connection; - if (g_dbus_register_interface(connection, path, - VPN_AGENT_INTERFACE, vpn_agent_methods, - NULL, NULL, &vpn_agent_request, - NULL) == FALSE) { + if (!g_dbus_register_interface(connection, path, + VPN_AGENT_INTERFACE, vpn_agent_methods, + NULL, NULL, &vpn_agent_request, NULL)) { fprintf(stderr, "Error: Failed to register VPN Agent " "callbacks\n"); return 0; @@ -711,8 +719,8 @@ int __connmanctl_vpn_agent_register(DBusConnection *connection) result = __connmanctl_dbus_method_call(connection, VPN_SERVICE, VPN_PATH, "net.connman.vpn.Manager", "RegisterAgent", - vpn_agent_register_return, connection, - DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_INVALID); + vpn_agent_register_return, connection, append_path, + path); if (result != -EINPROGRESS) { g_dbus_unregister_interface(connection, agent_path(), @@ -727,7 +735,7 @@ int __connmanctl_vpn_agent_register(DBusConnection *connection) static int vpn_agent_unregister_return(DBusMessageIter *iter, const char *error, void *user_data) { - if (error != NULL) { + if (error) { fprintf(stderr, "Error unregistering VPN Agent: %s\n", error); return 0; } @@ -753,8 +761,7 @@ int __connmanctl_vpn_agent_unregister(DBusConnection *connection) result = __connmanctl_dbus_method_call(connection, VPN_SERVICE, VPN_PATH, "net.connman.vpn.Manager", "UnregisterAgent", - vpn_agent_unregister_return, NULL, - DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_INVALID); + vpn_agent_unregister_return, NULL, append_path, path); if (result != -EINPROGRESS) fprintf(stderr, "Error: Failed to unregister VPN Agent\n"); |