summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHolger Macht <holger@homac.de>2007-08-15 15:50:59 +0200
committerHolger Macht <holger@homac.de>2007-08-15 15:50:59 +0200
commit33bb8da22e272eb273c9dafbae1d7b3b27ce2ce8 (patch)
tree63136c25123a500cfa6eb0a559ce37315f34d414
parent33759f4556096a2c17f0aaae246788752f4dc39c (diff)
- adjust to new PolicyKit >= 0.4 API
- bump library version - bump package version to 0.2
-rw-r--r--NEWS2
-rw-r--r--configure.in2
-rw-r--r--liblazy/Makefile.am2
-rw-r--r--liblazy/liblazy.h8
-rw-r--r--liblazy/liblazy_polkit.c47
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 <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);
}