From: Sangyoon Jang Date: Thu, 21 Jan 2016 01:14:57 +0000 (+0900) Subject: Add add/remove blacklist apis X-Git-Tag: submit/tizen/20160201.013807~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=69b294448f3f77bd62859f69168b265fde7e9e9a;p=platform%2Fcore%2Fappfw%2Fslp-pkgmgr.git Add add/remove blacklist apis Change-Id: I40e3722ac18de46e260004851809651277987dc3 Signed-off-by: Sangyoon Jang --- diff --git a/client/include/package-manager.h b/client/include/package-manager.h index 117ba3d..4b0459f 100644 --- a/client/include/package-manager.h +++ b/client/include/package-manager.h @@ -809,6 +809,55 @@ int pkgmgr_client_register_license(pkgmgr_client *pc, const char *resp_data); */ int pkgmgr_client_decrypt_package(pkgmgr_client *pc, const char *drm_file_path, const char *decrypted_file_path); +/** + * @brief Add a package to blacklist + * + * This API adds a package to blacklist.\n + * + * @param[in] pc The pointer to pkgmgr_client instance + * @param[in] pkgid package id + * @return 0 if success, error code(<0) if fail\n + * @retval PKGMGR_R_OK success + * @retval PKGMGR_R_EINVAL invalid argument + * @retval PKGMGR_R_ECOMM communication error + * @retval PKGMGR_R_EPRIV privilege denied + */ +int pkgmgr_client_add_blacklist(pkgmgr_client *pc, const char *pkgid); +int pkgmgr_client_usr_add_blacklist(pkgmgr_client *pc, const char *pkgid, uid_t uid); + +/** + * @brief Remove a package to blacklist + * + * This API removes a package to blacklist.\n + * + * @param[in] pc The pointer to pkgmgr_client instance + * @param[in] pkgid package id + * @return 0 if success, error code(<0) if fail\n + * @retval PKGMGR_R_OK success + * @retval PKGMGR_R_EINVAL invalid argument + * @retval PKGMGR_R_ECOMM communication error + * @retval PKGMGR_R_EPRIV privilege denied + */ +int pkgmgr_client_remove_blacklist(pkgmgr_client *pc, const char *pkgid); +int pkgmgr_client_usr_remove_blacklist(pkgmgr_client *pc, const char *pkgid, uid_t uid); + +/** + * @brief Check whether a package is blacklisted + * + * This API checks whether the given package is blacklisted.\n + * + * @param[in] pc The pointer to pkgmgr_client instance + * @param[in] pkgid package id + * @param[out] blacklist whether blacklisted or not + * @return 0 if success, error code(<0) if fail\n + * @retval PKGMGR_R_OK success + * @retval PKGMGR_R_EINVAL invalid argument + * @retval PKGMGR_R_ECOMM communication error + * @retval PKGMGR_R_EPRIV privilege denied + */ +int pkgmgr_client_check_blacklist(pkgmgr_client *pc, const char *pkgid, bool *blacklist); +int pkgmgr_client_usr_check_blacklist(pkgmgr_client *pc, const char *pkgid, bool *blacklist, uid_t uid); + /** @} */ diff --git a/client/src/pkgmgr.c b/client/src/pkgmgr.c index 666b296..1cc7c91 100644 --- a/client/src/pkgmgr.c +++ b/client/src/pkgmgr.c @@ -1829,3 +1829,96 @@ API int pkgmgr_client_decrypt_package(pkgmgr_client *pc, return PKGMGR_R_OK; } + +API int pkgmgr_client_usr_add_blacklist(pkgmgr_client *pc, const char *pkgid, + uid_t uid) +{ + GVariant *result; + int ret = PKGMGR_R_ECOMM; + pkgmgr_client_t *mpc = (pkgmgr_client_t *)pc; + + if (pc == NULL || pkgid == NULL) { + ERR("invalid parameter"); + return PKGMGR_R_EINVAL; + } + + result = comm_client_request(mpc->info.request.cc, "add_blacklist", + g_variant_new("(us)", uid, pkgid)); + if (result == NULL) + return PKGMGR_R_ECOMM; + g_variant_get(result, "(i)", &ret); + g_variant_unref(result); + + return ret; +} + +API int pkgmgr_client_add_blacklist(pkgmgr_client *pc, const char *pkgid) +{ + return pkgmgr_client_usr_add_blacklist(pc, pkgid, GLOBAL_USER); +} + +API int pkgmgr_client_usr_remove_blacklist(pkgmgr_client *pc, + const char *pkgid, uid_t uid) +{ + GVariant *result; + int ret = PKGMGR_R_ECOMM; + pkgmgr_client_t *mpc = (pkgmgr_client_t *)pc; + + if (pc == NULL || pkgid == NULL) { + ERR("invalid parameter"); + return PKGMGR_R_EINVAL; + } + + result = comm_client_request(mpc->info.request.cc, "remove_blacklist", + g_variant_new("(us)", uid, pkgid)); + if (result == NULL) + return PKGMGR_R_ECOMM; + g_variant_get(result, "(i)", &ret); + g_variant_unref(result); + + return ret; +} + +API int pkgmgr_client_remove_blacklist(pkgmgr_client *pc, + const char *pkgid) +{ + return pkgmgr_client_usr_remove_blacklist(pc, pkgid, GLOBAL_USER); +} + +API int pkgmgr_client_usr_check_blacklist(pkgmgr_client *pc, const char *pkgid, + bool *blacklist, uid_t uid) +{ + GVariant *result; + int ret = PKGMGR_R_ECOMM; + gint b; + pkgmgr_client_t *mpc = (pkgmgr_client_t *)pc; + + if (pc == NULL || pkgid == NULL) { + ERR("invalid parameter"); + return PKGMGR_R_EINVAL; + } + + result = comm_client_request(mpc->info.request.cc, "check_blacklist", + g_variant_new("(us)", uid, pkgid)); + if (result == NULL) + return PKGMGR_R_ECOMM; + g_variant_get(result, "(ii)", &b, &ret); + g_variant_unref(result); + + if (ret != PKGMGR_R_OK) + return ret; + + if (b) + *blacklist = true; + else + *blacklist = false; + + return PKGMGR_R_OK; +} + +API int pkgmgr_client_check_blacklist(pkgmgr_client *pc, const char *pkgid, + bool *blacklist) +{ + return pkgmgr_client_usr_check_blacklist(pc, pkgid, blacklist, + GLOBAL_USER); +}