From 33bb8da22e272eb273c9dafbae1d7b3b27ce2ce8 Mon Sep 17 00:00:00 2001 From: Holger Macht Date: Wed, 15 Aug 2007 15:50:59 +0200 Subject: - adjust to new PolicyKit >= 0.4 API - bump library version - bump package version to 0.2 --- NEWS | 2 ++ configure.in | 2 +- liblazy/Makefile.am | 2 +- liblazy/liblazy.h | 8 +++----- liblazy/liblazy_polkit.c | 47 ++++++++++++++++++++--------------------------- 5 files changed, 27 insertions(+), 34 deletions(-) diff --git a/NEWS b/NEWS index e69de29..3bf9657 100644 --- a/NEWS +++ b/NEWS @@ -0,0 +1,2 @@ +- converted to PokicyKit >= 0.4 API +- add method to use private dbus connection diff --git a/configure.in b/configure.in index dcb03e5..6bbca80 100644 --- a/configure.in +++ b/configure.in @@ -3,7 +3,7 @@ AC_PREREQ(2.59) -AC_INIT(liblazy, 0.1.1, hmacht@suse.de) +AC_INIT(liblazy, 0.2, hmacht@suse.de) AM_INIT_AUTOMAKE AC_CONFIG_SRCDIR([liblazy/liblazy_hal.c]) AM_CONFIG_HEADER(config.h) diff --git a/liblazy/Makefile.am b/liblazy/Makefile.am index 9f2f9ba..829b797 100644 --- a/liblazy/Makefile.am +++ b/liblazy/Makefile.am @@ -8,7 +8,7 @@ include_HEADERS = liblazy.h liblazy_la_SOURCES = liblazy_hal.c liblazy_dbus.c liblazy_polkit.c liblazy.c liblazy_local.h liblazy_la_CFLAGS = $(DBUS_CFLAGS) -Wall -liblazy_la_LDFLAGS = -version-info 0:0:0 $(DBUS_LIBS) +liblazy_la_LDFLAGS = -version-info 1:0:0 $(DBUS_LIBS) pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = lazy.pc diff --git a/liblazy/liblazy.h b/liblazy/liblazy.h index 4f6e23b..1db8fa3 100644 --- a/liblazy/liblazy.h +++ b/liblazy/liblazy.h @@ -264,8 +264,7 @@ int liblazy_hal_find_device_by_string_match(char *key, char *value, char ***strl * * @return 0 on success, LIBLAZY_ERROR_* on failure */ -int liblazy_polkit_is_user_allowed_by_name(char *user, char *privilege, - char *ressource); +int liblazy_polkit_is_user_allowed_by_name(char *user, char *privilege); /** @brief check if a user possesses a privilege * @@ -278,8 +277,7 @@ int liblazy_polkit_is_user_allowed_by_name(char *user, char *privilege, * * @return 0 on success, LIBLAZY_ERROR_* on failure */ -int liblazy_polkit_is_user_allowed_by_uid(int uid, char *privilege, - char *ressource); +int liblazy_polkit_is_user_allowed_by_uid(int uid, char *privilege); /** @brief check if a user possesses a privilege * @@ -291,7 +289,7 @@ int liblazy_polkit_is_user_allowed_by_uid(int uid, char *privilege, * * @return 0 on success, LIBLAZY_ERROR_* on failure */ -int liblazy_polkit_is_user_allowed(char *privilege, char *ressource); +int liblazy_polkit_is_user_allowed(char *privilege); #ifdef __cplusplus } diff --git a/liblazy/liblazy_polkit.c b/liblazy/liblazy_polkit.c index e880822..87dc626 100644 --- a/liblazy/liblazy_polkit.c +++ b/liblazy/liblazy_polkit.c @@ -32,19 +32,17 @@ #include #include -#define DBUS_POLKIT_SERVICE "org.freedesktop.PolicyKit" -#define DBUS_POLKIT_PATH "/org/freedesktop/PolicyKit/Manager" -#define DBUS_POLKIT_INTERFACE "org.freedesktop.PolicyKit.Manager" +#define DBUS_HAL_SERVICE "org.freedesktop.Hal" +#define DBUS_HAL_DEVICE_INTERFACE "org.freedesktop.Hal.Device" +#define DBUS_HAL_COMPUTER_PATH "/org/freedesktop/Hal/devices/computer" -int liblazy_polkit_is_user_allowed_by_name(char *user, - char *privilege, - char *ressource) +int liblazy_polkit_is_user_allowed_by_name(char *user, char *privilege) { DBusMessage *reply; DBusError dbus_error; DBusConnection *dbus_connection; const char *unique_name; - int is_allowed; + char *allowed; int error = 0; if (user == NULL || privilege == NULL ) @@ -63,34 +61,31 @@ int liblazy_polkit_is_user_allowed_by_name(char *user, unique_name = dbus_bus_get_unique_name(dbus_connection); - if (ressource == NULL) - ressource = ""; - - error = liblazy_dbus_system_send_method_call(DBUS_POLKIT_SERVICE, - DBUS_POLKIT_PATH, - DBUS_POLKIT_INTERFACE, - "IsUserPrivileged", + error = liblazy_dbus_system_send_method_call(DBUS_HAL_SERVICE, + DBUS_HAL_COMPUTER_PATH, + DBUS_HAL_DEVICE_INTERFACE, + "IsCallerPrivileged", &reply, + DBUS_TYPE_STRING, &privilege, DBUS_TYPE_STRING, &unique_name, - DBUS_TYPE_STRING, &user, - DBUS_TYPE_STRING, &privilege, - DBUS_TYPE_STRING, &ressource, DBUS_TYPE_INVALID); if (error) return error; - error = liblazy_dbus_message_get_basic_arg(reply, DBUS_TYPE_BOOLEAN, - &is_allowed, 0); + error = liblazy_dbus_message_get_basic_arg(reply, DBUS_TYPE_STRING, + &allowed, 0); + if (reply != NULL) dbus_message_unref(reply); if (error) return error; - return is_allowed; + if (strcmp(allowed, "yes") == 0) + return 1; + return 0; } -int liblazy_polkit_is_user_allowed_by_uid(int uid, char *privilege, - char *ressource) +int liblazy_polkit_is_user_allowed_by_uid(int uid, char *privilege) { struct passwd *pw = getpwuid(uid); @@ -99,14 +94,12 @@ int liblazy_polkit_is_user_allowed_by_uid(int uid, char *privilege, return LIBLAZY_ERROR_GENERAL; } - return liblazy_polkit_is_user_allowed_by_name(pw->pw_name, privilege, - ressource); + return liblazy_polkit_is_user_allowed_by_name(pw->pw_name, privilege); } -int liblazy_polkit_is_user_allowed(char *privilege, char *ressource) +int liblazy_polkit_is_user_allowed(char *privilege) { char *user = getenv("USER"); - return liblazy_polkit_is_user_allowed_by_name(user, privilege, - ressource); + return liblazy_polkit_is_user_allowed_by_name(user, privilege); } -- cgit v1.2.3