18c2aff776a775d34a4c9893a4c72e0434d68e36artem/***************************************************************************
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * libpolkit.h : Wraps a subset of methods on the PolicyKit daemon
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Copyright (C) 2006 David Zeuthen, <david@fubar.dk>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Licensed under the Academic Free License version 2.1
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * This program is free software; you can redistribute it and/or modify
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * it under the terms of the GNU General Public License as published by
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * the Free Software Foundation; either version 2 of the License, or
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * (at your option) any later version.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * This program is distributed in the hope that it will be useful,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * but WITHOUT ANY WARRANTY; without even the implied warranty of
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * GNU General Public License for more details.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * You should have received a copy of the GNU General Public License
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * along with this program; if not, write to the Free Software
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem **************************************************************************/
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#ifndef LIBPOLKIT_H
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#define LIBPOLKIT_H
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <stdio.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <unistd.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <sys/types.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <glib.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <dbus/dbus.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemtypedef enum {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem LIBPOLKIT_RESULT_OK,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem LIBPOLKIT_RESULT_ERROR,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem LIBPOLKIT_RESULT_INVALID_CONTEXT,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem LIBPOLKIT_RESULT_NOT_PRIVILEGED,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem LIBPOLKIT_RESULT_NO_SUCH_PRIVILEGE,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem LIBPOLKIT_RESULT_NO_SUCH_USER
18c2aff776a775d34a4c9893a4c72e0434d68e36artem} LibPolKitResult;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemstruct LibPolKitContext_s;
18c2aff776a775d34a4c9893a4c72e0434d68e36artemtypedef struct LibPolKitContext_s LibPolKitContext;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemLibPolKitContext *libpolkit_new_context (DBusConnection *connection);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemgboolean libpolkit_free_context (LibPolKitContext *ctx);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemLibPolKitResult libpolkit_get_privilege_list (LibPolKitContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem GList **result);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemLibPolKitResult libpolkit_is_uid_allowed_for_privilege (LibPolKitContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *system_bus_unique_name,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *user,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *privilege,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *resource,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem gboolean *out_is_allowed,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem gboolean *out_is_temporary,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem char **out_is_privileged_but_restricted_to_system_bus_unique_name);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemLibPolKitResult libpolkit_revoke_temporary_privilege (LibPolKitContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *user,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *privilege,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *resource,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem gboolean *result);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemLibPolKitResult libpolkit_get_allowed_resources_for_privilege_for_uid (LibPolKitContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *user,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *privilege,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem GList **resources,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem GList **restrictions,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem int *num_non_temporary);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#endif /* LIBPOLKIT_H */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem