aboutsummaryrefslogtreecommitdiff
path: root/examples/tgt-signals.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/tgt-signals.py')
-rw-r--r--examples/tgt-signals.py76
1 files changed, 76 insertions, 0 deletions
diff --git a/examples/tgt-signals.py b/examples/tgt-signals.py
new file mode 100644
index 0000000..613aa39
--- /dev/null
+++ b/examples/tgt-signals.py
@@ -0,0 +1,76 @@
+#!/usr/bin/python
+#
+# Copyright (C) 2010 Guido Guenther <agx@sigxcpu.org>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+"""Example on howto handle the different DBus signals emitted by
+ krb5-auth-dialog"""
+
+import datetime
+import time
+import subprocess
+from optparse import OptionParser
+
+import gobject
+import dbus
+import dbus.mainloop.glib
+
+def print_info(action, principal, when):
+ w = datetime.datetime.fromtimestamp(when)
+ if options.verbose:
+ print "Ticket %s. Principal %s expires %s" % (action, principal, time.asctime(w.timetuple()))
+
+def run_action(cmd):
+ if cmd:
+ subprocess.call(cmd, shell=True)
+
+def tgt_acquired_handler(principal, when):
+ print_info("acquired", principal, when)
+ run_action(options.acquired_action)
+
+def tgt_renewed_handler(principal, when):
+ print_info("renewed", principal, when)
+ run_action(options.renewed_action)
+
+def tgt_expired_handler(principal, when):
+ if options.verbose:
+ print "Principal %s expired" % principal
+ run_action(options.expired_action)
+
+if __name__ == '__main__':
+ global options
+
+ parser = OptionParser()
+ parser.add_option("--acquired-action", dest="acquired_action",
+ help="action on ticket acquisition")
+ parser.add_option("--renewed-action", dest="renewed_action",
+ help="action on ticket renewal")
+ parser.add_option("--expired-action", dest="expired_action",
+ help="action on ticket expiration")
+ parser.add_option("-q", "--quiet",
+ action="store_false", dest="verbose", default=True,
+ help="don't print status messages to stdout")
+
+ (options, args) = parser.parse_args()
+
+ dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+
+ bus = dbus.SessionBus()
+ bus.add_signal_receiver(tgt_renewed_handler, dbus_interface = "org.gnome.KrbAuthDialog", signal_name = "krb_tgt_renewed")
+ bus.add_signal_receiver(tgt_acquired_handler, dbus_interface = "org.gnome.KrbAuthDialog", signal_name = "krb_tgt_acquired")
+ bus.add_signal_receiver(tgt_expired_handler, dbus_interface = "org.gnome.KrbAuthDialog", signal_name = "krb_tgt_expired")
+
+ loop = gobject.MainLoop()
+ loop.run()
bgstack15