diff options
author | Holger Macht <holger@homac.de> | 2007-08-15 15:50:59 +0200 |
---|---|---|
committer | Holger Macht <holger@homac.de> | 2007-08-15 15:50:59 +0200 |
commit | 33bb8da22e272eb273c9dafbae1d7b3b27ce2ce8 (patch) | |
tree | 63136c25123a500cfa6eb0a559ce37315f34d414 | |
parent | 33759f4556096a2c17f0aaae246788752f4dc39c (diff) |
- adjust to new PolicyKit >= 0.4 API
- bump library version
- bump package version to 0.2
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | configure.in | 2 | ||||
-rw-r--r-- | liblazy/Makefile.am | 2 | ||||
-rw-r--r-- | liblazy/liblazy.h | 8 | ||||
-rw-r--r-- | liblazy/liblazy_polkit.c | 47 |
5 files changed, 27 insertions, 34 deletions
@@ -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 <string.h> #include <errno.h> -#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); } |