aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/charon/plugins/dbus/nm_applet_auth.c11
-rw-r--r--src/charon/plugins/dbus/nm_applet_gui.c195
-rw-r--r--src/charon/plugins/dbus/nm_applet_gui.xml38
3 files changed, 244 insertions, 0 deletions
diff --git a/src/charon/plugins/dbus/nm_applet_auth.c b/src/charon/plugins/dbus/nm_applet_auth.c
new file mode 100644
index 000000000..f48ee1ba3
--- /dev/null
+++ b/src/charon/plugins/dbus/nm_applet_auth.c
@@ -0,0 +1,11 @@
+#include <stdio.h>
+
+
+int main()
+{
+ char buf[1];
+ printf("PASSWORDL\n");
+ printf ("\n\n");
+ //fread (buf, sizeof (char), sizeof (buf), stdin);
+ return 0;
+}
diff --git a/src/charon/plugins/dbus/nm_applet_gui.c b/src/charon/plugins/dbus/nm_applet_gui.c
new file mode 100644
index 000000000..7a35ab696
--- /dev/null
+++ b/src/charon/plugins/dbus/nm_applet_gui.c
@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 2007 Martin Willi
+ * Hochschule fuer Technik Rapperswil
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * $Id$
+ */
+
+#include <glade/glade.h>
+
+#define NM_VPN_API_SUBJECT_TO_CHANGE
+#include <nm-vpn-ui-interface.h>
+
+
+typedef struct private_nm_applet_gui_t private_nm_applet_gui_t;
+
+/**
+ * Private data of an nm_applet_gui_t object.
+ */
+struct private_nm_applet_gui_t {
+
+ /**
+ * Implements NetworkManagerVpnUI interface.
+ */
+ NetworkManagerVpnUI public;
+
+ /**
+ * callback registered by NM to update validity
+ */
+ NetworkManagerVpnUIDialogValidityCallback callback;
+
+ /**
+ * loaded Glade XML interface description
+ */
+ GladeXML *xml;
+
+ /**
+ * root widget to return to druid
+ */
+ GtkWidget *widget;
+
+ /**
+ * name of the connection
+ */
+ GtkEntry *name;
+};
+
+static const char *get_display_name(private_nm_applet_gui_t *this)
+{
+ return "strongSwan (IPsec/IKEv2)";
+}
+
+static const char *get_service_name(private_nm_applet_gui_t *this)
+{
+ return "org.freedesktop.NetworkManager.strongswan";
+}
+
+static GtkWidget *get_widget(private_nm_applet_gui_t *this, GSList *properties,
+ GSList *routes, const char *connection_name)
+{
+ GSList *i;
+
+ gtk_entry_set_text(this->name, "");
+ /*gtk_entry_set_text(this->gateway, "");*/
+
+ if (connection_name)
+ {
+ gtk_entry_set_text(this->name, connection_name);
+ }
+
+ while (properties)
+ {
+ const char *key;
+ const char *value;
+
+ key = properties->data;
+ properties = g_slist_next(properties);
+ if (properties)
+ {
+ value = properties->data;
+ /*
+ if (strcmp(key, "gateway") == 0)
+ {
+ gtk_entry_set_text(this->gateway, value);
+ }*/
+ properties = g_slist_next(properties);
+ }
+ }
+
+ return this->widget;
+}
+
+static GSList *get_properties(private_nm_applet_gui_t *this)
+{
+ GSList *props = NULL;
+
+ /*props = g_slist_append(props, g_strdup("gateway"));
+ props = g_slist_append(props, g_strdup(gtk_entry_get_text(this->gateway)));*/
+
+ return props;
+}
+
+static GSList *get_routes(private_nm_applet_gui_t *this)
+{
+ return NULL;
+}
+
+static char *get_connection_name(private_nm_applet_gui_t *this)
+{
+ const char *name;
+
+ name = gtk_entry_get_text(this->name);
+ if (name != NULL)
+ {
+ return g_strdup(name);
+ }
+ return NULL;
+}
+
+static gboolean is_valid(private_nm_applet_gui_t *this)
+{
+ return TRUE;
+}
+
+static void set_validity_changed_callback(private_nm_applet_gui_t *this,
+ NetworkManagerVpnUIDialogValidityCallback callback,
+ gpointer user_data)
+{
+ this->callback = callback;
+}
+
+static void get_confirmation_details(private_nm_applet_gui_t *this, gchar **retval)
+{
+ *retval = g_strdup_printf("connection %s\n", gtk_entry_get_text(this->name));
+}
+
+static gboolean can_export(private_nm_applet_gui_t *this)
+{
+ return FALSE;
+}
+
+static gboolean import_file (private_nm_applet_gui_t *this, const char *path)
+{
+ return FALSE;
+}
+
+static gboolean export(private_nm_applet_gui_t *this, GSList *properties,
+ GSList *routes, const char *connection_name)
+{
+ return FALSE;
+}
+
+NetworkManagerVpnUI* nm_vpn_properties_factory(void)
+{
+ private_nm_applet_gui_t *this = g_new0(private_nm_applet_gui_t, 1);
+
+ this->public.get_display_name = (const char *(*)(NetworkManagerVpnUI *))get_display_name;
+ this->public.get_service_name = (const char *(*) (NetworkManagerVpnUI *))get_service_name;
+ this->public.get_widget = (GtkWidget *(*) (NetworkManagerVpnUI *self, GSList *, GSList *, const char *))get_widget;
+ this->public.get_connection_name = (char *(*) (NetworkManagerVpnUI *))get_connection_name;
+ this->public.get_properties = (GSList *(*) (NetworkManagerVpnUI *))get_properties;
+ this->public.get_routes = (GSList *(*) (NetworkManagerVpnUI *))get_routes;
+ this->public.set_validity_changed_callback = (void (*) (NetworkManagerVpnUI *, NetworkManagerVpnUIDialogValidityCallback, gpointer))set_validity_changed_callback;
+ this->public.is_valid = (gboolean (*) (NetworkManagerVpnUI *))is_valid;
+ this->public.get_confirmation_details = (void (*)(NetworkManagerVpnUI *, gchar **))get_confirmation_details;
+ this->public.can_export = (gboolean (*) (NetworkManagerVpnUI *))can_export;
+ this->public.import_file = (gboolean (*) (NetworkManagerVpnUI *, const char *))import_file;
+ this->public.export = (gboolean (*) (NetworkManagerVpnUI *, GSList *, GSList *, const char *))export;
+ this->public.data = NULL;
+
+ this->callback = NULL;
+ this->xml = glade_xml_new("/home/martin/strongswan/trunk/src/networkmanager/nm_applet_gui.xml", NULL, NULL);
+
+ if (this->xml != NULL)
+ {
+ this->widget = glade_xml_get_widget(this->xml, "main");
+ this->name = GTK_ENTRY(glade_xml_get_widget(this->xml, "name"));
+
+ if (this->widget && this->name)
+ {
+ return &this->public;
+ }
+ }
+ g_free(this);
+ return NULL;
+}
diff --git a/src/charon/plugins/dbus/nm_applet_gui.xml b/src/charon/plugins/dbus/nm_applet_gui.xml
new file mode 100644
index 000000000..9eb89c262
--- /dev/null
+++ b/src/charon/plugins/dbus/nm_applet_gui.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<!--Generated with glade3 3.2.0 on Mon Apr 30 15:31:54 2007 by martin@martin-->
+<glade-interface>
+ <widget class="GtkWindow" id="window1">
+ <child>
+ <widget class="GtkTable" id="main">
+ <property name="visible">True</property>
+ <property name="n_rows">1</property>
+ <property name="n_columns">2</property>
+ <child>
+ <widget class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Connection _name</property>
+ <property name="use_underline">True</property>
+ </widget>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkEntry" id="name">
+ <property name="visible">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ <property name="x_padding">5</property>
+ <property name="y_padding">5</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+</glade-interface>