[krb5-auth-dialog] Invoke Kerberos related initialization from applet
- From: Guido GÃnther <guidog src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [krb5-auth-dialog] Invoke Kerberos related initialization from applet
- Date: Mon, 12 Sep 2011 10:17:41 +0000 (UTC)
commit 819f5ea45868fad8ed9ae47d2c99862520846eda
Author: Guido GÃnther <agx sigxcpu org>
Date: Sun Sep 11 13:35:30 2011 +0200
Invoke Kerberos related initialization from applet
instead from within main.
src/ka-applet.c | 23 +++++++++++++++++++++++
src/ka-dialog.c | 43 +++++++++++++++++++++++++------------------
src/ka-dialog.h | 3 +++
3 files changed, 51 insertions(+), 18 deletions(-)
---
diff --git a/src/ka-applet.c b/src/ka-applet.c
index 5e2a0a5..7bc0f0b 100644
--- a/src/ka-applet.c
+++ b/src/ka-applet.c
@@ -23,6 +23,7 @@
#include <glib/gi18n.h>
#include "ka-applet-priv.h"
+#include "ka-dbus.h"
#include "ka-dialog.h"
#include "ka-gconf-tools.h"
#include "ka-gconf.h"
@@ -102,6 +103,22 @@ struct _KaAppletPrivate {
static void ka_close_notification (KaApplet *self);
+static void
+ka_applet_activate (GApplication *application G_GNUC_UNUSED)
+{
+}
+
+static void
+ka_applet_startup (GApplication *application)
+{
+ KaApplet *self = KA_APPLET (application);
+
+ if (!ka_dbus_connect (self)) {
+ ka_applet_destroy (self);
+ }
+ ka_kerberos_init (self);
+}
+
static void
ka_applet_set_property (GObject *object,
guint property_id,
@@ -268,9 +285,13 @@ ka_applet_class_init (KaAppletClass *klass)
object_class->finalize = ka_applet_finalize;
g_type_class_add_private (klass, sizeof (KaAppletPrivate));
+ G_APPLICATION_CLASS (klass)->activate = ka_applet_activate;
+ G_APPLICATION_CLASS (klass)->startup = ka_applet_startup;
+
object_class->set_property = ka_applet_set_property;
object_class->get_property = ka_applet_get_property;
+
pspec = g_param_spec_string ("principal",
"Principal",
"Get/Set Kerberos principal",
@@ -930,6 +951,8 @@ ka_applet_destroy (KaApplet* applet)
{
g_object_unref (applet);
gtk_main_quit ();
+ ka_dbus_disconnect ();
+ ka_kerberos_destroy ();
}
diff --git a/src/ka-dialog.c b/src/ka-dialog.c
index 8e042bf..b13656a 100644
--- a/src/ka-dialog.c
+++ b/src/ka-dialog.c
@@ -38,7 +38,6 @@
#include "ka-dialog.h"
#include "ka-applet-priv.h"
#include "ka-pwdialog.h"
-#include "ka-dbus.h"
#include "ka-tools.h"
#include "ka-main-window.h"
@@ -62,6 +61,7 @@ static gboolean canceled;
static gboolean invalid_auth;
static gboolean always_run;
static gboolean is_online = TRUE;
+GFileMonitor *ccache_monitor;
static int grab_credentials (KaApplet *applet);
static int ka_renew_credentials (KaApplet *applet);
@@ -1070,6 +1070,30 @@ ka_nm_init (void)
}
+gboolean
+ka_kerberos_init (KaApplet *applet)
+{
+ ka_nm_init ();
+
+ g_timeout_add_seconds (CREDENTIAL_CHECK_INTERVAL,
+ (GSourceFunc) credentials_expiring, applet);
+ g_idle_add ((GSourceFunc) credentials_expiring_once, applet);
+ ccache_monitor = monitor_ccache (applet);
+ return TRUE;
+}
+
+
+gboolean
+ka_kerberos_destroy ()
+{
+ ka_nm_shutdown ();
+
+ if (ccache_monitor)
+ g_object_unref (ccache_monitor);
+ return TRUE;
+}
+
+
int
main (int argc, char *argv[])
{
@@ -1087,7 +1111,6 @@ main (int argc, char *argv[])
"Only run if an initialized ccache is found", NULL},
{NULL, 0, 0, G_OPTION_ARG_NONE, NULL, NULL, NULL}
};
- GFileMonitor *monitor = NULL;
context = g_option_context_new ("- Kerberos 5 credential checking");
g_option_context_add_main_entries (context, options, NULL);
@@ -1113,24 +1136,8 @@ main (int argc, char *argv[])
applet = ka_applet_create ();
if (!applet)
return 1;
-
- if (!ka_dbus_connect (applet)) {
- ka_applet_destroy (applet);
- return 1;
- }
- ka_nm_init ();
-
- g_timeout_add_seconds (CREDENTIAL_CHECK_INTERVAL,
- (GSourceFunc) credentials_expiring, applet);
- g_idle_add ((GSourceFunc) credentials_expiring_once, applet);
- monitor = monitor_ccache (applet);
-
g_application_run (G_APPLICATION(applet), argc, argv);
}
- ka_dbus_disconnect ();
- ka_nm_shutdown ();
- if (monitor)
- g_object_unref (monitor);
return 0;
}
diff --git a/src/ka-dialog.h b/src/ka-dialog.h
index c62acb3..504cc14 100644
--- a/src/ka-dialog.h
+++ b/src/ka-dialog.h
@@ -23,6 +23,9 @@
#include "ka-applet-priv.h"
+gboolean ka_kerberos_init (KaApplet *applet);
+gboolean ka_kerberos_destroy (void);
+
gboolean ka_destroy_ccache (KaApplet* applet);
gboolean ka_grab_credentials(KaApplet* applet);
gboolean ka_check_credentials (KaApplet *applet, const char* principal);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]