Use systemd for login session lookup, if available

This commit is contained in:
Cole Robinson 2012-07-07 10:39:06 -04:00
parent 090178984b
commit a80c1ce882

View File

@ -27,12 +27,23 @@ import libvirt
def do_we_have_session(): def do_we_have_session():
pid = os.getpid() pid = os.getpid()
try: try:
bus = dbus.SystemBus() bus = dbus.SystemBus()
except: except:
logging.exception("Error getting system bus handle") logging.exception("Error getting system bus handle")
return False return
# Check systemd
try:
manager = dbus.Interface(bus.get_object(
"org.freedesktop.login1",
"/org/freedesktop/login1"),
"org.freedesktop.login1.Manager")
ret = manager.GetSessionByPID(pid)
logging.debug("Found login1 session=%s", ret)
return True
except:
logging.exception("Couldn't connect to logind")
# Check ConsoleKit # Check ConsoleKit
try: try:
@ -40,18 +51,13 @@ def do_we_have_session():
"org.freedesktop.ConsoleKit", "org.freedesktop.ConsoleKit",
"/org/freedesktop/ConsoleKit/Manager"), "/org/freedesktop/ConsoleKit/Manager"),
"org.freedesktop.ConsoleKit.Manager") "org.freedesktop.ConsoleKit.Manager")
except:
logging.exception("Couldn't connect to ConsoleKit")
return False
try:
ret = manager.GetSessionForUnixProcess(pid) ret = manager.GetSessionForUnixProcess(pid)
logging.debug("Found ConsoleKit session=%s", ret) logging.debug("Found ConsoleKit session=%s", ret)
return True
except: except:
logging.exception("Failed to lookup pid session") logging.exception("Couldn't connect to ConsoleKit")
return False
return True return False
def creds_polkit(action): def creds_polkit(action):