diff options
author | Luiz Augusto von Dentz <luiz.dentz@openbossa.org> | 2007-09-28 13:15:53 +0000 |
---|---|---|
committer | Luiz Augusto von Dentz <luiz.dentz@openbossa.org> | 2007-09-28 13:15:53 +0000 |
commit | 2033d8e42102bb6513e5ea71e147a8a7dcce1420 (patch) | |
tree | 5fe2c7c8bbc02c38093afcd349a94d641f0e2230 /network/main.c | |
parent | 2fb6bb97176c9e922c14584da550f3edd49f0986 (diff) |
Add support for config file.
Diffstat (limited to 'network/main.c')
-rw-r--r-- | network/main.c | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/network/main.c b/network/main.c index 2d9d44b6..5d1f5013 100644 --- a/network/main.c +++ b/network/main.c @@ -41,13 +41,128 @@ #include "manager.h" #include "hal.h" +#define IFACE_PREFIX "bnep%d" +#define PANU_IFACE "pan0" +#define GN_IFACE "pan1" +#define NAP_IFACE "pan2" + static GMainLoop *main_loop; +static struct network_conf conf = { + .connection_enabled = TRUE, + .server_enabled = TRUE, + .iface_prefix = NULL, + .conn.panu_script = NULL, + .conn.gn_script = NULL, + .conn.nap_script = NULL, + .server.panu_iface = NULL, + .server.gn_iface = NULL, + .server.nap_iface = NULL, + .server.disable_security = FALSE +}; + static void sig_term(int sig) { g_main_loop_quit(main_loop); } +static void read_config(const char *file) +{ + GKeyFile *keyfile; + GError *err = NULL; + + keyfile = g_key_file_new(); + + if (!g_key_file_load_from_file(keyfile, file, 0, &err)) { + error("Parsing %s failed: %s", file, err->message); + g_error_free(err); + g_key_file_free(keyfile); + return; + } + + conf.iface_prefix = g_key_file_get_string(keyfile, "Connection", + "InterfacePrefix", &err); + if (!conf.iface_prefix) + conf.iface_prefix = g_strdup(IFACE_PREFIX); + if (err) { + debug("%s: %s", file, err->message); + g_error_free(err); + err = NULL; + } + + conf.conn.panu_script = g_key_file_get_string(keyfile, "Connection", + "PANUScript", &err); + if (err) { + debug("%s: %s", file, err->message); + g_error_free(err); + err = NULL; + } + + conf.conn.gn_script = g_key_file_get_string(keyfile, "Connection", + "GNScript", &err); + if (err) { + debug("%s: %s", file, err->message); + g_error_free(err); + err = NULL; + } + + conf.conn.nap_script = g_key_file_get_string(keyfile, "Connection", + "NAPScript", &err); + if (err) { + debug("%s: %s", file, err->message); + g_error_free(err); + err = NULL; + } + + conf.server.panu_iface = g_key_file_get_string(keyfile, "Server", + "PANUInterface", &err); + if (!conf.server.panu_iface) + conf.server.panu_iface = g_strdup(PANU_IFACE); + if (err) { + debug("%s: %s", file, err->message); + g_error_free(err); + err = NULL; + } + + conf.server.gn_iface = g_key_file_get_string(keyfile, "Server", + "GNInterface", &err); + if (!conf.server.gn_iface) + conf.server.gn_iface = g_strdup(GN_IFACE); + if (err) { + debug("%s: %s", file, err->message); + g_error_free(err); + err = NULL; + } + + conf.server.nap_iface = g_key_file_get_string(keyfile, "Server", + "NAPInterface", &err); + if (!conf.server.nap_iface) + conf.server.nap_iface = g_strdup(NAP_IFACE); + if (err) { + debug("%s: %s", file, err->message); + g_error_free(err); + err = NULL; + } + + conf.server.disable_security = g_key_file_get_boolean(keyfile, "Server", + "DisableSecurity", &err); + if (err) { + debug("%s: %s", file, err->message); + g_error_free(err); + err = NULL; + } + + debug("Config options: InterfacePrefix=%s, PANUScript=%s, GNScript=%s, " + "NAPScript=%s, PANUInterface=%s, GNInterface=%s, " + "NAPInterface=%s, DisableSecurity=%s", conf.iface_prefix, + conf.conn.panu_script, conf.conn.gn_script, conf.conn.nap_script, + conf.server.panu_iface, conf.server.gn_iface, + conf.server.nap_iface, + conf.server.disable_security ? "true" : "false"); + + g_key_file_free(keyfile); +} + int main(int argc, char *argv[]) { DBusConnection *conn; @@ -67,6 +182,8 @@ int main(int argc, char *argv[]) enable_debug(); + read_config(CONFIGDIR "/network.conf"); + main_loop = g_main_loop_new(NULL, FALSE); conn = dbus_bus_system_setup_with_main_loop(NULL, NULL, NULL); |