diff options
author | Vincent Untz <vuntz@novell.com> | 2010-02-16 20:53:00 +0100 |
---|---|---|
committer | Vincent Untz <vuntz@novell.com> | 2010-02-16 20:53:00 +0100 |
commit | 760f8c470c4da0269b1e036d5f8b572c0cd7fe15 (patch) | |
tree | c02ab93cbd309986902bbd9ad3be90bacb825f32 | |
parent | 19362203486ff2f4ef50027a0de55bc41c48ba67 (diff) |
Port the tests to PolicyKit 1
-rw-r--r-- | src/test-cups-pk.c | 91 | ||||
-rwxr-xr-x | src/test-cups-pk.py | 53 |
2 files changed, 18 insertions, 126 deletions
diff --git a/src/test-cups-pk.c b/src/test-cups-pk.c index d797d04..4300dc0 100644 --- a/src/test-cups-pk.c +++ b/src/test-cups-pk.c @@ -21,55 +21,16 @@ * */ -#include <unistd.h> #include <gtk/gtk.h> #include <glib.h> -#include <glib-object.h> #include <dbus/dbus-glib.h> -#include <dbus/dbus-glib-lowlevel.h> #define MECHANISM_BUS "org.opensuse.CupsPkHelper.Mechanism" static gboolean -do_auth (DBusGConnection *bus, - const gchar *action, - const gchar *result) -{ - DBusGProxy *proxy; - GError *error; - gboolean ret; - gboolean ret_gained_privilege; - - proxy = dbus_g_proxy_new_for_name (bus, - "org.freedesktop.PolicyKit.AuthenticationAgent", - "/", - "org.freedesktop.PolicyKit.AuthenticationAgent"); - - if (!proxy) - return FALSE; - - error = NULL; - ret_gained_privilege = FALSE; - ret = dbus_g_proxy_call (proxy, "ObtainAuthorization", &error, - G_TYPE_STRING, action, /* action_id */ - G_TYPE_UINT, 0, /* xid */ - G_TYPE_UINT, getpid (), /* pid */ - G_TYPE_INVALID, - G_TYPE_BOOLEAN, &ret_gained_privilege, - G_TYPE_INVALID); - - if (!ret) { - g_print ("dbus error: %s\n", error->message); - g_error_free (error); - } - - return ret_gained_privilege; -} - -static gboolean printer_add (DBusGConnection *bus, const char *printer_name, const char *printer_uri, @@ -117,8 +78,6 @@ int main (int argc, char **argv) { DBusGConnection *system_bus; - DBusGConnection *session_bus; - gboolean try; gboolean ret; GError *error; @@ -134,46 +93,18 @@ main (int argc, char **argv) } error = NULL; - session_bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error); - if (session_bus == NULL) { - g_warning ("Could not connect to session bus: %s", - error->message); - g_error_free (error); - return 1; - } + ret = printer_add (system_bus, + "MyPrinter", "smb://really/cool", + "HP/Business_Inkjet_2200-chp2200.ppd.gz", + "This is my printer", "At home", + &error); - try = TRUE; - while (try) { - try = FALSE; - error = NULL; - ret = printer_add (system_bus, - "MyPrinter", "smb://really/cool", - "HP/Business_Inkjet_2200-chp2200.ppd.gz", - "This is my printer", "At home", - &error); - - if (!ret) { - if (dbus_g_error_has_name (error, MECHANISM_BUS".NotPrivileged")) { - gchar **tokens; - - tokens = g_strsplit (error->message, " ", 2); - g_error_free (error); - if (g_strv_length (tokens) == 2) { - /* Note: the async version fails - * because of timeout if the user waits - * too long */ - try = do_auth (session_bus, tokens[0], tokens[1]); - if (!try) - g_print ("not authorized\n"); - } else - g_warning ("helper return string malformed"); - g_strfreev (tokens); - } else if (error) { - g_print ("dbus error: %s\n", error->message); - g_error_free (error); - } else - g_print ("unknown error\n"); - } + if (!ret) { + if (error) { + g_print ("error: %s\n", error->message); + g_error_free (error); + } else + g_print ("unknown error\n"); } return 0; diff --git a/src/test-cups-pk.py b/src/test-cups-pk.py index 901c7cf..532a68b 100755 --- a/src/test-cups-pk.py +++ b/src/test-cups-pk.py @@ -25,40 +25,6 @@ import sys import dbus -def pk_auth(bus, action, result): - pk_auth_object =bus.get_object('org.freedesktop.PolicyKit.AuthenticationAgent', '/') - pk_auth = dbus.Interface(pk_auth_object, 'org.freedesktop.PolicyKit.AuthenticationAgent') - - ret = pk_auth.ObtainAuthorization(action, dbus.UInt32(0), dbus.UInt32(os.getpid())) - - if not type(ret) == dbus.Boolean: - return False - - return ret != 0 - -def handle_exception_with_auth(session_bus, e): - if e.get_dbus_name() != 'org.opensuse.CupsPkHelper.Mechanism.NotPrivileged': - print 'dbus error: %s' % e - return False - - tokens = e.get_dbus_message().split(' ', 2) - if len(tokens) != 3: - print 'helper return string malformed' - return False - - try: - # Note: the async version fails because of timeout if the user waits - # too long - ret = pk_auth(session_bus, tokens[0], tokens[1]) - except dbus.exceptions.DBusException, e_auth: - print 'dbus error: %s' % e_auth - return False - - if not ret: - print 'not authorized' - - return ret - def removeprinter(cups_pk, printer_name): error = cups_pk.PrinterRemove(printer_name) @@ -108,23 +74,18 @@ def changeoption(cups_pk, printer_name, option, value): print 'ouch: %s' % error def main(args): - session_bus = dbus.SessionBus() system_bus = dbus.SystemBus() cups_pk_object = system_bus.get_object('org.opensuse.CupsPkHelper.Mechanism', '/') cups_pk_interface = dbus.Interface(cups_pk_object, 'org.opensuse.CupsPkHelper.Mechanism') - while True: - try: - #removeprinter(cups_pk_interface, "MyPrinter") - addprinter(cups_pk_interface, "MyPrinter", "smb://really/cool", "HP/Business_Inkjet_2200-chp2200.ppd.gz", "This is my printer", "At home") - #changeoption(cups_pk_interface, "MyPrinter", "toto", "At home") - #acceptjobs(cups_pk_interface, "MyPrinter", True, "") - break - except dbus.exceptions.DBusException, e: - if handle_exception_with_auth(session_bus, e): - continue - break + try: + #removeprinter(cups_pk_interface, "MyPrinter") + addprinter(cups_pk_interface, "MyPrinter", "smb://really/cool", "HP/Business_Inkjet_2200-chp2200.ppd.gz", "This is my printer", "At home") + #changeoption(cups_pk_interface, "MyPrinter", "toto", "At home") + #acceptjobs(cups_pk_interface, "MyPrinter", True, "") + except dbus.exceptions.DBusException, e: + print 'Error: %s' % e if __name__ == '__main__': |