[krb5-auth-dialog] Invoke Kerberos related initialization from applet



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]