Update settings when device information in device_list is changed
[platform/upstream/connman.git] / vpn / main.c
old mode 100644 (file)
new mode 100755 (executable)
index 8fd830c..ae9c945
@@ -2,7 +2,7 @@
  *
  *  ConnMan VPN daemon
  *
- *  Copyright (C) 2012  Intel Corporation. All rights reserved.
+ *  Copyright (C) 2012-2013  Intel Corporation. All rights reserved.
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License version 2 as
@@ -45,6 +45,7 @@
 #define CONFIGMAINFILE CONFIGDIR "/connman-vpn.conf"
 
 #define DEFAULT_INPUT_REQUEST_TIMEOUT 300 * 1000
+#define DEFAULT_BROWSER_LAUNCH_TIMEOUT 300 * 1000
 
 static GMainLoop *main_loop = NULL;
 
@@ -52,8 +53,10 @@ static unsigned int __terminated = 0;
 
 static struct {
        unsigned int timeout_inputreq;
+       unsigned int timeout_browserlaunch;
 } connman_vpn_settings  = {
        .timeout_inputreq = DEFAULT_INPUT_REQUEST_TIMEOUT,
+       .timeout_browserlaunch = DEFAULT_BROWSER_LAUNCH_TIMEOUT,
 };
 
 static GKeyFile *load_config(const char *file)
@@ -84,14 +87,14 @@ static void parse_config(GKeyFile *config, const char *file)
        GError *error = NULL;
        int timeout;
 
-       if (config == NULL)
+       if (!config)
                return;
 
        DBG("parsing %s", file);
 
        timeout = g_key_file_get_integer(config, "General",
                        "InputRequestTimeout", &error);
-       if (error == NULL && timeout >= 0)
+       if (!error && timeout >= 0)
                connman_vpn_settings.timeout_inputreq = timeout * 1000;
 
        g_clear_error(&error);
@@ -103,7 +106,7 @@ static int config_init(const char *file)
 
        config = load_config(file);
        parse_config(config, file);
-       if (config != NULL)
+       if (config)
                g_key_file_free(config);
 
        return 0;
@@ -188,11 +191,11 @@ static gchar *option_config = NULL;
 static gchar *option_debug = NULL;
 static gchar *option_plugin = NULL;
 static gchar *option_noplugin = NULL;
-static gboolean option_detach = TRUE;
-static gboolean option_version = FALSE;
-static gboolean option_routes = FALSE;
+static bool option_detach = true;
+static bool option_version = false;
+static bool option_routes = false;
 
-static gboolean parse_debug(const char *key, const char *value,
+static bool parse_debug(const char *key, const char *value,
                                        gpointer user_data, GError **error)
 {
        if (value)
@@ -200,7 +203,7 @@ static gboolean parse_debug(const char *key, const char *value,
        else
                option_debug = g_strdup("*");
 
-       return TRUE;
+       return true;
 }
 
 static GOptionEntry options[] = {
@@ -224,13 +227,50 @@ static GOptionEntry options[] = {
        { NULL },
 };
 
+bool connman_setting_get_bool(const char *key)
+{
+       return false;
+}
+
+#if defined TIZEN_EXT
+unsigned int connman_setting_get_uint(const char *key)
+{
+       return 0;
+}
+
+int connman_setting_get_int(const char *key)
+{
+       return 0;
+}
+#endif
+
+char **connman_setting_get_string_list(const char *key)
+{
+       return NULL;
+}
+
+unsigned int *connman_setting_get_uint_list(const char *key)
+{
+       return NULL;
+}
+
 /*
  * This function will be called from generic src/agent.c code so we have
  * to use connman_ prefix instead of vpn_ one.
  */
 unsigned int connman_timeout_input_request(void)
 {
-       return connman_vpn_settings.timeout_inputreq;
+       return __vpn_settings_get_timeout_inputreq();
+}
+
+unsigned int connman_timeout_browser_launch(void)
+{
+       return connman_vpn_settings.timeout_browserlaunch;
+}
+
+const char *connman_option_get_string(const char *key)
+{
+       return NULL;
 }
 
 int main(int argc, char *argv[])
@@ -244,8 +284,8 @@ int main(int argc, char *argv[])
        context = g_option_context_new(NULL);
        g_option_context_add_main_entries(context, options, NULL);
 
-       if (g_option_context_parse(context, &argc, &argv, &error) == FALSE) {
-               if (error != NULL) {
+       if (!g_option_context_parse(context, &argc, &argv, &error)) {
+               if (error) {
                        g_printerr("%s\n", error->message);
                        g_error_free(error);
                } else
@@ -255,30 +295,40 @@ int main(int argc, char *argv[])
 
        g_option_context_free(context);
 
-       if (option_version == TRUE) {
+       if (option_version) {
                printf("%s\n", VERSION);
                exit(0);
        }
 
-       if (option_detach == TRUE) {
+       if (option_detach) {
                if (daemon(0, 0)) {
                        perror("Can't start daemon");
                        exit(1);
                }
        }
 
-       if (mkdir(STATEDIR, S_IRUSR | S_IWUSR | S_IXUSR |
+       if (mkdir(VPN_STATEDIR, S_IRUSR | S_IWUSR | S_IXUSR |
                                S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) < 0) {
                if (errno != EEXIST)
                        perror("Failed to create state directory");
        }
 
+       /*
+        * At some point the VPN stuff is migrated into VPN_STORAGEDIR
+        * and this mkdir() call can be removed.
+        */
        if (mkdir(STORAGEDIR, S_IRUSR | S_IWUSR | S_IXUSR |
                                S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) < 0) {
                if (errno != EEXIST)
                        perror("Failed to create storage directory");
        }
 
+       if (mkdir(VPN_STORAGEDIR, S_IRUSR | S_IWUSR | S_IXUSR |
+                               S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) < 0) {
+               if (errno != EEXIST)
+                       perror("Failed to create VPN storage directory");
+       }
+
        umask(0077);
 
        main_loop = g_main_loop_new(NULL, FALSE);
@@ -288,8 +338,8 @@ int main(int argc, char *argv[])
        dbus_error_init(&err);
 
        conn = g_dbus_setup_bus(DBUS_BUS_SYSTEM, VPN_SERVICE, &err);
-       if (conn == NULL) {
-               if (dbus_error_is_set(&err) == TRUE) {
+       if (!conn) {
+               if (dbus_error_is_set(&err)) {
                        fprintf(stderr, "%s\n", err.message);
                        dbus_error_free(&err);
                } else
@@ -299,14 +349,14 @@ int main(int argc, char *argv[])
 
        g_dbus_set_disconnect_function(conn, disconnect_callback, NULL, NULL);
 
-       __connman_log_init(argv[0], option_debug, option_detach, FALSE,
+       __connman_log_init(argv[0], option_debug, option_detach, false,
                        "Connection Manager VPN daemon", VERSION);
        __connman_dbus_init(conn);
 
-       if (option_config == NULL)
-               config_init(CONFIGMAINFILE);
+       if (!option_config)
+               __vpn_settings_init(CONFIGMAINFILE);
        else
-               config_init(option_config);
+               __vpn_settings_init(option_config);
 
        __connman_inotify_init();
        __connman_agent_init();
@@ -337,7 +387,8 @@ int main(int argc, char *argv[])
        __connman_agent_cleanup();
        __connman_inotify_cleanup();
        __connman_dbus_cleanup();
-       __connman_log_cleanup(FALSE);
+       __connman_log_cleanup(false);
+       __vpn_settings_cleanup();
 
        dbus_connection_unref(conn);