diff options
author | Michele Calgaro <michele.calgaro@yahoo.it> | 2021-11-10 10:02:01 +0900 |
---|---|---|
committer | Michele Calgaro <michele.calgaro@yahoo.it> | 2021-11-10 10:02:01 +0900 |
commit | 4606c91f4c62ae540df8edca973c2c5e405227d7 (patch) | |
tree | 6496977cbd591c7b530fc49ccdf115cd9673137c /core | |
parent | eb2210c94488f6c57159fede9a98891e4f3a1a52 (diff) | |
download | polkit-tqt-4606c91f4c62ae540df8edca973c2c5e405227d7.tar.gz polkit-tqt-4606c91f4c62ae540df8edca973c2c5e405227d7.zip |
Completed conversion of 'core' library module.
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Diffstat (limited to 'core')
18 files changed, 1706 insertions, 1677 deletions
diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index dc492af4d..896959b84 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -25,7 +25,12 @@ link_directories( ##### install headers ########################### install( FILES + polkit-tqt-actiondescription.h + polkit-tqt-authority.h + polkit-tqt-details.h + polkit-tqt-identity.h polkit-tqt-subject.h + polkit-tqt-temporaryauthorization.h DESTINATION ${INCLUDE_INSTALL_DIR} ) @@ -33,31 +38,19 @@ install( FILES tde_add_library( polkit-tqt-core SHARED AUTOMOC SOURCES ${polkit_tqt_MOCS} + polkit-tqt-actiondescription.cpp + polkit-tqt-authority.cpp + polkit-tqt-details.cpp + polkit-tqt-identity.cpp polkit-tqt-subject.cpp + polkit-tqt-temporaryauthorization.cpp VERSION 0.0.0 LINK ${TQT_LIBRARIES} ${POLKIT_LIBRARIES} DESTINATION ${LIB_INSTALL_DIR} ) -## set(polkit_tqt_core_SRCS -## polkittqt1-authority.cpp -## polkittqt1-identity.cpp -## polkittqt1-temporaryauthorization.cpp -## polkittqt1-details.cpp -## polkittqt1-actiondescription.cpp -## ) -## -## target_link_libraries(polkit-tqt-core-1 -## ${TQT_TQTDBUS_LIBRARY} -## ${TQT_TQTXML_LIBRARY} -## ${GLIB2_LIBRARIES} -## ${GOBJECT_LIBRARIES} -## ${GIO_LIBRARIES} -## ) ## ## set_target_properties(polkit-tqt-core-1 PROPERTIES VERSION ${POLKITTQT-1_LIBRARY_VERSION} ## SOVERSION ${POLKITTQT-1_ABI_VERSION} ## DEFINE_SYMBOL MAKE_POLKITTQT1_LIB) -## -## install(TARGETS polkit-tqt-core-1 ${INSTALL_TARGETS_DEFAULT_ARGS}) diff --git a/core/polkit-tqt-actiondescription.cpp b/core/polkit-tqt-actiondescription.cpp new file mode 100644 index 000000000..ca8dea2c8 --- /dev/null +++ b/core/polkit-tqt-actiondescription.cpp @@ -0,0 +1,165 @@ +/* + * This file is part of the Polkit-tqt project + * Copyright (C) 2009 Jaroslav Reznik <jreznik@redhat.com> + * Copyright (C) 2010 Dario Freddi <drf@kde.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <polkit/polkit.h> + +#include "polkit-tqt-actiondescription.h" + +#include <tqshared.h> +#include <tqstring.h> + + +namespace PolkitTQt +{ + +//-------------------------------------- +// ActionDescription::Data +//-------------------------------------- + +class ActionDescription::Data : public TQShared +{ + public: + Data() + { + } + + Data(const Data &other) : actionId(other.actionId), description(other.description), + message(other.message), vendorName(other.vendorName), vendorUrl(other.vendorUrl), + iconName(other.iconName), implicitAny(other.implicitAny), + implicitInactive(other.implicitInactive), implicitActive(other.implicitActive) + { + } + + ~Data() + { + } + + TQString actionId; + TQString description; + TQString message; + TQString vendorName; + TQString vendorUrl; + TQString iconName; + + ImplicitAuthorization implicitAny; + ImplicitAuthorization implicitInactive; + ImplicitAuthorization implicitActive; +}; + +//-------------------------------------- +// ActionDescription +//-------------------------------------- + +ActionDescription::ActionDescription() : d(new Data) +{ +} + +ActionDescription::ActionDescription(PolkitActionDescription *pkActionDescription) : d(new Data) +{ + d->actionId = TQString::fromUtf8(polkit_action_description_get_action_id(pkActionDescription)); + d->description = TQString::fromUtf8(polkit_action_description_get_description(pkActionDescription)); + d->message = TQString::fromUtf8(polkit_action_description_get_message(pkActionDescription)); + d->vendorName = TQString::fromUtf8(polkit_action_description_get_vendor_name(pkActionDescription)); + d->vendorUrl = TQString::fromUtf8(polkit_action_description_get_vendor_url(pkActionDescription)); + d->iconName = TQString::fromUtf8(polkit_action_description_get_icon_name(pkActionDescription)); + + d->implicitAny = static_cast<ImplicitAuthorization>( + polkit_action_description_get_implicit_any(pkActionDescription)); + d->implicitInactive = static_cast<ImplicitAuthorization>( + polkit_action_description_get_implicit_inactive(pkActionDescription)); + d->implicitActive = static_cast<ImplicitAuthorization>( + polkit_action_description_get_implicit_active(pkActionDescription)); +} + +ActionDescription::ActionDescription(const ActionDescription &other) : d(other.d) +{ + d->ref(); +} + +ActionDescription& ActionDescription::operator=(const ActionDescription &other) +{ + if (d != other.d) + { + if (d->deref()) + { + delete d; + } + d = other.d; + d->ref(); + } + return *this; +} + +ActionDescription::~ActionDescription() +{ + if (d->deref()) + { + delete d; + } +} + +TQString ActionDescription::actionId() const +{ + return d->actionId; +} + +TQString ActionDescription::description() const +{ + return d->description; +} + +TQString ActionDescription::message() const +{ + return d->message; +} + +TQString ActionDescription::vendorName() const +{ + return d->vendorName; +} + +TQString ActionDescription::vendorUrl() const +{ + return d->vendorUrl; +} + +TQString ActionDescription::iconName() const +{ + return d->iconName; +} + +ActionDescription::ImplicitAuthorization ActionDescription::implicitAny() const +{ + return d->implicitAny; +} + +ActionDescription::ImplicitAuthorization ActionDescription::implicitInactive() const +{ + return d->implicitInactive; +} + +ActionDescription::ImplicitAuthorization ActionDescription::implicitActive() const +{ + return d->implicitActive; +} + +} + diff --git a/core/polkittqt1-actiondescription.h b/core/polkit-tqt-actiondescription.h index 3a6792654..bb477f79f 100644 --- a/core/polkittqt1-actiondescription.h +++ b/core/polkit-tqt-actiondescription.h @@ -19,21 +19,22 @@ * Boston, MA 02110-1301, USA. */ -#ifndef POLKITTQT1_ACTION_DESCRIPTION_H -#define POLKITTQT1_ACTION_DESCRIPTION_H +#ifndef POLKIT_TQT_ACTION_DESCRIPTION_H +#define POLKIT_TQT_ACTION_DESCRIPTION_H #include "polkit-tqt-export.h" -#include <TQtCore/TQList> -#include <TQtCore/TQMetaType> -#include <TQtCore/TQSharedData> typedef struct _PolkitActionDescription PolkitActionDescription; +class TQString; +template<typename> class TQValueList; + + namespace PolkitTQt { /** - * \class ActionDescription polkittqt1-actiondescription.h ActionDescription + * \class ActionDescription polkit-tqt-actiondescription.h ActionDescription * \author Jaroslav Reznik <jreznik@redhat.com> * \author Dario Freddi <drf@kde.org> * @@ -41,27 +42,31 @@ namespace PolkitTQt */ class POLKIT_TQT_EXPORT ActionDescription { -public: - enum ImplicitAuthorization { - /** Unknown whether the subject is authorized, never returned in any public API. **/ - Unknown = -1, - /** Subject is not authorized. **/ - NotAuthorized = 0, - /** Authentication is required. **/ - AuthenticationRequired = 1, - /** Authentication as an administrator is required. **/ - AdministratorAuthenticationRequired = 2, - /** Authentication is required. If the authorization is obtained, it is retained. **/ - AuthenticationRequiredRetained = 3, - /** Authentication as an administrator is required. If the authorization is obtained, it is retained. **/ - AdministratorAuthenticationRequiredRetained = 4, - /** The subject is authorized. **/ - Authorized = 5 + public: + enum ImplicitAuthorization + { + /** Unknown whether the subject is authorized, never returned in any public API. **/ + Unknown = -1, + /** Subject is not authorized. **/ + NotAuthorized = 0, + /** Authentication is required. **/ + AuthenticationRequired = 1, + /** Authentication as an administrator is required. **/ + AdministratorAuthenticationRequired = 2, + /** Authentication is required. If the authorization is obtained, it is retained. **/ + AuthenticationRequiredRetained = 3, + /** Authentication as an administrator is required. If the authorization is obtained, it is retained. **/ + AdministratorAuthenticationRequiredRetained = 4, + /** The subject is authorized. **/ + Authorized = 5 }; - typedef TQList< ActionDescription > List; + typedef TQValueList<ActionDescription> List; ActionDescription(); + ActionDescription(const ActionDescription &other); + ~ActionDescription(); + /** * \brief Constructor of ActionDescription object from PolkitActionDescription * @@ -69,11 +74,9 @@ public: * * \param actionDesciption PolkitActionDescription */ - explicit ActionDescription(PolkitActionDescription *actionDescription); - ActionDescription(const ActionDescription &other); - ~ActionDescription(); + explicit ActionDescription(PolkitActionDescription *pkActionDescription); - ActionDescription &operator=(const ActionDescription &other); + ActionDescription& operator=(const ActionDescription &other); /** * \brief Gets the action id for ActionDescription @@ -90,7 +93,7 @@ public: TQString description() const; /** - * \brief Gets the message user for ActionDescription + * \brief Gets the message used for ActionDescription * * \return action message */ @@ -118,32 +121,35 @@ public: TQString iconName() const; /** - * \brief Gets the implicit authorization for ActionDescription used for any subject + * \brief Gets the implicit authorization for ActionDescription used + * for any subject * * \return A value from ImplicitAuthorization enumeration */ - ActionDescription::ImplicitAuthorization implicitAny() const; + ImplicitAuthorization implicitAny() const; /** - * \brief Gets the implicit authorization for ActionDescription used for subjects in inactive session on a local console + * \brief Gets the implicit authorization for ActionDescription used + * for subjects in inactive session on a local console * * \return A value from ImplicitAuthorization enumeration */ - ActionDescription::ImplicitAuthorization implicitInactive() const; + ImplicitAuthorization implicitInactive() const; /** - * \brief Gets the implicit authorization for ActionDescription used for subjects in active session on a local console + * \brief Gets the implicit authorization for ActionDescription used + * for subjects in active session on a local console * * \return A value from ImplicitAuthorization enumeration */ - ActionDescription::ImplicitAuthorization implicitActive() const; + ImplicitAuthorization implicitActive() const; -private: + private: class Data; - TQSharedDataPointer< Data > d; + Data *d; }; + } -TQ_DECLARE_METATYPE(PolkitTQt::ActionDescription::List) +#endif -#endif //POLKIT_TQT_ACTION_DESCRIPTION_H diff --git a/core/polkit-tqt-authority.cpp b/core/polkit-tqt-authority.cpp new file mode 100644 index 000000000..3bdfe9bf9 --- /dev/null +++ b/core/polkit-tqt-authority.cpp @@ -0,0 +1,816 @@ +/* + * This file is part of the Polkit-tqt project + * Copyright (C) 2009 Daniel Nicoletti <dantti85-pk@yahoo.com.br> + * Copyright (C) 2009 Dario Freddi <drf@kde.org> + * Copyright (C) 2009 Jaroslav Reznik <jreznik@redhat.com> + * Copyright (C) 2009 Radek Novacek <rnovacek@redhat.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <polkit/polkit.h> + +#include "polkit-tqt-authority.h" + + +namespace PolkitTQt +{ + +//-------------------------------------- +// General functions +//-------------------------------------- + +Authority *Authority::m_theAuthority = NULL; + +Authority* Authority::instance(PolkitAuthority *authority) +{ + if (!m_theAuthority) + { + m_theAuthority = new Authority(); + } + return m_theAuthority; +} + +Authority::Result polkitResultToResult(PolkitAuthorizationResult *result) +{ + if (polkit_authorization_result_get_is_challenge(result)) + { + return Authority::Challenge; + } + else if (polkit_authorization_result_get_is_authorized(result)) + { + return Authority::Yes; + } + else + { + return Authority::No; + } +} + +ActionDescription::List actionsToListAndFree(GList *glist) +{ + ActionDescription::List result; + for (GList *glist2 = glist; glist2; glist2 = g_list_next(glist2)) + { + gpointer i = glist2->data; + result.append(ActionDescription(static_cast<PolkitActionDescription*>(i))); + g_object_unref(i); + } + g_list_free(glist); + return result; +} + +//-------------------------------------- +// Authority::Private +//-------------------------------------- + +class Authority::Private +{ + public: + Private(Authority *qq) : q(qq), pkAuthority(NULL), m_hasError(false) + { + } + + ~Private(); + + void init(); + + /** Use this method to set the error message to \p message. Set recover to \c true + * to try to reinitialize this object with init() method + */ + void setError(ErrorCode code, const TQString &details = TQString::null, bool recover = false); + + Authority *q; + PolkitAuthority *pkAuthority; + bool m_hasError; + ErrorCode m_lastError; + TQString m_errorDetails; + + GCancellable *m_checkAuthorizationCancellable; + GCancellable *m_enumerateActionsCancellable; + GCancellable *m_registerAuthenticationAgentCancellable; + GCancellable *m_unregisterAuthenticationAgentCancellable; + GCancellable *m_authenticationAgentResponseCancellable; + GCancellable *m_enumerateTemporaryAuthorizationsCancellable; + GCancellable *m_revokeTemporaryAuthorizationsCancellable; + GCancellable *m_revokeTemporaryAuthorizationCancellable; + + static void pk_config_changed(); + static void checkAuthorizationCallback(GObject *object, GAsyncResult *result, gpointer user_data); + static void enumerateActionsCallback(GObject *object, GAsyncResult *result, gpointer user_data); + static void registerAuthenticationAgentCallback(GObject *object, GAsyncResult *result, gpointer user_data); + static void unregisterAuthenticationAgentCallback(GObject *object, GAsyncResult *result, gpointer user_data); + static void authenticationAgentResponseCallback(GObject *object, GAsyncResult *result, gpointer user_data); + static void enumerateTemporaryAuthorizationsCallback(GObject *object, GAsyncResult *result, gpointer user_data); + static void revokeTemporaryAuthorizationsCallback(GObject *object, GAsyncResult *result, gpointer user_data); + static void revokeTemporaryAuthorizationCallback(GObject *object, GAsyncResult *result, gpointer user_data); +}; + +Authority::Private::~Private() +{ + g_object_unref(m_checkAuthorizationCancellable); + g_object_unref(m_enumerateActionsCancellable); + g_object_unref(m_registerAuthenticationAgentCancellable); + g_object_unref(m_unregisterAuthenticationAgentCancellable); + g_object_unref(m_authenticationAgentResponseCancellable); + g_object_unref(m_enumerateTemporaryAuthorizationsCancellable); + g_object_unref(m_revokeTemporaryAuthorizationsCancellable); + g_object_unref(m_revokeTemporaryAuthorizationCancellable); +} + +void Authority::Private::init() +{ + m_checkAuthorizationCancellable = g_cancellable_new(); + m_enumerateActionsCancellable = g_cancellable_new(); + m_registerAuthenticationAgentCancellable = g_cancellable_new(); + m_unregisterAuthenticationAgentCancellable = g_cancellable_new(); + m_authenticationAgentResponseCancellable = g_cancellable_new(); + m_enumerateTemporaryAuthorizationsCancellable = g_cancellable_new(); + m_revokeTemporaryAuthorizationsCancellable = g_cancellable_new(); + m_revokeTemporaryAuthorizationCancellable = g_cancellable_new(); + + GError *gerror = NULL; + if (pkAuthority == NULL) + { + pkAuthority = polkit_authority_get_sync(NULL, &gerror); + if (gerror != NULL) + { + setError(E_GetAuthority, gerror->message); + g_error_free(gerror); + return; + } + } + + if (pkAuthority == NULL) + { + return; + } + + // connect changed signal + g_signal_connect(G_OBJECT(pkAuthority), "changed", G_CALLBACK(pk_config_changed), NULL); +} + +void Authority::Private::setError(Authority::ErrorCode code, const TQString &details, bool recover) +{ + if (recover) + { + init(); + } + m_lastError = code; + m_errorDetails = details; + m_hasError = true; +} + +//-------------------------------------- +// Authority +//-------------------------------------- + +Authority::Authority(TQObject *parent) : TQObject(parent), d(new Private(this)) +{ + d->init(); +} + +Authority::~Authority() +{ + g_object_unref(d->pkAuthority); + delete d; +} + +bool Authority::hasError() const +{ + return d->m_hasError; +} + +Authority::ErrorCode Authority::lastError() const +{ + return d->m_lastError; +} + +const TQString Authority::errorDetails() const +{ + if (d->m_lastError == E_None) + { + return TQString::null; + } + else + { + return d->m_errorDetails; + } +} + +void Authority::clearError() +{ + d->m_hasError = false; + d->m_lastError = E_None; +} + +void Authority::Private::pk_config_changed() +{ + emit Authority::instance()->configChanged(); +} + +PolkitAuthority* Authority::polkitAuthority() const +{ + return d->pkAuthority; +} + +Authority::Result Authority::checkAuthorizationSync(const TQString &actionId, + const Subject &subject, AuthorizationFlags flags) +{ + if (Authority::instance()->hasError()) + { + return Unknown; + } + + if (!subject.isValid()) + { + d->setError(E_WrongSubject); + return Unknown; + } + + GError *error = NULL; + PolkitAuthorizationResult *pk_result = polkit_authority_check_authorization_sync(d->pkAuthority, + subject.subject(), actionId.ascii(), NULL, (PolkitCheckAuthorizationFlags)(int)flags, + NULL, &error); + if (error != NULL) + { + d->setError(E_CheckFailed, error->message); + g_error_free(error); + return Unknown; + } + + if (!pk_result) + { + d->setError(E_UnknownResult); + return Unknown; + } + else + { + Authority::Result res = polkitResultToResult(pk_result); + g_object_unref(pk_result); + return res; + } +} + +void Authority::checkAuthorization(const TQString &actionId, const Subject &subject, AuthorizationFlags flags) +{ + if (Authority::instance()->hasError()) + { + return; + } + + if (!subject.isValid()) + { + d->setError(E_WrongSubject); + return; + } + + polkit_authority_check_authorization(d->pkAuthority, subject.subject(), actionId.ascii(), NULL, + (PolkitCheckAuthorizationFlags)(int)flags, d->m_checkAuthorizationCancellable, + d->checkAuthorizationCallback, this); +} + +void Authority::Private::checkAuthorizationCallback(GObject *object, GAsyncResult *result, gpointer user_data) +{ + Authority *authority = (Authority*)user_data; + if (!authority) + { + return; + } + + GError *error = NULL; + PolkitAuthorizationResult *pkResult = polkit_authority_check_authorization_finish( + (PolkitAuthority*)object, result, &error); + if (error != NULL) + { + // We don't want to set error if this is cancellation of some action + if (error->code != 1) + { + authority->d->setError(E_CheckFailed, error->message); + } + g_error_free(error); + return; + } + if (pkResult != NULL) + { + emit authority->checkAuthorizationFinished(polkitResultToResult(pkResult)); + g_object_unref(pkResult); + } + else + { + authority->d->setError(E_UnknownResult); + } +} + +void Authority::checkAuthorizationCancel() +{ + if (!g_cancellable_is_cancelled(d->m_checkAuthorizationCancellable)) + { + g_cancellable_cancel(d->m_checkAuthorizationCancellable); + } +} + +ActionDescription::List Authority::enumerateActionsSync() +{ + if (Authority::instance()->hasError()) + { + return ActionDescription::List(); + } + + GError *error = NULL; + GList *glist = polkit_authority_enumerate_actions_sync(d->pkAuthority, NULL, &error); + if (error != NULL) + { + d->setError(E_EnumFailed, error->message); + g_error_free(error); + return ActionDescription::List(); + } + + return actionsToListAndFree(glist); +} + +void Authority::enumerateActions() +{ + if (Authority::instance()->hasError()) + { + return; + } + + polkit_authority_enumerate_actions(d->pkAuthority, d->m_enumerateActionsCancellable, + d->enumerateActionsCallback, Authority::instance()); +} + +void Authority::Private::enumerateActionsCallback(GObject *object, GAsyncResult *result, gpointer user_data) +{ + Authority *authority = (Authority*)user_data; + if (!authority) + { + return; + } + GError *error = NULL; + GList *list = polkit_authority_enumerate_actions_finish((PolkitAuthority*)object, result, &error); + if (error != NULL) + { + // We don't want to set error if this is cancellation of some action + if (error->code != 1) + { + authority->d->setError(E_EnumFailed, error->message); + } + g_error_free(error); + return; + } + + emit authority->enumerateActionsFinished(actionsToListAndFree(list)); +} + +void Authority::enumerateActionsCancel() +{ + if (!g_cancellable_is_cancelled(d->m_enumerateActionsCancellable)) + { + g_cancellable_cancel(d->m_enumerateActionsCancellable); + } +} + +bool Authority::registerAuthenticationAgentSync(const Subject &subject, const TQString &locale, + const TQString &objectPath) +{ + if (Authority::instance()->hasError()) + { + return false; + } + + if (!subject.isValid()) + { + d->setError(E_WrongSubject); + return false; + } + + GError *error = NULL; + gboolean result = polkit_authority_register_authentication_agent_sync(d->pkAuthority, + subject.subject(), locale.ascii(), objectPath.ascii(), NULL, &error); + if (error) + { + d->setError(E_RegisterFailed, error->message); + g_error_free(error); + return false; + } + + return result; +} + +void Authority::registerAuthenticationAgent(const Subject &subject, const TQString &locale, + const TQString &objectPath) +{ + if (Authority::instance()->hasError()) + { + return; + } + + if (!subject.isValid()) + { + d->setError(E_WrongSubject); + return; + } + + polkit_authority_register_authentication_agent(d->pkAuthority, subject.subject(), locale.ascii(), + objectPath.ascii(), d->m_registerAuthenticationAgentCancellable, + d->registerAuthenticationAgentCallback, this); +} + +void Authority::Private::registerAuthenticationAgentCallback(GObject *object, GAsyncResult *result, + gpointer user_data) +{ + Authority *authority = (Authority*)user_data; + if (!authority) + { + return; + } + GError *error = NULL; + bool res = polkit_authority_register_authentication_agent_finish((PolkitAuthority*)object, result, &error); + if (error != NULL) + { + // We don't want to set error if this is cancellation of some action + if (error->code != 1) + { + authority->d->setError(E_EnumFailed , error->message); + } + g_error_free(error); + return; + } + + emit authority->registerAuthenticationAgentFinished(res); +} + +void Authority::registerAuthenticationAgentCancel() +{ + if (!g_cancellable_is_cancelled(d->m_registerAuthenticationAgentCancellable)) + { + g_cancellable_cancel(d->m_registerAuthenticationAgentCancellable); + } +} + +bool Authority::unregisterAuthenticationAgentSync(const Subject &subject, const TQString &objectPath) +{ + if (d->pkAuthority) + { + return false; + } + + if (!subject.isValid()) + { + d->setError(E_WrongSubject); + return false; + } + + GError *error = NULL; + bool result = polkit_authority_unregister_authentication_agent_sync(d->pkAuthority, + subject.subject(), objectPath.utf8().data(), NULL, &error); + if (error != NULL) + { + d->setError(E_UnregisterFailed, error->message); + g_error_free(error); + return false; + } + + return result; +} + +void Authority::unregisterAuthenticationAgent(const Subject &subject, const TQString &objectPath) +{ + if (Authority::instance()->hasError()) + { + return; + } + + if (!subject.isValid()) + { + d->setError(E_WrongSubject); + return; + } + + polkit_authority_unregister_authentication_agent(d->pkAuthority, subject.subject(), + objectPath.utf8().data(), d->m_unregisterAuthenticationAgentCancellable, + d->unregisterAuthenticationAgentCallback, this); +} + +void Authority::Private::unregisterAuthenticationAgentCallback(GObject *object, + GAsyncResult *result, gpointer user_data) +{ + Authority *authority = (Authority*)user_data; + if (!authority) + { + return; + } + GError *error = NULL; + bool res = polkit_authority_unregister_authentication_agent_finish((PolkitAuthority*)object, + result, &error); + if (error != NULL) + { + // We don't want to set error if this is cancellation of some action + if (error->code != 1) + { + authority->d->setError(E_UnregisterFailed, error->message); + } + g_error_free(error); + return; + } + + emit authority->unregisterAuthenticationAgentFinished(res); +} + +void Authority::unregisterAuthenticationAgentCancel() +{ + if (!g_cancellable_is_cancelled(d->m_unregisterAuthenticationAgentCancellable)) + { + g_cancellable_cancel(d->m_unregisterAuthenticationAgentCancellable); + } +} + +bool Authority::authenticationAgentResponseSync(const TQString &cookie, const Identity &identity) +{ + if (Authority::instance()->hasError()) + { + return false; + } + + if (cookie.isEmpty() || !identity.isValid()) + { + d->setError(E_CookieOrIdentityEmpty); + return false; + } + + GError *error = NULL; + bool result = polkit_authority_authentication_agent_response_sync(d->pkAuthority, + cookie.utf8().data(), identity.identity(), NULL, &error); + if (error != NULL) + { + d->setError(E_AgentResponseFailed, error->message); + g_error_free(error); + return false; + } + + return result; +} + +void Authority::authenticationAgentResponse(const TQString &cookie, const Identity &identity) +{ + if (Authority::instance()->hasError()) + { + return; + } + + if (cookie.isEmpty() || !identity.isValid()) + { + d->setError(E_CookieOrIdentityEmpty); + return; + } + + polkit_authority_authentication_agent_response(d->pkAuthority, cookie.utf8().data(), + identity.identity(), d->m_authenticationAgentResponseCancellable, + d->authenticationAgentResponseCallback, this); +} + +void Authority::Private::authenticationAgentResponseCallback(GObject *object, GAsyncResult *result, + gpointer user_data) +{ + Authority *authority = (Authority*)user_data; + if (!authority) + { + return; + } + GError *error = NULL; + bool res = polkit_authority_authentication_agent_response_finish((PolkitAuthority*)object, result, + &error); + if (error != NULL) + { + // We don't want to set error if this is cancellation of some action + if (error->code != 1) + { + authority->d->setError(E_AgentResponseFailed, error->message); + } + g_error_free(error); + return; + } + + emit authority->authenticationAgentResponseFinished(res); +} + +void Authority::authenticationAgentResponseCancel() +{ + if (!g_cancellable_is_cancelled(d->m_authenticationAgentResponseCancellable)) + { + g_cancellable_cancel(d->m_authenticationAgentResponseCancellable); + } +} + +TemporaryAuthorization::List Authority::enumerateTemporaryAuthorizationsSync(const Subject &subject) +{ + TemporaryAuthorization::List result; + + GError *error = NULL; + GList *glist = polkit_authority_enumerate_temporary_authorizations_sync(d->pkAuthority, + subject.subject(), NULL, &error); + if (error != NULL) + { + d->setError(E_EnumFailed, error->message); + g_error_free(error); + return result; + } + + GList *glist2; + for (glist2 = glist; glist2 != NULL; glist2 = g_list_next(glist2)) + { + result.append(TemporaryAuthorization((PolkitTemporaryAuthorization*)glist2->data)); + g_object_unref(glist2->data); + } + g_list_free(glist); + return result; +} + +void Authority::Private::enumerateTemporaryAuthorizationsCallback(GObject *object, + GAsyncResult *result, gpointer user_data) +{ + Authority *authority = (Authority*)user_data; + if (!authority) + { + return; + } + + GError *error = NULL; + GList *glist = polkit_authority_enumerate_temporary_authorizations_finish((PolkitAuthority*)object, + result, &error); + if (error != NULL) + { + // We don't want to set error if this is cancellation of some action + if (error->code != 1) + { + authority->d->setError(E_EnumFailed, error->message); + } + g_error_free(error); + return; + } + TemporaryAuthorization::List res; + GList *glist2; + for (glist2 = glist; glist2 != NULL; glist2 = g_list_next(glist2)) + { + res.append(TemporaryAuthorization((PolkitTemporaryAuthorization*)glist2->data)); + g_object_unref(glist2->data); + } + g_list_free(glist); + emit authority->enumerateTemporaryAuthorizationsFinished(res); +} + +void Authority::enumerateTemporaryAuthorizationsCancel() +{ + if (!g_cancellable_is_cancelled(d->m_enumerateTemporaryAuthorizationsCancellable)) + { + g_cancellable_cancel(d->m_enumerateTemporaryAuthorizationsCancellable); + } +} + +bool Authority::revokeTemporaryAuthorizationsSync(const Subject &subject) +{ + if (Authority::instance()->hasError()) + { + return false; + } + + GError *error = NULL; + bool result = polkit_authority_revoke_temporary_authorizations_sync(d->pkAuthority, + subject.subject(), NULL, &error); + if (error != NULL) + { + d->setError(E_RevokeFailed, error->message); + g_error_free(error); + return false; + } + return result; +} + +void Authority::revokeTemporaryAuthorizations(const Subject &subject) +{ + if (Authority::instance()->hasError()) + { + return; + } + + polkit_authority_revoke_temporary_authorizations(d->pkAuthority, subject.subject(), + d->m_revokeTemporaryAuthorizationsCancellable, + d->revokeTemporaryAuthorizationsCallback, this); +} + +void Authority::Private::revokeTemporaryAuthorizationsCallback(GObject *object, + GAsyncResult *result, gpointer user_data) +{ + Authority *authority = (Authority*)user_data; + if (!authority) + { + return; + } + + GError *error = NULL; + bool res = polkit_authority_revoke_temporary_authorizations_finish((PolkitAuthority*)object, result, &error); + if (error != NULL) + { + // We don't want to set error if this is cancellation of some action + if (error->code != 1) + { + authority->d->setError(E_RevokeFailed, error->message); + } + g_error_free(error); + return; + } + + emit authority->revokeTemporaryAuthorizationsFinished(res); +} + +void Authority::revokeTemporaryAuthorizationsCancel() +{ + if (!g_cancellable_is_cancelled(d->m_revokeTemporaryAuthorizationsCancellable)) + { + g_cancellable_cancel(d->m_revokeTemporaryAuthorizationsCancellable); + } +} + +bool Authority::revokeTemporaryAuthorizationSync(const TQString &id) +{ + if (Authority::instance()->hasError()) + { + return false; + } + + GError *error = NULL; + bool result = polkit_authority_revoke_temporary_authorization_by_id_sync(d->pkAuthority, + id.utf8().data(), NULL, &error); + if (error != NULL) + { + d->setError(E_RevokeFailed, error->message); + g_error_free(error); + return false; + } + return result; +} + +void Authority::revokeTemporaryAuthorization(const TQString &id) +{ + if (Authority::instance()->hasError()) + { + return; + } + + polkit_authority_revoke_temporary_authorization_by_id(d->pkAuthority, id.utf8().data(), + d->m_revokeTemporaryAuthorizationCancellable, + d->revokeTemporaryAuthorizationCallback, this); +} + +void Authority::Private::revokeTemporaryAuthorizationCallback(GObject *object, + GAsyncResult *result, gpointer user_data) +{ + Authority *authority = (Authority*)user_data; + if (!authority) + { + return; + } + + GError *error = NULL; + bool res = polkit_authority_revoke_temporary_authorization_by_id_finish((PolkitAuthority*)object, + result, &error); + if (error != NULL) + { + // We don't want to set error if this is cancellation of some action + if (error->code != 1) + { + authority->d->setError(E_RevokeFailed, error->message); + } + g_error_free(error); + return; + } + + emit authority->revokeTemporaryAuthorizationFinished(res); +} + +void Authority::revokeTemporaryAuthorizationCancel() +{ + if (!g_cancellable_is_cancelled(d->m_revokeTemporaryAuthorizationCancellable)) + { + g_cancellable_cancel(d->m_revokeTemporaryAuthorizationCancellable); + } +} + +} + +#include "polkit-tqt-authority.moc" + diff --git a/core/polkittqt1-authority.h b/core/polkit-tqt-authority.h index ae71a86b2..6d79d91af 100644 --- a/core/polkittqt1-authority.h +++ b/core/polkit-tqt-authority.h @@ -21,20 +21,21 @@ * Boston, MA 02110-1301, USA. */ -#ifndef POLKITTQT1_AUTHORITY_H -#define POLKITTQT1_AUTHORITY_H +#ifndef POLKIT_TQT_AUTHORITY_H +#define POLKIT_TQT_AUTHORITY_H #include "polkit-tqt-export.h" -#include "polkittqt1-identity.h" -#include "polkittqt1-subject.h" -#include "polkittqt1-temporaryauthorization.h" -#include "polkittqt1-actiondescription.h" +#include "polkit-tqt-identity.h" +#include "polkit-tqt-subject.h" +#include "polkit-tqt-temporaryauthorization.h" +#include "polkit-tqt-actiondescription.h" -#include <TQtCore/TQObject> -#include <TQtCore/TQMetaType> +#include "tqobject.h" typedef struct _PolkitAuthority PolkitAuthority; -class TQStringList; + +class TQString; + /** * \namespace PolkitTQt PolkitTQt @@ -47,14 +48,14 @@ namespace PolkitTQt { /** - * \class Authority polkittqt1-authority.h Authority + * \class Authority polkit-tqt-authority.h Authority * \author Daniel Nicoletti <dantti85-pk@yahoo.com.br> * \author Dario Freddi <drf@kde.org> * \author Jaroslav Reznik <jreznik@redhat.com> * - * \brief Convenience class for TQt/KDE applications + * \brief Convenience class for TQt/TDE applications * - * This class is a singleton that provides makes easy the usage + * This class is a singleton that makes easy the usage * of PolKitAuthority. It emits configChanged() * whenever PolicyKit files change (e.g. the PolicyKit.conf * or .policy files) or when ConsoleKit reports activities changes. @@ -65,58 +66,58 @@ namespace PolkitTQt */ class POLKIT_TQT_EXPORT Authority : public TQObject { - Q_OBJECT - TQ_DISABLE_COPY(Authority) - TQ_ENUMS(Result) - TQ_ENUMS(ErrorCode) -public: - enum Result { - /** Result unknown */ - Unknown = 0x00, - /** The subject is authorized for the specified action */ - Yes = 0x01, - /** The subject is not authorized for the specified action */ - No = 0x02, - /** The subject is authorized if more information is provided */ - Challenge = 0x03 + Q_OBJECT + + public: + enum Result + { + /** Result unknown */ + Unknown = 0x00, + /** The subject is authorized for the specified action */ + Yes = 0x01, + /** The subject is not authorized for the specified action */ + No = 0x02, + /** The subject is authorized if more information is provided */ + Challenge = 0x03 }; - enum AuthorizationFlag { - /** No flags set **/ - None = 0x00, - /** If the subject can obtain the authorization through authentication, - * and an authentication agent is available, then attempt to do so. - * - * Note, this means that the method used for checking authorization is likely - * to block for a long time. **/ - AllowUserInteraction = 0x01 + enum AuthorizationFlags + { + /** No flags set **/ + None = 0x00, + /** If the subject can obtain the authorization through authentication, + * and an authentication agent is available, then attempt to do so. + * + * Note, this means that the method used for checking authorization is likely + * to block for a long time. **/ + AllowUserInteraction = 0x01 }; - TQ_DECLARE_FLAGS(AuthorizationFlags, AuthorizationFlag) /** Error codes for the authority class */ - enum ErrorCode { - /** No error occurred **/ - E_None = 0x00, - /** Authority cannot be obtained **/ - E_GetAuthority = 0x01, - /** Authority check failed **/ - E_CheckFailed = 0x02, - /** Wrong or empty subject was given **/ - E_WrongSubject = 0x03, - /** Action returned unknown result **/ - E_UnknownResult = 0x04, - /** Enumerating actions failed **/ - E_EnumFailed = 0x05, - /** Registration of authentication agent failed **/ - E_RegisterFailed = 0x06, - /** Unregistration of authentication agent failed **/ - E_UnregisterFailed = 0x07, - /** Cookie or polkittqt1-identity.handled to the action is empty **/ - E_CookieOrIdentityEmpty = 0x08, - /** Response of auth agent failed **/ - E_AgentResponseFailed = 0x09, - /** Revoke temporary authorizations failed **/ - E_RevokeFailed = 0x0A + enum ErrorCode + { + /** No error occurred **/ + E_None = 0x00, + /** Authority cannot be obtained **/ + E_GetAuthority = 0x01, + /** Authority check failed **/ + E_CheckFailed = 0x02, + /** Wrong or empty subject was given **/ + E_WrongSubject = 0x03, + /** Action returned unknown result **/ + E_UnknownResult = 0x04, + /** Enumerating actions failed **/ + E_EnumFailed = 0x05, + /** Registration of authentication agent failed **/ + E_RegisterFailed = 0x06, + /** Unregistration of authentication agent failed **/ + E_UnregisterFailed = 0x07, + /** Cookie or polkittqt1-identity.handled to the action is empty **/ + E_CookieOrIdentityEmpty = 0x08, + /** Response of auth agent failed **/ + E_AgentResponseFailed = 0x09, + /** Revoke temporary authorizations failed **/ + E_RevokeFailed = 0x0A }; /** @@ -136,7 +137,7 @@ public: * * \return The current authority instance */ - static Authority *instance(PolkitAuthority *authority = 0); + static Authority* instance(PolkitAuthority *authority = NULL); ~Authority(); @@ -177,7 +178,7 @@ public: * * \return the current PolkitAuthority instance */ - PolkitAuthority *polkitAuthority() const; + PolkitAuthority* polkitAuthority() const; /** * This function should be used by mechanisms (e.g.: helper applications). @@ -321,7 +322,8 @@ public: void unregisterAuthenticationAgentCancel(); /** - * Provide response that \p identity successfully authenticated for the authentication request identified by \p cookie. + * Provide response that \p identity successfully authenticated for the authentication + * request identified by \p cookie. * * \see authenticationAgentResponseSync Synchronous version of this method. * \see authenticationAgentResponseFinished Signal that is emitted when this method finishes. @@ -333,7 +335,8 @@ public: void authenticationAgentResponse(const TQString &cookie, const Identity &identity); /** - * Provide response that \p identity successfully authenticated for the authentication request identified by \p cookie. + * Provide response that \p identity successfully authenticated for the authentication + * request identified by \p cookie. * * \see authenticationAgentResponse Asynchronous version of this method. * @@ -343,7 +346,7 @@ public: * \return \c true if authority acknowledged the call, \c false if error is set. * */ - bool authenticationAgentResponseSync(const TQString& cookie, const PolkitTQt::Identity& identity); + bool authenticationAgentResponseSync(const TQString &cookie, const Identity &identity); /** * This method can be used to cancel the authenticationAgentResponseAsync method. @@ -436,43 +439,27 @@ public: */ void revokeTemporaryAuthorizationCancel(); -Q_SIGNALS: + signals: /** * This signal will be emitted when a configuration - * file gets changed (e.g. /etc/PolicyKit/PolicyKit.conf or - * .policy files). - * Connect to this signal if you want to track down - * actions. + * file gets changed (e.g. /etc/PolicyKit/PolicyKit.conf or .policy files). + * Connect to this signal if you want to track down actions. */ void configChanged(); /** - * This signal is emitted when ConsoleKit configuration - * changes. This might happen when a session becomes active - * or inactive. - * - * If you want to track your actions directly you should - * connect to this signal, as this might change the return value - * PolicyKit will give you. - * - * \note If you use Action you'll probably prefer to - * use the dataChanged() signal to track Action changes. - */ - void consoleKitDBChanged(); - - /** * This signal is emitted when asynchronous method checkAuthorization finishes. * * The argument is the result of authorization. */ - void checkAuthorizationFinished(PolkitTQt::Authority::Result); + void checkAuthorizationFinished(Result); /** * This signal is emitted when asynchronous method enumerateActions finishes. * * The argument is the list of all Action IDs. */ - void enumerateActionsFinished(PolkitTQt::ActionDescription::List); + void enumerateActionsFinished(ActionDescription::List); /** * This signal is emitted when asynchronous method registerAuthenticationAgent finishes. @@ -498,16 +485,16 @@ Q_SIGNALS: void authenticationAgentResponseFinished(bool); /** - * This signal is emmited when asynchronous method enumerateTemporaryAuthorizations finishes. + * This signal is emitted when asynchronous method enumerateTemporaryAuthorizations finishes. * * The argument is list of all temporary authorizations. * * \note Free all TemporaryAuthorization objects using \p delete operator. */ - void enumerateTemporaryAuthorizationsFinished(PolkitTQt::TemporaryAuthorization::List); + void enumerateTemporaryAuthorizationsFinished(TemporaryAuthorization::List); /** - * This signal is emmited when asynchronous method revokeTemporaryAuthorizations finishes. + * This signal is emitted when asynchronous method revokeTemporaryAuthorizations finishes. * * The argument is \c true if all temporary authorizations were revoked * \c false if the revoking failed @@ -515,25 +502,26 @@ Q_SIGNALS: void revokeTemporaryAuthorizationsFinished(bool); /** - * This signal is emmited when asynchronous method revokeTemporaryAuthorization finishes. + * This signal is emitted when asynchronous method revokeTemporaryAuthorization finishes. * \return \c true if the temporary authorization was revoked * \c false if the revoking failed */ void revokeTemporaryAuthorizationFinished(bool); -private: - explicit Authority(PolkitAuthority *context, TQObject *parent = 0); + private: + // Disable copy + Authority(const Authority&); + Authority& operator=(const Authority&); - class Private; - friend class Private; - Private * const d; + Authority(TQObject *parent = NULL); + + static Authority *m_theAuthority; - Q_PRIVATE_SLOT(d, void dbusFilter(const TQDBusMessage &message)) + class Private; + Private *const d; }; } -Q_DECLARE_OPERATORS_FOR_FLAGS(PolkitTQt::Authority::AuthorizationFlags) -Q_DECLARE_METATYPE(PolkitTQt::Authority::Result) - #endif + diff --git a/core/polkit-tqt-details.cpp b/core/polkit-tqt-details.cpp new file mode 100644 index 000000000..8fd8efa14 --- /dev/null +++ b/core/polkit-tqt-details.cpp @@ -0,0 +1,134 @@ +/* + * This file is part of the Polkit-tqt project + * Copyright (C) 2009 Radek Novacek <rnovacek@redhat.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <polkit/polkit.h> + +#include "polkit-tqt-details.h" + +#include <tqshared.h> +#include <tqstring.h> +#include <tqstringlist.h> + + +namespace PolkitTQt +{ + +//-------------------------------------- +// Details::Data +//-------------------------------------- + +class Details::Data : public TQShared +{ + public: + Data() : details(NULL) + { + } + + Data(const Data &other) : details(other.details) + { + g_object_ref(details); + } + + Data(PolkitDetails *_details) : details(_details) + { + g_object_ref(details); + } + + ~Data() + { + g_object_unref(details); + } + + PolkitDetails *details; +}; + +//-------------------------------------- +// Details +//-------------------------------------- + +Details::Details() : d(new Data) +{ + d->details = polkit_details_new(); +} + +Details::Details(PolkitDetails *pkDetails) : d(new Data(pkDetails)) +{ +} + +Details::Details(const Details &other) : d(other.d) +{ + d->ref(); +} + +Details& Details::operator=(const Details &other) +{ + if (d != other.d) + { + if (d->deref()) + { + delete d; + } + d = other.d; + d->ref(); + } + return *this; +} + +Details::~Details() +{ + if (d->deref()) + { + delete d; + } +} + +TQString Details::lookup(const TQString &key) const +{ + const gchar *result = polkit_details_lookup(d->details, key.utf8().data()); + if (result != NULL) + { + return TQString::fromUtf8(result); + } + else + { + return TQString::null; + } +} + +void Details::insert(const TQString &key, const TQString &value) +{ + polkit_details_insert(d->details, key.utf8().data(), value.utf8().data()); +} + +TQStringList Details::keys() const +{ + gchar **result = polkit_details_get_keys(d->details); + TQStringList list; + int len = g_strv_length(result); + for (int i = 0; i < len; i++) + { + list.append(TQString::fromUtf8(result[i])); + } + g_strfreev(result); + return list; +} + +} + diff --git a/core/polkittqt1-details.h b/core/polkit-tqt-details.h index 9bd71618f..ee0f4d35d 100644 --- a/core/polkittqt1-details.h +++ b/core/polkit-tqt-details.h @@ -18,16 +18,17 @@ * Boston, MA 02110-1301, USA. */ -#ifndef POLKITTQT1_DETAILS_H -#define POLKITTQT1_DETAILS_H +#ifndef POLKIT_TQT_DETAILS_H +#define POLKIT_TQT_DETAILS_H #include "polkit-tqt-export.h" -#include <TQtCore/TQObject> -#include <TQtCore/TQSharedData> - typedef struct _PolkitDetails PolkitDetails; +class TQString; +class TQStringList; + + /** * \namespace PolkitTQt PolkitTQt * @@ -39,18 +40,17 @@ namespace PolkitTQt { /** - * \class Details polkittqt1-details.h Details + * \class Details polkit-tqt-details.h Details * \author Radek Novacek <rnovacek@redhat.com> * * \brief Class used for passing details around. */ class POLKIT_TQT_EXPORT Details { -public: - /** - * Creates a new Details object - */ + public: Details(); + Details(const Details &other); + ~Details(); /** * Creates Details object from PolkitDetails @@ -61,9 +61,7 @@ public: */ explicit Details(PolkitDetails *pkDetails); - ~Details(); - - Details &operator=(const Details &other); + Details& operator=(const Details &other); /** * Get the value for \p key @@ -87,11 +85,13 @@ public: * \return List of all keys. */ TQStringList keys() const; -private: + + private: class Data; Data *d; }; } -#endif // DETAILS_H +#endif + diff --git a/core/polkit-tqt-identity.cpp b/core/polkit-tqt-identity.cpp new file mode 100644 index 000000000..2649e21f5 --- /dev/null +++ b/core/polkit-tqt-identity.cpp @@ -0,0 +1,219 @@ +/* + * This file is part of the Polkit-tqt project + * Copyright (C) 2009 Lukas Tinkl <ltinkl@redhat.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <polkit/polkit.h> + +#include "polkit-tqt-identity.h" + +#include <tqshared.h> +#include <tqstring.h> + + +namespace PolkitTQt +{ + +//-------------------------------------- +// Identity::Data +//-------------------------------------- + +class Identity::Data : public TQShared +{ + public: + Data() : identity(NULL) + { + } + + Data(const Data &other) : identity(other.identity) + { + g_object_ref(identity); + } + + Data(PolkitIdentity *_identity) : identity(_identity) + { + g_object_ref(identity); + } + + ~Data() + { + g_object_unref(identity); + } + + PolkitIdentity *identity; +}; + +//-------------------------------------- +// Identity +//-------------------------------------- + +Identity::Identity() : d(new Data) +{ +} + +Identity::Identity(PolkitIdentity *pkIdentity) : d(new Data(pkIdentity)) +{ +} + +Identity::Identity(const Identity &other) : d(other.d) +{ + d->ref(); +} + +Identity& Identity::operator=(const Identity &other) +{ + if (d != other.d) + { + if (d->deref()) + { + delete d; + } + d = other.d; + d->ref(); + } + return *this; +} + +Identity::~Identity() +{ + if (d->deref()) + { + delete d; + } +} + +bool Identity::isValid() const +{ + return (d->identity != NULL); +} + +PolkitIdentity* Identity::identity() const +{ + return d->identity; +} + +void Identity::setIdentity(PolkitIdentity *identity) +{ + if (d->identity != identity) + { + g_object_unref(d->identity); + d->identity = identity; + g_object_ref(identity); + } +} + +TQString Identity::toString() const +{ + if (!d->identity) + { + return TQString::null; + } + return TQString::fromUtf8(polkit_identity_to_string(d->identity)); +} + +Identity Identity::fromString(const TQString &string) +{ + if (string.isEmpty()) + { + tqWarning(TQString("Cannot create valid Identity from empty string.")); + return Identity(); + } + + GError *error = NULL; + PolkitIdentity *poliden = polkit_identity_from_string(string.utf8().data(), &error); + if (error != NULL) + { + tqWarning(TQString("Cannot create valid Identity from string: %1").arg(error->message)); + return Identity(); + } + + return Identity(poliden); +} + +//-------------------------------------- +// UnixUserIdentity +//-------------------------------------- + +UnixUserIdentity::UnixUserIdentity(const TQString &name) : Identity() +{ + GError *error = NULL; + setIdentity(polkit_unix_user_new_for_name(name.utf8().data(), &error)); + if (error != NULL) + { + tqWarning(TQString("Cannot create UnixUserIdentity: %1").arg(error->message)); + setIdentity(NULL); + } +} + +UnixUserIdentity::UnixUserIdentity(uid_t uid) : Identity() +{ + setIdentity(polkit_unix_user_new(uid)); +} + +UnixUserIdentity::UnixUserIdentity(PolkitUnixUser *pkUnixUser) + : Identity((PolkitIdentity*)pkUnixUser) +{ +} + +uid_t UnixUserIdentity::uid() const +{ + return polkit_unix_user_get_uid((PolkitUnixUser*)identity()); +} + +void UnixUserIdentity::setUid(uid_t uid) +{ + polkit_unix_user_set_uid((PolkitUnixUser*)identity(), uid); +} + +//-------------------------------------- +// UnixGroupIdentity +//-------------------------------------- + +UnixGroupIdentity::UnixGroupIdentity(const TQString &name) : Identity() +{ + GError *error = NULL; + setIdentity(polkit_unix_group_new_for_name(name.utf8().data(), &error)); + if (error != NULL) + { + tqWarning(TQString("Cannot create UnixGroupIdentity: %1").arg(error->message)); + setIdentity(NULL); + } +} + +UnixGroupIdentity::UnixGroupIdentity(gid_t gid) : Identity() +{ + setIdentity(polkit_unix_group_new(gid)); +} + +UnixGroupIdentity::UnixGroupIdentity(PolkitUnixGroup *pkUnixGroup) + : Identity((PolkitIdentity*)pkUnixGroup) +{ +} + +gid_t UnixGroupIdentity::gid() const +{ + return polkit_unix_group_get_gid((PolkitUnixGroup*)identity()); +} + +void UnixGroupIdentity::setGid(gid_t gid) +{ + polkit_unix_group_set_gid((PolkitUnixGroup*)identity(), gid); +} + +} + diff --git a/core/polkittqt1-identity.h b/core/polkit-tqt-identity.h index 2ea984eee..230bd9216 100644 --- a/core/polkittqt1-identity.h +++ b/core/polkit-tqt-identity.h @@ -18,20 +18,21 @@ * Boston, MA 02110-1301, USA. */ -#ifndef POLKITTQT1_IDENTITY_H -#define POLKITTQT1_IDENTITY_H +#ifndef POLKIT_TQT_IDENTITY_H +#define POLKIT_TQT_IDENTITY_H #include "polkit-tqt-export.h" #include <unistd.h> -#include <TQtCore/TQObject> -#include <TQtCore/TQSharedData> - -typedef struct _PolkitIdentity PolkitIdentity; -typedef struct _PolkitUnixUser PolkitUnixUser; +typedef struct _PolkitIdentity PolkitIdentity; +typedef struct _PolkitUnixUser PolkitUnixUser; typedef struct _PolkitUnixGroup PolkitUnixGroup; +class TQString; +template<typename> class TQValueList; + + /** * \namespace PolkitTQt PolkitTQt * @@ -42,11 +43,8 @@ typedef struct _PolkitUnixGroup PolkitUnixGroup; namespace PolkitTQt { -class UnixUserIdentity; -class UnixGroupIdentity; - /** - * \class Identity polkittqt1-identity.h Identity + * \class Identity polkit-tqt-identity.h Identity * \author Lukas Tinkl <ltinkl@redhat.com> * * This class encapsulates the PolkitIdentity interface. @@ -58,17 +56,29 @@ class UnixGroupIdentity; */ class POLKIT_TQT_EXPORT Identity { -public: - typedef TQList< Identity > List; + public: + typedef TQValueList<Identity> List; Identity(); - explicit Identity(PolkitIdentity *polkitIdentity); Identity(const Identity &other); - ~Identity(); - Identity &operator=(const Identity &other); + /** + * Creates an Identity object from PolkitIdentity + * + * \warning It shouldn't be used directly unless you are completely aware of what are you doing + * + * \param pkIdentity PolkitIdentity object + */ + explicit Identity(PolkitIdentity *pkIdentity); + + Identity& operator=(const Identity &other); + /** + * Check whether an identity is valid + * + * \return true is the identity is valid + */ bool isValid() const; /** @@ -83,13 +93,10 @@ public: * * \param string string representation of the object * - * \return Pointer to new Identity instance + * \return the new Identity instance */ static Identity fromString(const TQString &string); - UnixUserIdentity toUnixUserIdentity(); - UnixGroupIdentity toUnixGroupIdentity(); - /** * Gets PolkitIdentity object. * @@ -97,17 +104,17 @@ public: * * \return Pointer to PolkitIdentity instance */ - PolkitIdentity *identity() const; -protected: + PolkitIdentity* identity() const; + void setIdentity(PolkitIdentity *identity); -private: + private: class Data; Data *d; }; /** - * \class UnixUserIdentity polkittqt1-identity.h Identity + * \class UnixUserIdentity polkit-tqt-identity.h Identity * * An object representing a user identity on a UNIX system. * @@ -116,8 +123,7 @@ private: */ class POLKIT_TQT_EXPORT UnixUserIdentity : public Identity { -public: - UnixUserIdentity(); + public: /** * Creates UnixUser object by UID of the user * @@ -157,7 +163,7 @@ public: }; /** - * \class UnixGroupIdentity polkittqt1-identity.h Identity + * \class UnixGroupIdentity polkit-tqt-identity.h Identity * * An object representing a group identity on a UNIX system. * @@ -166,8 +172,7 @@ public: */ class POLKIT_TQT_EXPORT UnixGroupIdentity : public Identity { -public: - UnixGroupIdentity(); + public: /** * Creates UnixGroup object by GID of the group * @@ -208,4 +213,5 @@ public: } -#endif // POLKIT_TQT_IDENTITY_H +#endif + diff --git a/core/polkit-tqt-subject.cpp b/core/polkit-tqt-subject.cpp index c243d7d5a..1fa8d710f 100644 --- a/core/polkit-tqt-subject.cpp +++ b/core/polkit-tqt-subject.cpp @@ -18,12 +18,12 @@ * Boston, MA 02110-1301, USA. */ +#include <polkit/polkit.h> + #include "polkit-tqt-subject.h" -#include <tqglobal.h> #include <tqshared.h> - -#include <polkit/polkit.h> +#include <tqstring.h> namespace PolkitTQt @@ -66,7 +66,7 @@ Subject::Subject() : d(new Data) { } -Subject::Subject(PolkitSubject *subject) : d(new Data(subject)) +Subject::Subject(PolkitSubject *pkSubject) : d(new Data(pkSubject)) { } diff --git a/core/polkit-tqt-subject.h b/core/polkit-tqt-subject.h index 5c92b7cff..493a44527 100644 --- a/core/polkit-tqt-subject.h +++ b/core/polkit-tqt-subject.h @@ -1,5 +1,5 @@ /* - * This file is part of the PolKit1-tqt project + * This file is part of the PolKit-tqt project * Copyright (C) 2009 Jaroslav Reznik <jreznik@redhat.com> * * This library is free software; you can redistribute it and/or @@ -23,8 +23,8 @@ #include "polkit-tqt-export.h" -typedef struct _PolkitSubject PolkitSubject; -typedef struct _PolkitUnixProcess PolkitUnixProcess; +typedef struct _PolkitSubject PolkitSubject; +typedef struct _PolkitUnixProcess PolkitUnixProcess; typedef struct _PolkitSystemBusName PolkitSystemBusName; class TQString; @@ -59,10 +59,19 @@ class POLKIT_TQT_EXPORT Subject Subject(const Subject &other); ~Subject(); + /** + * Creates a Subject object from PolkitSubject + * + * \warning It shouldn't be used directly unless you are completely aware of what are you doing + * + * \param pkSubject PolkitSubject object + */ + explicit Subject(PolkitSubject *pkSubject); + Subject& operator=(const Subject &other); /** - * Check whether a message is valid + * Check whether a subject is valid * * \return true is the subject is valid */ @@ -93,9 +102,6 @@ class POLKIT_TQT_EXPORT Subject */ PolkitSubject* subject() const; - protected: - Subject(PolkitSubject *subject); - void setSubject(PolkitSubject *subject); private: diff --git a/core/polkit-tqt-temporaryauthorization.cpp b/core/polkit-tqt-temporaryauthorization.cpp new file mode 100644 index 000000000..b87744e68 --- /dev/null +++ b/core/polkit-tqt-temporaryauthorization.cpp @@ -0,0 +1,141 @@ +/* + * This file is part of the PolKit-tqt project + * Copyright (C) 2009 Radek Novacek <rnovacek@redhat.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <polkit/polkit.h> + +#include "polkit-tqt-temporaryauthorization.h" +#include "polkit-tqt-authority.h" + +#include <tqdatetime.h> +#include <tqshared.h> +#include <tqstring.h> + + + +namespace PolkitTQt +{ + +//-------------------------------------- +// TemporaryAuthorization::Data +//-------------------------------------- + +class TemporaryAuthorization::Data : public TQShared +{ + public: + Data() : id(TQString::null) , actionId(TQString::null), subject(), + timeObtained(TQDateTime()), timeExpires(TQDateTime()) + { + } + + Data(const Data& other) : id(other.id), actionId(other.actionId), subject(other.subject), + timeObtained(other.timeObtained), timeExpires(other.timeExpires) + { + } + + ~Data() + { + } + + TQString id; + TQString actionId; + Subject subject; + TQDateTime timeObtained; + TQDateTime timeExpires; +}; + +//-------------------------------------- +// TemporaryAuthorization +//-------------------------------------- + +TemporaryAuthorization::TemporaryAuthorization() : d(new Data) +{ +} + +TemporaryAuthorization::TemporaryAuthorization(PolkitTemporaryAuthorization *pkTemporaryAuthorization) : d(new Data) +{ + d->id = TQString::fromUtf8(polkit_temporary_authorization_get_id(pkTemporaryAuthorization)); + d->actionId = TQString::fromUtf8(polkit_temporary_authorization_get_action_id(pkTemporaryAuthorization)); + d->subject = Subject::fromString(polkit_subject_to_string(polkit_temporary_authorization_get_subject(pkTemporaryAuthorization))); + d->timeObtained = TQDateTime(); + d->timeObtained.setTime_t(polkit_temporary_authorization_get_time_obtained(pkTemporaryAuthorization)); + d->timeExpires = TQDateTime(); + d->timeExpires.setTime_t(polkit_temporary_authorization_get_time_expires(pkTemporaryAuthorization)); +} + +TemporaryAuthorization::TemporaryAuthorization(const TemporaryAuthorization &other) : d(other.d) +{ + d->ref(); +} + +TemporaryAuthorization& TemporaryAuthorization::operator=(const PolkitTQt::TemporaryAuthorization& other) +{ + if (d != other.d) + { + if (d->deref()) + { + delete d; + } + d = other.d; + d->ref(); + } + return *this; +} + +TemporaryAuthorization::~TemporaryAuthorization() +{ + if (d->deref()) + { + delete d; + } +} + +TQString TemporaryAuthorization::id() const +{ + return d->id; +} + +TQString TemporaryAuthorization::actionId() const +{ + return d->actionId; +} + +Subject TemporaryAuthorization::subject() const +{ + return d->subject; +} + +TQDateTime TemporaryAuthorization::obtainedAt() const +{ + return d->timeObtained; +} + +TQDateTime TemporaryAuthorization::expirationTime() const +{ + return d->timeExpires; +} + +bool TemporaryAuthorization::revoke() +{ + Authority::instance()->revokeTemporaryAuthorization(id()); + return true; +} + +} + diff --git a/core/polkittqt1-temporaryauthorization.h b/core/polkit-tqt-temporaryauthorization.h index cdcbda097..505396500 100644 --- a/core/polkittqt1-temporaryauthorization.h +++ b/core/polkit-tqt-temporaryauthorization.h @@ -1,5 +1,5 @@ /* - * This file is part of the PolKit1-qt project + * This file is part of the PolKit-tqt project * Copyright (C) 2009 Radek Novacek <rnovacek@redhat.com> * * This library is free software; you can redistribute it and/or @@ -18,18 +18,19 @@ * Boston, MA 02110-1301, USA. */ -#ifndef POLKITTQT1_TEMPORARYAUTHORIZATION_H -#define POLKITTQT1_TEMPORARYAUTHORIZATION_H +#ifndef POLKIT_TQT_TEMPORARY_AUTHORIZATION_H +#define POLKIT_TQT_TEMPORARY_AUTHORIZATION_H -#include "polkittqt1-subject.h" - -#include <TQtCore/TQObject> -#include <TQtCore/TQDateTime> -#include <TQtCore/TQMetaType> -#include <TQtCore/TQSharedData> +#include "polkit-tqt-export.h" +#include "polkit-tqt-subject.h" typedef struct _PolkitTemporaryAuthorization PolkitTemporaryAuthorization; +class TQDateTime; +class TQString; +template<typename> class TQValueList; + + /** * \namespace PolkitTQt PolkitTQt * @@ -41,7 +42,7 @@ namespace PolkitTQt { /** - * \class TemporaryAuthorization polkittqt1-temporaryauthorization.h TemporaryAuthorization + * \class TemporaryAuthorization polkit-tqt-temporaryauthorization.h TemporaryAuthorization * \author Radek Novacek <rnovacek@redhat.com> * * \brief This class represents PolicyKit temporary authorization @@ -50,23 +51,23 @@ namespace PolkitTQt */ class POLKIT_TQT_EXPORT TemporaryAuthorization { -public: - typedef TQList< TemporaryAuthorization > List; + public: + typedef TQValueList<TemporaryAuthorization> List; + TemporaryAuthorization(); + TemporaryAuthorization(const TemporaryAuthorization &other); + ~TemporaryAuthorization(); + /** * Creates TemporaryAuthorization object from PolkitTemporaryAuthorization * * \warning It shouldn't be used directly unless you are completely aware of what are you doing * * \param pkTemporaryAuthorization PolkitTemporaryAuthorization object - * \param parent */ - explicit TemporaryAuthorization(PolkitTemporaryAuthorization *pkTemporaryAuthorization); - TemporaryAuthorization(const TemporaryAuthorization &other); + TemporaryAuthorization(PolkitTemporaryAuthorization *pkTemporaryAuthorization); - ~TemporaryAuthorization(); - - TemporaryAuthorization &operator=(const TemporaryAuthorization &other); + TemporaryAuthorization& operator=(const TemporaryAuthorization &other); /** * \brief Gets the identifier for the authorization. @@ -113,12 +114,12 @@ public: */ bool revoke(); -private: + private: class Data; - TQSharedDataPointer< Data > d; + Data *d; }; + } -TQ_DECLARE_METATYPE(PolkitTQt::TemporaryAuthorization::List) +#endif -#endif // TEMPORARYAUTHORIZATION_H diff --git a/core/polkittqt1-actiondescription.cpp b/core/polkittqt1-actiondescription.cpp deleted file mode 100644 index c9f57f64f..000000000 --- a/core/polkittqt1-actiondescription.cpp +++ /dev/null @@ -1,148 +0,0 @@ -/* - * This file is part of the Polkit-tqt project - * Copyright (C) 2009 Jaroslav Reznik <jreznik@redhat.com> - * Copyright (C) 2010 Dario Freddi <drf@kde.org> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -#include "polkittqt1-actiondescription.h" - -#include <TQtCore/TQString> - -#include <polkit/polkit.h> - -namespace PolkitTQt -{ - -class ActionDescription::Data : public TQSharedData -{ -public: - Data() {} - Data(const Data& other) - : TQSharedData(other) - , actionId(other.actionId) - , description(other.description) - , message(other.message) - , vendorName(other.vendorName) - , vendorUrl(other.vendorUrl) - , iconName(other.iconName) - , implicitAny(other.implicitAny) - , implicitInactive(other.implicitInactive) - , implicitActive(other.implicitActive) - { - } - virtual ~Data() {} - - TQString actionId; - TQString description; - TQString message; - TQString vendorName; - TQString vendorUrl; - TQString iconName; - - ActionDescription::ImplicitAuthorization implicitAny; - ActionDescription::ImplicitAuthorization implicitInactive; - ActionDescription::ImplicitAuthorization implicitActive; -}; - -ActionDescription::ActionDescription() - : d(new Data) -{ - -} - -ActionDescription::ActionDescription(PolkitActionDescription *polkitActionDescription) - : d(new Data) -{ - g_type_init(); - - d->actionId = TQString::fromUtf8(polkit_action_description_get_action_id(polkitActionDescription)); - d->description = TQString::fromUtf8(polkit_action_description_get_description(polkitActionDescription)); - d->message = TQString::fromUtf8(polkit_action_description_get_message(polkitActionDescription)); - d->vendorName = TQString::fromUtf8(polkit_action_description_get_vendor_name(polkitActionDescription)); - d->vendorUrl = TQString::fromUtf8(polkit_action_description_get_vendor_url(polkitActionDescription)); - d->iconName = TQString::fromUtf8(polkit_action_description_get_icon_name(polkitActionDescription)); - - d->implicitAny = static_cast<ActionDescription::ImplicitAuthorization>(polkit_action_description_get_implicit_any( - polkitActionDescription)); - d->implicitInactive = static_cast<ActionDescription::ImplicitAuthorization>(polkit_action_description_get_implicit_inactive( - polkitActionDescription)); - d->implicitActive = static_cast<ActionDescription::ImplicitAuthorization>(polkit_action_description_get_implicit_active( - polkitActionDescription)); -} - -ActionDescription::ActionDescription(const PolkitTQt::ActionDescription& other) - : d(other.d) -{ -} - -ActionDescription& ActionDescription::operator=(const PolkitTQt::ActionDescription& other) -{ - d = other.d; - return *this; -} - -ActionDescription::~ActionDescription() -{ -} - -TQString ActionDescription::actionId() const -{ - return d->actionId; -} - -TQString ActionDescription::description() const -{ - return d->description; -} - -TQString ActionDescription::message() const -{ - return d->message; -} - -TQString ActionDescription::vendorName() const -{ - return d->vendorName; -} - -TQString ActionDescription::vendorUrl() const -{ - return d->vendorUrl; -} - -TQString ActionDescription::iconName() const -{ - return d->iconName; -} - -ActionDescription::ImplicitAuthorization ActionDescription::implicitAny() const -{ - return d->implicitAny; -} - -ActionDescription::ImplicitAuthorization ActionDescription::implicitInactive() const -{ - return d->implicitInactive; -} - -ActionDescription::ImplicitAuthorization ActionDescription::implicitActive() const -{ - return d->implicitActive; -} - -} diff --git a/core/polkittqt1-authority.cpp b/core/polkittqt1-authority.cpp deleted file mode 100644 index ecdfc17ac..000000000 --- a/core/polkittqt1-authority.cpp +++ /dev/null @@ -1,855 +0,0 @@ -/* - * This file is part of the Polkit-tqt project - * Copyright (C) 2009 Daniel Nicoletti <dantti85-pk@yahoo.com.br> - * Copyright (C) 2009 Dario Freddi <drf@kde.org> - * Copyright (C) 2009 Jaroslav Reznik <jreznik@redhat.com> - * Copyright (C) 2009 Radek Novacek <rnovacek@redhat.com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -#include "polkittqt1-authority.h" - -#include <TQtDBus/TQDBusInterface> -#include <TQtDBus/TQDBusReply> - -#include <polkit/polkit.h> - -namespace PolkitTQt -{ - -class AuthorityHelper -{ -public: - AuthorityHelper() : q(0) {} - ~AuthorityHelper() { - delete q; - } - Authority *q; -}; - -TQ_GLOBAL_STATIC(AuthorityHelper, s_globalAuthority) - -Authority *Authority::instance(PolkitAuthority *authority) -{ - if (!s_globalAuthority()->q) { - new Authority(authority); - } - - return s_globalAuthority()->q; -} - -Authority::Result polkitResultToResult(PolkitAuthorizationResult *result) -{ - if (polkit_authorization_result_get_is_challenge(result)) { - return Authority::Challenge; - } else if (polkit_authorization_result_get_is_authorized(result)) { - return Authority::Yes; - } else { - return Authority::No; - } -} - -ActionDescription::List actionsToListAndFree(GList *glist) -{ - ActionDescription::List result; - for (GList *glist2 = glist; glist2; glist2 = g_list_next(glist2)) { - gpointer i = glist2->data; - result.append(ActionDescription(static_cast<PolkitActionDescription *>(i))); - g_object_unref(i); - } - - g_list_free(glist); - return result; -} - -class Authority::Private -{ -public: - // Polkit will return NULL on failures, hence we use it instead of 0 - Private(Authority *qq) : q(qq) - , pkAuthority(NULL) - , m_hasError(false) {} - - ~Private(); - - void init(); - - /** Use this method to set the error message to \p message. Set recover to \c true - * to try to reinitialize this object with init() method - */ - void setError(Authority::ErrorCode code, const TQString &details = TQString(), bool recover = false); - - void dbusFilter(const TQDBusMessage &message); - void dbusSignalAdd(const TQString &service, const TQString &path, const TQString &interface, const TQString &name); - void seatSignalsConnect(const TQString &seat); - - Authority *q; - PolkitAuthority *pkAuthority; - bool m_hasError; - Authority::ErrorCode m_lastError; - TQString m_errorDetails; - TQDBusConnection *m_systemBus; - GCancellable *m_checkAuthorizationCancellable, - *m_enumerateActionsCancellable, - *m_registerAuthenticationAgentCancellable, - *m_unregisterAuthenticationAgentCancellable, - *m_authenticationAgentResponseCancellable, - *m_enumerateTemporaryAuthorizationsCancellable, - *m_revokeTemporaryAuthorizationsCancellable, - *m_revokeTemporaryAuthorizationCancellable; - - - static void pk_config_changed(); - static void checkAuthorizationCallback(GObject *object, GAsyncResult *result, gpointer user_data); - static void enumerateActionsCallback(GObject *object, GAsyncResult *result, gpointer user_data); - static void registerAuthenticationAgentCallback(GObject *object, GAsyncResult *result, gpointer user_data); - static void unregisterAuthenticationAgentCallback(GObject *object, GAsyncResult *result, gpointer user_data); - static void authenticationAgentResponseCallback(GObject *object, GAsyncResult *result, gpointer user_data); - static void enumerateTemporaryAuthorizationsCallback(GObject *object, GAsyncResult *result, gpointer user_data); - static void revokeTemporaryAuthorizationsCallback(GObject *object, GAsyncResult *result, gpointer user_data); - static void revokeTemporaryAuthorizationCallback(GObject *object, GAsyncResult *result, gpointer user_data); -}; - -Authority::Private::~Private() -{ - g_object_unref(m_checkAuthorizationCancellable); - g_object_unref(m_enumerateActionsCancellable); - g_object_unref(m_registerAuthenticationAgentCancellable); - g_object_unref(m_unregisterAuthenticationAgentCancellable); - g_object_unref(m_authenticationAgentResponseCancellable); - g_object_unref(m_enumerateTemporaryAuthorizationsCancellable); - g_object_unref(m_revokeTemporaryAuthorizationsCancellable); - g_object_unref(m_revokeTemporaryAuthorizationCancellable); -} - -Authority::Authority(PolkitAuthority *authority, TQObject *parent) - : TQObject(parent) - , d(new Private(this)) -{ - qRegisterMetaType<PolkitTQt::Authority::Result> (); - qRegisterMetaType<PolkitTQt::ActionDescription::List>(); - - Q_ASSERT(!s_globalAuthority()->q); - s_globalAuthority()->q = this; - - if (authority) { - d->pkAuthority = authority; - } - - d->init(); -} - -Authority::~Authority() -{ - if (d->pkAuthority != NULL) { - g_object_unref(d->pkAuthority); - } - - delete d; -} - -void Authority::Private::init() -{ - TQDBusError error; - TQDBusError dbus_error; - - g_type_init(); - - m_checkAuthorizationCancellable = g_cancellable_new(); - m_enumerateActionsCancellable = g_cancellable_new(); - m_registerAuthenticationAgentCancellable = g_cancellable_new(); - m_unregisterAuthenticationAgentCancellable = g_cancellable_new(); - m_authenticationAgentResponseCancellable = g_cancellable_new(); - m_enumerateTemporaryAuthorizationsCancellable = g_cancellable_new(); - m_revokeTemporaryAuthorizationsCancellable = g_cancellable_new(); - m_revokeTemporaryAuthorizationCancellable = g_cancellable_new(); - -#ifndef POLKIT_TQT_1_COMPATIBILITY_MODE - GError *gerror = NULL; -#endif - if (pkAuthority == NULL) { -#ifndef POLKIT_TQT_1_COMPATIBILITY_MODE - pkAuthority = polkit_authority_get_sync(NULL, &gerror); - if (gerror != NULL) { - setError(E_GetAuthority, gerror->message); - g_error_free(gerror); - return; - } -#else - pkAuthority = polkit_authority_get(); -#endif - } - - if (pkAuthority == NULL) { -#ifdef POLKIT_TQT_1_COMPATIBILITY_MODE - (E_GetAuthority); -#endif - return; - } - - // connect changed signal - g_signal_connect(G_OBJECT(pkAuthority), "changed", G_CALLBACK(pk_config_changed), NULL); - - // need to listen to NameOwnerChanged - dbusSignalAdd("org.freedesktop.DBus", "/", "org.freedesktop.DBus", "NameOwnerChanged"); - - TQString consoleKitService("org.freedesktop.ConsoleKit"); - TQString consoleKitManagerPath("/org/freedesktop/ConsoleKit/Manager"); - TQString consoleKitManagerInterface("org.freedesktop.ConsoleKit.Manager"); - TQString consoleKitSeatInterface("org.freedesktop.ConsoleKit.Seat"); - - // first, add signals SeadAdded and SeatRemoved from ConsoleKit Manager - dbusSignalAdd(consoleKitService, consoleKitManagerPath, consoleKitManagerInterface, "SeatAdded"); - dbusSignalAdd(consoleKitService, consoleKitManagerPath, consoleKitManagerInterface, "SeatRemoved"); - - // then we need to extract all seats from ConsoleKit - TQDBusMessage msg = TQDBusMessage::createMethodCall(consoleKitService, consoleKitManagerPath, consoleKitManagerInterface, "GetSeats"); - msg = TQDBusConnection::systemBus().call(msg); - if (!msg.arguments().isEmpty()) { - // this method returns a list with present seats - TQList<TQString> seats; - qVariantValue<TQDBusArgument> (msg.arguments()[0]) >> seats; - // it can be multiple seats present so connect all their signals - TQ_FOREACH(const TQString &seat, seats) { - seatSignalsConnect(seat); - } - } -} - -void Authority::Private::setError(Authority::ErrorCode code, const TQString &details, bool recover) -{ - if (recover) { - init(); - } - m_lastError = code; - m_errorDetails = details; - m_hasError = true; -} - -void Authority::Private::seatSignalsConnect(const TQString &seat) -{ - TQString consoleKitService("org.freedesktop.ConsoleKit"); - TQString consoleKitSeatInterface("org.freedesktop.ConsoleKit.Seat"); - // we want to connect to all slots of the seat - dbusSignalAdd(consoleKitService, seat, consoleKitSeatInterface, "DeviceAdded"); - dbusSignalAdd(consoleKitService, seat, consoleKitSeatInterface, "DeviceRemoved"); - dbusSignalAdd(consoleKitService, seat, consoleKitSeatInterface, "SessionAdded"); - dbusSignalAdd(consoleKitService, seat, consoleKitSeatInterface, "SessionRemoved"); - dbusSignalAdd(consoleKitService, seat, consoleKitSeatInterface, "ActiveSessionChanged"); -} - -void Authority::Private::dbusSignalAdd(const TQString &service, const TQString &path, const TQString &interface, const TQString &name) -{ - // FIXME: This code seems to be nonfunctional - it needs to be fixed somewhere (is it TQt BUG?) - TQDBusConnection::systemBus().connect(service, path, interface, name, - q, SLOT(dbusFilter(const TQDBusMessage &))); -} - -void Authority::Private::dbusFilter(const TQDBusMessage &message) -{ - if (message.type() == TQDBusMessage::SignalMessage) { - TQ_EMIT q->consoleKitDBChanged(); - - // TODO: Test this with the multiseat support - if (message.member() == "SeatAdded") { - seatSignalsConnect(qVariantValue<TQDBusObjectPath> (message.arguments()[0]).path()); - } - } -} - -bool Authority::hasError() const -{ - return d->m_hasError; -} - -Authority::ErrorCode Authority::lastError() const -{ - return d->m_lastError; -} - -const TQString Authority::errorDetails() const -{ - if (d->m_lastError == E_None) { - return TQString(); - } else { - return d->m_errorDetails; - } -} - -void Authority::clearError() -{ - d->m_hasError = false; - d->m_lastError = E_None; -} - -void Authority::Private::pk_config_changed() -{ - TQ_EMIT Authority::instance()->configChanged(); -} - -PolkitAuthority *Authority::polkitAuthority() const -{ - return d->pkAuthority; -} - -Authority::Result Authority::checkAuthorizationSync(const TQString &actionId, const Subject &subject, AuthorizationFlags flags) -{ - PolkitAuthorizationResult *pk_result; - GError *error = NULL; - - if (Authority::instance()->hasError()) { - return Unknown; - } - - if (!subject.isValid()) { - d->setError(E_WrongSubject); - return Unknown; - } - - pk_result = polkit_authority_check_authorization_sync(d->pkAuthority, - subject.subject(), - actionId.toAscii().data(), - NULL, - (PolkitCheckAuthorizationFlags)(int)flags, - NULL, - &error); - - if (error != NULL) { - d->setError(E_CheckFailed, error->message); - g_error_free(error); - return Unknown; - } - - if (!pk_result) { - d->setError(E_UnknownResult); - return Unknown; - } else { - Authority::Result res = polkitResultToResult(pk_result); - g_object_unref(pk_result); - return res; - } -} - -void Authority::checkAuthorization(const TQString &actionId, const Subject &subject, AuthorizationFlags flags) -{ - if (Authority::instance()->hasError()) { - return; - } - - if (!subject.isValid()) { - d->setError(E_WrongSubject); - return; - } - - polkit_authority_check_authorization(d->pkAuthority, - subject.subject(), - actionId.toAscii().data(), - NULL, - (PolkitCheckAuthorizationFlags)(int)flags, - d->m_checkAuthorizationCancellable, - d->checkAuthorizationCallback, this); -} - -void Authority::Private::checkAuthorizationCallback(GObject *object, GAsyncResult *result, gpointer user_data) -{ - Authority *authority = (Authority *) user_data; - - Q_ASSERT(authority != NULL); - - GError *error = NULL; - PolkitAuthorizationResult *pkResult = polkit_authority_check_authorization_finish((PolkitAuthority *) object, result, &error); - - if (error != NULL) { - // We don't want to set error if this is cancellation of some action - if (error->code != 1) { - authority->d->setError(E_CheckFailed, error->message); - } - g_error_free(error); - return; - } - if (pkResult != NULL) { - Q_EMIT authority->checkAuthorizationFinished(polkitResultToResult(pkResult)); - g_object_unref(pkResult); - } else { - authority->d->setError(E_UnknownResult); - } -} - -void Authority::checkAuthorizationCancel() -{ - if (!g_cancellable_is_cancelled(d->m_checkAuthorizationCancellable)) { - g_cancellable_cancel(d->m_checkAuthorizationCancellable); - } -} - -ActionDescription::List Authority::enumerateActionsSync() -{ - if (Authority::instance()->hasError()) { - return ActionDescription::List(); - } - - GError *error = NULL; - - GList *glist = polkit_authority_enumerate_actions_sync(d->pkAuthority, - NULL, - &error); - - if (error != NULL) { - d->setError(E_EnumFailed, error->message); - g_error_free(error); - return ActionDescription::List(); - } - - return actionsToListAndFree(glist); -} - -void Authority::enumerateActions() -{ - if (Authority::instance()->hasError()) { - return; - } - - polkit_authority_enumerate_actions(d->pkAuthority, - d->m_enumerateActionsCancellable, - d->enumerateActionsCallback, - Authority::instance()); -} - -void Authority::Private::enumerateActionsCallback(GObject *object, GAsyncResult *result, gpointer user_data) -{ - Authority *authority = (Authority *) user_data; - Q_ASSERT(authority != NULL); - GError *error = NULL; - GList *list = polkit_authority_enumerate_actions_finish((PolkitAuthority *) object, result, &error); - if (error != NULL) { - // We don't want to set error if this is cancellation of some action - if (error->code != 1) { - authority->d->setError(E_EnumFailed, error->message); - } - g_error_free(error); - return; - } - - TQ_EMIT authority->enumerateActionsFinished(actionsToListAndFree(list)); -} - -void Authority::enumerateActionsCancel() -{ - if (!g_cancellable_is_cancelled(d->m_enumerateActionsCancellable)) { - g_cancellable_cancel(d->m_enumerateActionsCancellable); - } -} - -bool Authority::registerAuthenticationAgentSync(const Subject &subject, const TQString &locale, const TQString &objectPath) -{ - if (Authority::instance()->hasError()) { - return false; - } - - gboolean result; - GError *error = NULL; - - if (!subject.isValid()) { - d->setError(E_WrongSubject); - return false; - } - - result = polkit_authority_register_authentication_agent_sync(d->pkAuthority, - subject.subject(), locale.toAscii().data(), - objectPath.toAscii().data(), NULL, &error); - - if (error) { - d->setError(E_RegisterFailed, error->message); - g_error_free(error); - return false; - } - - return result; -} - -void Authority::registerAuthenticationAgent(const Subject &subject, const TQString &locale, const TQString &objectPath) -{ - if (Authority::instance()->hasError()) { - return; - } - - if (!subject.isValid()) { - d->setError(E_WrongSubject); - return; - } - - polkit_authority_register_authentication_agent(d->pkAuthority, - subject.subject(), - locale.toAscii().data(), - objectPath.toAscii().data(), - d->m_registerAuthenticationAgentCancellable, - d->registerAuthenticationAgentCallback, - this); -} - -void Authority::Private::registerAuthenticationAgentCallback(GObject *object, GAsyncResult *result, gpointer user_data) -{ - Authority *authority = (Authority *) user_data; - Q_ASSERT(authority != NULL); - GError *error = NULL; - bool res = polkit_authority_register_authentication_agent_finish((PolkitAuthority *) object, result, &error); - if (error != NULL) { - // We don't want to set error if this is cancellation of some action - if (error->code != 1) { - authority->d->setError(E_EnumFailed , error->message); - } - g_error_free(error); - return; - } - - TQ_EMIT authority->registerAuthenticationAgentFinished(res); -} - -void Authority::registerAuthenticationAgentCancel() -{ - if (!g_cancellable_is_cancelled(d->m_registerAuthenticationAgentCancellable)) { - g_cancellable_cancel(d->m_registerAuthenticationAgentCancellable); - } -} - -bool Authority::unregisterAuthenticationAgentSync(const Subject &subject, const TQString &objectPath) -{ - if (d->pkAuthority) { - return false; - } - - if (!subject.isValid()) { - d->setError(E_WrongSubject); - return false; - } - - GError *error = NULL; - - bool result = polkit_authority_unregister_authentication_agent_sync(d->pkAuthority, - subject.subject(), - objectPath.toUtf8().data(), - NULL, - &error); - - if (error != NULL) { - d->setError(E_UnregisterFailed, error->message); - g_error_free(error); - return false; - } - - return result; -} - -void Authority::unregisterAuthenticationAgent(const Subject &subject, const TQString &objectPath) -{ - if (Authority::instance()->hasError()) { - return; - } - - if (!subject.isValid()) { - d->setError(E_WrongSubject); - return; - } - - polkit_authority_unregister_authentication_agent(d->pkAuthority, - subject.subject(), - objectPath.toUtf8().data(), - d->m_unregisterAuthenticationAgentCancellable, - d->unregisterAuthenticationAgentCallback, - this); -} - -void Authority::Private::unregisterAuthenticationAgentCallback(GObject *object, GAsyncResult *result, gpointer user_data) -{ - Authority *authority = (Authority *) user_data; - Q_ASSERT(authority); - GError *error = NULL; - bool res = polkit_authority_unregister_authentication_agent_finish((PolkitAuthority *) object, result, &error); - if (error != NULL) { - // We don't want to set error if this is cancellation of some action - if (error->code != 1) { - authority->d->setError(E_UnregisterFailed, error->message); - } - g_error_free(error); - return; - } - - TQ_EMIT authority->unregisterAuthenticationAgentFinished(res); -} - -void Authority::unregisterAuthenticationAgentCancel() -{ - if (!g_cancellable_is_cancelled(d->m_unregisterAuthenticationAgentCancellable)) { - g_cancellable_cancel(d->m_unregisterAuthenticationAgentCancellable); - } -} - -bool Authority::authenticationAgentResponseSync(const TQString &cookie, const Identity &identity) -{ - if (Authority::instance()->hasError()) { - return false; - } - - if (cookie.isEmpty() || !identity.isValid()) { - d->setError(E_CookieOrIdentityEmpty); - return false; - } - - GError *error = NULL; - - bool result = polkit_authority_authentication_agent_response_sync(d->pkAuthority, - cookie.toUtf8().data(), - identity.identity(), - NULL, - &error); - if (error != NULL) { - d->setError(E_AgentResponseFailed, error->message); - g_error_free(error); - return false; - } - - return result; -} - -void Authority::authenticationAgentResponse(const TQString &cookie, const Identity &identity) -{ - if (Authority::instance()->hasError()) { - return; - } - - if (cookie.isEmpty() || !identity.isValid()) { - d->setError(E_CookieOrIdentityEmpty); - return; - } - - polkit_authority_authentication_agent_response(d->pkAuthority, - cookie.toUtf8().data(), - identity.identity(), - d->m_authenticationAgentResponseCancellable, - d->authenticationAgentResponseCallback, - this); -} - -void Authority::Private::authenticationAgentResponseCallback(GObject *object, GAsyncResult *result, gpointer user_data) -{ - Authority *authority = (Authority *) user_data; - Q_ASSERT(authority); - GError *error = NULL; - bool res = polkit_authority_authentication_agent_response_finish((PolkitAuthority *) object, result, &error); - if (error != NULL) { - // We don't want to set error if this is cancellation of some action - if (error->code != 1) { - authority->d->setError(E_AgentResponseFailed, error->message); - } - g_error_free(error); - return; - } - - TQ_EMIT authority->authenticationAgentResponseFinished(res); -} - -void Authority::authenticationAgentResponseCancel() -{ - if (!g_cancellable_is_cancelled(d->m_authenticationAgentResponseCancellable)) { - g_cancellable_cancel(d->m_authenticationAgentResponseCancellable); - } -} - -TemporaryAuthorization::List Authority::enumerateTemporaryAuthorizationsSync(const Subject &subject) -{ - TemporaryAuthorization::List result; - - GError *error = NULL; - GList *glist = polkit_authority_enumerate_temporary_authorizations_sync(d->pkAuthority, - subject.subject(), - NULL, - &error); - if (error != NULL) { - d->setError(E_EnumFailed, error->message); - g_error_free(error); - return result; - } - - GList *glist2; - for (glist2 = glist; glist2 != NULL; glist2 = g_list_next(glist2)) { - result.append(TemporaryAuthorization((PolkitTemporaryAuthorization *) glist2->data)); - g_object_unref(glist2->data); - } - - g_list_free(glist); - - return result; -} - -void Authority::Private::enumerateTemporaryAuthorizationsCallback(GObject *object, GAsyncResult *result, gpointer user_data) -{ - Authority *authority = (Authority *) user_data; - Q_ASSERT(authority); - GError *error = NULL; - - GList *glist = polkit_authority_enumerate_temporary_authorizations_finish((PolkitAuthority *) object, result, &error); - - if (error != NULL) { - // We don't want to set error if this is cancellation of some action - if (error->code != 1) { - authority->d->setError(E_EnumFailed, error->message); - } - g_error_free(error); - return; - } - TemporaryAuthorization::List res; - GList *glist2; - for (glist2 = glist; glist2 != NULL; glist2 = g_list_next(glist2)) { - res.append(TemporaryAuthorization((PolkitTemporaryAuthorization *) glist2->data)); - g_object_unref(glist2->data); - } - - g_list_free(glist); - - TQ_EMIT authority->enumerateTemporaryAuthorizationsFinished(res); -} - -void Authority::enumerateTemporaryAuthorizationsCancel() -{ - if (!g_cancellable_is_cancelled(d->m_enumerateTemporaryAuthorizationsCancellable)) { - g_cancellable_cancel(d->m_enumerateTemporaryAuthorizationsCancellable); - } -} - -bool Authority::revokeTemporaryAuthorizationsSync(const Subject &subject) -{ - bool result; - if (Authority::instance()->hasError()) { - return false; - } - - GError *error = NULL; - result = polkit_authority_revoke_temporary_authorizations_sync(d->pkAuthority, - subject.subject(), - NULL, - &error); - if (error != NULL) { - d->setError(E_RevokeFailed, error->message); - g_error_free(error); - return false; - } - return result; -} - -void Authority::revokeTemporaryAuthorizations(const Subject &subject) -{ - if (Authority::instance()->hasError()) { - return; - } - - polkit_authority_revoke_temporary_authorizations(d->pkAuthority, - subject.subject(), - d->m_revokeTemporaryAuthorizationsCancellable, - d->revokeTemporaryAuthorizationsCallback, - this); -} - -void Authority::Private::revokeTemporaryAuthorizationsCallback(GObject *object, GAsyncResult *result, gpointer user_data) -{ - Authority *authority = (Authority *) user_data; - Q_ASSERT(authority != NULL); - GError *error = NULL; - - bool res = polkit_authority_revoke_temporary_authorizations_finish((PolkitAuthority *) object, result, &error); - - if (error != NULL) { - // We don't want to set error if this is cancellation of some action - if (error->code != 1) { - authority->d->setError(E_RevokeFailed, error->message); - } - g_error_free(error); - return; - } - - TQ_EMIT authority->revokeTemporaryAuthorizationsFinished(res); -} - -void Authority::revokeTemporaryAuthorizationsCancel() -{ - if (!g_cancellable_is_cancelled(d->m_revokeTemporaryAuthorizationsCancellable)) { - g_cancellable_cancel(d->m_revokeTemporaryAuthorizationsCancellable); - } -} - -bool Authority::revokeTemporaryAuthorizationSync(const TQString &id) -{ - bool result; - if (Authority::instance()->hasError()) { - return false; - } - - GError *error = NULL; - result = polkit_authority_revoke_temporary_authorization_by_id_sync(d->pkAuthority, - id.toUtf8().data(), - NULL, - &error); - if (error != NULL) { - d->setError(E_RevokeFailed, error->message); - g_error_free(error); - return false; - } - return result; -} - -void Authority::revokeTemporaryAuthorization(const TQString &id) -{ - if (Authority::instance()->hasError()) { - return; - } - - polkit_authority_revoke_temporary_authorization_by_id(d->pkAuthority, - id.toUtf8().data(), - d->m_revokeTemporaryAuthorizationCancellable, - d->revokeTemporaryAuthorizationCallback, - this); -} - -void Authority::Private::revokeTemporaryAuthorizationCallback(GObject *object, GAsyncResult *result, gpointer user_data) -{ - Authority *authority = (Authority *) user_data; - Q_ASSERT(authority != NULL); - GError *error = NULL; - - bool res = polkit_authority_revoke_temporary_authorization_by_id_finish((PolkitAuthority *) object, result, &error); - - if (error != NULL) { - // We don't want to set error if this is cancellation of some action - if (error->code != 1) { - authority->d->setError(E_RevokeFailed, error->message); - } - g_error_free(error); - return; - } - - TQ_EMIT authority->revokeTemporaryAuthorizationFinished(res); -} - -void Authority::revokeTemporaryAuthorizationCancel() -{ - if (!g_cancellable_is_cancelled(d->m_revokeTemporaryAuthorizationCancellable)) { - g_cancellable_cancel(d->m_revokeTemporaryAuthorizationCancellable); - } -} - -} - -#include "polkittqt1-authority.moc" diff --git a/core/polkittqt1-details.cpp b/core/polkittqt1-details.cpp deleted file mode 100644 index 033ef6c35..000000000 --- a/core/polkittqt1-details.cpp +++ /dev/null @@ -1,99 +0,0 @@ -/* - * This file is part of the Polkit-tqt project - * Copyright (C) 2009 Radek Novacek <rnovacek@redhat.com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -#include "polkittqt1-details.h" - -#include <TQtCore/TQStringList> - -#include <polkit/polkit.h> - -namespace PolkitTQt -{ - -class Details::Data : public TQSharedData -{ -public: - Data() {} - Data(const Data &other) - : TQSharedData(other) - , polkitDetails(other.polkitDetails) - { - g_object_ref(polkitDetails); - } - ~Data() - { - g_object_unref(polkitDetails); - } - - PolkitDetails *polkitDetails; -}; - -Details::Details() - : d(new Data) -{ - g_type_init(); - d->polkitDetails = polkit_details_new(); -} - -Details::Details(PolkitDetails *pkDetails) - : d(new Data) -{ - g_type_init(); - d->polkitDetails = pkDetails; -} - -Details::~Details() -{ -} - -Details& Details::operator=(const PolkitTQt::Details& other) -{ - d = other.d; - return *this; -} - -TQString Details::lookup(const TQString &key) const -{ - const gchar *result = polkit_details_lookup(d->polkitDetails, key.toUtf8().data()); - if (result != NULL) { - return TQString::fromUtf8(result); - } else { - return TQString(); - } -} - -void Details::insert(const TQString &key, const TQString &value) -{ - polkit_details_insert(d->polkitDetails, key.toUtf8().data(), value.toUtf8().data()); -} - -TQStringList Details::keys() const -{ - gchar **result = polkit_details_get_keys(d->polkitDetails); - TQStringList list; - int len = g_strv_length(result); - for (int i = 0; i < len; i++) { - list.append(TQString::fromUtf8(result[i])); - } - g_strfreev(result); - return list; -} - -} diff --git a/core/polkittqt1-identity.cpp b/core/polkittqt1-identity.cpp deleted file mode 100644 index b2fc5fa0b..000000000 --- a/core/polkittqt1-identity.cpp +++ /dev/null @@ -1,227 +0,0 @@ -/* - * This file is part of the Polkit-tqt project - * Copyright (C) 2009 Lukas Tinkl <ltinkl@redhat.com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -#include "polkittqt1-identity.h" - -#include <polkit/polkit.h> - -#include <TQtCore/TQDebug> - -namespace PolkitTQt -{ - -class Identity::Data : public TQSharedData -{ -public: - Data() : identity(0) {} - Data(const Data& other) - : TQSharedData(other) - , identity(other.identity) - { - if (identity) { - g_object_ref(identity); - } - } - ~Data() - { - if (identity) { - g_object_unref(identity); - } - } - - PolkitIdentity *identity; -}; - -Identity::Identity() - : d(new Data) -{ - g_type_init(); -} - -Identity::Identity(PolkitIdentity *polkitIdentity) - : d(new Data) -{ - g_type_init(); - d->identity = polkitIdentity; - - if (d->identity) { - g_object_ref(d->identity); - } -} - -Identity::Identity(const PolkitTQt::Identity& other) - : d(other.d) -{ - -} - -Identity::~Identity() -{ -} - -Identity& Identity::operator=(const PolkitTQt::Identity& other) -{ - d = other.d; - return *this; -} - -bool Identity::isValid() const -{ - return d->identity != NULL; -} - -PolkitIdentity *Identity::identity() const -{ - return d->identity; -} - -void Identity::setIdentity(PolkitIdentity *identity) -{ - if (d->identity == identity) { - return; - } - - if (d->identity) { - g_object_unref(d->identity); - } - - d->identity = identity; - - if (d->identity) { - g_object_ref(d->identity); - } -} - -TQString Identity::toString() const -{ - Q_ASSERT(d->identity); - return TQString::fromUtf8(polkit_identity_to_string(d->identity)); -} - -Identity Identity::fromString(const TQString &string) -{ - GError *error = NULL; - PolkitIdentity *pkIdentity = polkit_identity_from_string(string.toUtf8().data(), &error); - if (error != NULL) { - tqWarning() << TQString("Cannot create Identity from string: %1").arg(error->message); - return Identity(); - } - return Identity(pkIdentity); -} - -UnixGroupIdentity Identity::toUnixGroupIdentity() -{ - UnixGroupIdentity *ugid = static_cast< UnixGroupIdentity* >(this); - if (!ugid) { - return UnixGroupIdentity(); - } - - return *ugid; -} - -UnixUserIdentity Identity::toUnixUserIdentity() -{ - UnixUserIdentity *uuid = static_cast< UnixUserIdentity* >(this); - if (!uuid) { - return UnixUserIdentity(); - } - - return *uuid; -} - -UnixUserIdentity::UnixUserIdentity(const TQString &name) - : Identity() -{ - GError *error = NULL; - setIdentity(polkit_unix_user_new_for_name(name.toUtf8().data(), &error)); - if (error != NULL) { - tqWarning() << TQString("Cannot create UnixUserIdentity: %1").arg(error->message); - setIdentity(NULL); - } -} - -UnixUserIdentity::UnixUserIdentity(uid_t uid) - : Identity() -{ - setIdentity(polkit_unix_user_new(uid)); -} - -UnixUserIdentity::UnixUserIdentity(PolkitUnixUser *pkUnixUser) - : Identity((PolkitIdentity *)pkUnixUser) -{ - -} - -UnixUserIdentity::UnixUserIdentity() - : Identity() -{ - -} - -uid_t UnixUserIdentity::uid() const -{ - return polkit_unix_user_get_uid((PolkitUnixUser *) identity()); -} - -void UnixUserIdentity::setUid(uid_t uid) -{ - polkit_unix_user_set_uid((PolkitUnixUser *) identity(), uid); -} - -UnixGroupIdentity::UnixGroupIdentity(const TQString &name) - : Identity() -{ - GError *error = NULL; - setIdentity(polkit_unix_group_new_for_name(name.toUtf8().data(), &error)); - if (error != NULL) { - tqWarning() << TQString("Cannot create UnixGroupIdentity: %1").arg(error->message); - setIdentity(NULL); - } -} - -UnixGroupIdentity::UnixGroupIdentity(gid_t gid) - : Identity() -{ - setIdentity(polkit_unix_group_new(gid)); -} - -UnixGroupIdentity::UnixGroupIdentity(PolkitUnixGroup *pkUnixGroup) - : Identity((PolkitIdentity *) pkUnixGroup) -{ - -} - -UnixGroupIdentity::UnixGroupIdentity() - : Identity() -{ - -} - -gid_t UnixGroupIdentity::gid() const -{ - return polkit_unix_group_get_gid((PolkitUnixGroup *) identity()); -} - -void UnixGroupIdentity::setGid(gid_t gid) -{ - polkit_unix_group_set_gid((PolkitUnixGroup *) identity(), gid); -} - -} diff --git a/core/polkittqt1-temporaryauthorization.cpp b/core/polkittqt1-temporaryauthorization.cpp deleted file mode 100644 index 2665d793e..000000000 --- a/core/polkittqt1-temporaryauthorization.cpp +++ /dev/null @@ -1,117 +0,0 @@ -/* - * This file is part of the PolKit1-tqt project - * Copyright (C) 2009 Radek Novacek <rnovacek@redhat.com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -#include "polkittqt1-temporaryauthorization.h" -#include "polkittqt1-authority.h" - -#include <polkit/polkit.h> - -namespace PolkitTQt -{ - -class TemporaryAuthorization::Data : public TQSharedData -{ -public: - Data() {} - Data(const Data& other) - : TQSharedData(other) - , id(other.id) - , actionId(other.actionId) - , subject(other.subject) - , timeObtained(other.timeObtained) - , timeExpires(other.timeExpires) - { - } - ~Data() {} - - TQString id; - TQString actionId; - Subject subject; - TQDateTime timeObtained; - TQDateTime timeExpires; -}; - -TemporaryAuthorization::TemporaryAuthorization(PolkitTemporaryAuthorization *pkTemporaryAuthorization) - : d(new Data) -{ - g_type_init(); - d->id = TQString::fromUtf8(polkit_temporary_authorization_get_id(pkTemporaryAuthorization)); - d->actionId = TQString::fromUtf8(polkit_temporary_authorization_get_action_id(pkTemporaryAuthorization)); - d->subject = Subject::fromString(polkit_subject_to_string(polkit_temporary_authorization_get_subject(pkTemporaryAuthorization))); - d->timeObtained = TQDateTime::fromTime_t(polkit_temporary_authorization_get_time_obtained(pkTemporaryAuthorization)); - d->timeExpires = TQDateTime::fromTime_t(polkit_temporary_authorization_get_time_expires(pkTemporaryAuthorization)); - g_object_unref(pkTemporaryAuthorization); -} - -TemporaryAuthorization::TemporaryAuthorization(const PolkitTQt::TemporaryAuthorization& other) - : d(other.d) -{ - -} - -TemporaryAuthorization::TemporaryAuthorization() - : d(new Data) -{ - -} - -TemporaryAuthorization& TemporaryAuthorization::operator=(const PolkitTQt::TemporaryAuthorization& other) -{ - d = other.d; - return *this; -} - -TemporaryAuthorization::~TemporaryAuthorization() -{ -} - -TQString TemporaryAuthorization::id() const -{ - return d->id; -} - -TQString TemporaryAuthorization::actionId() const -{ - return d->actionId; -} - -Subject TemporaryAuthorization::subject() const -{ - //tqFatal(polkit_subject_to_string(polkit_temporary_authorization_get_subject(d->temporaryAuthorization))); - return d->subject;//Subject::fromString(polkit_subject_to_string(d->subject)); -} - -TQDateTime TemporaryAuthorization::obtainedAt() const -{ - return d->timeObtained; -} - -TQDateTime TemporaryAuthorization::expirationTime() const -{ - return d->timeExpires; -} - -bool TemporaryAuthorization::revoke() -{ - Authority::instance()->revokeTemporaryAuthorization(id()); - return true; -} - -} |