}
bool
+SmackManager::Install(const PackageId& packageId)
+{
+ if (__isSmackEnable == false)
+ {
+ return true;
+ }
+
+ int res = 0;
+
+ std::unique_ptr<char[]> pPackageId(_StringConverter::CopyToCharArrayN(packageId));
+ TryReturn(pPackageId, false, "pPackageId is null.");
+
+ res = Install(pPackageId.get());
+
+ return true;
+}
+
+bool
+SmackManager::Uninstall(const PackageId& packageId)
+{
+ if (__isSmackEnable == false)
+ {
+ return true;
+ }
+
+ int res = 0;
+
+ std::unique_ptr<char[]> pPackageId(_StringConverter::CopyToCharArrayN(packageId));
+ TryReturn(pPackageId, false, "pPackageId is null.");
+
+ res = Uninstall(pPackageId.get());
+
+ return true;
+}
+
+bool
SmackManager::AddLabelDir(const String& label, const String& dirPath, bool rootDirectory)
{
if (__isSmackEnable == false)
}
bool
+SmackManager::AddSharedDirReaders(const Tizen::Base::String& label)
+{
+ if (__isSmackEnable == false)
+ {
+ return true;
+ }
+
+ //int AddSharedDirReaders(const char* pSharedLabel, const char** ppAppList);
+
+ return true;
+}
+
+bool
+SmackManager::AddFriend(const Tizen::App::PackageId& packageId1, const Tizen::App::PackageId& packageId2)
+{
+ if (__isSmackEnable == false)
+ {
+ return true;
+ }
+
+ //int AddFriend(const char* pPackageId1, const char* pPackageId2);
+
+ return true;
+}
+
+bool
SmackManager::AddPermissions(const PackageId& packageId)
{
if (__isSmackEnable == false)
}
int
+SmackManager::Install(const char* pPackageId)
+{
+ int ret = 0;
+ void* pHandle = null;
+ char* pErrorMsg = null;
+ int (*app_install)(const char*) = null;
+
+ pHandle = dlopen("libprivilege-control.so.0", RTLD_LAZY | RTLD_GLOBAL);
+ if (!pHandle)
+ {
+ AppLog("Install(): dlopen() failed. [%s]", dlerror());
+ return -1;
+ }
+
+ app_install = reinterpret_cast <int (*)(const char*)>(dlsym(pHandle, "app_install"));
+ pErrorMsg = dlerror();
+ if (pErrorMsg != null)
+ {
+ AppLog("Install(): dlsym() failed. [%s]", pErrorMsg);
+ dlclose(pHandle);
+ return -1;
+ }
+
+ ret = app_install(pPackageId);
+ AppLog("[smack] app_install(%s), result = [%d]", pPackageId, ret);
+
+ dlclose(pHandle);
+
+ return 0;
+}
+
+int
+SmackManager::Uninstall(const char* pPackageId)
+{
+ int ret = 0;
+ void* pHandle = null;
+ char* pErrorMsg = null;
+ int (*app_uninstall)(const char*) = null;
+
+ pHandle = dlopen("libprivilege-control.so.0", RTLD_LAZY | RTLD_GLOBAL);
+ if (!pHandle)
+ {
+ AppLog("Uninstall(): dlopen() failed. [%s]", dlerror());
+ return -1;
+ }
+
+ app_uninstall = reinterpret_cast <int (*)(const char*)>(dlsym(pHandle, "app_uninstall"));
+ pErrorMsg = dlerror();
+ if (pErrorMsg != null)
+ {
+ AppLog("Uninstall(): dlsym() failed. [%s]", pErrorMsg);
+ dlclose(pHandle);
+ return -1;
+ }
+
+ ret = app_uninstall(pPackageId);
+ AppLog("[smack] app_uninstall(%s), result = [%d]", pPackageId, ret);
+
+ dlclose(pHandle);
+
+ return 0;
+}
+
+int
SmackManager::AddLabelDir(const char* pLabel, const char* pDirPath)
{
int ret = 0;
}
int
-SmackManager::AddPermissions(const char* pPackageId, const char** ppPermissions)
+SmackManager::AddSharedDirReaders(const char* pSharedLabel, const char** ppAppList)
{
int ret = 0;
void* pHandle = null;
char* pErrorMsg = null;
- int (*app_add_permissions)(const char*, const char**) = null;
+ int (*add_shared_dir_readers)(const char*, const char**) = null;
pHandle = dlopen("libprivilege-control.so.0", RTLD_LAZY | RTLD_GLOBAL);
if (!pHandle)
{
- AppLog("AddPermissions(): dlopen() failed. [%s][%s]", pPackageId, dlerror());
+ AppLog("AddSharedDirReaders(): dlopen() failed. [%s]", dlerror());
return -1;
}
- app_add_permissions = reinterpret_cast <int (*)(const char*, const char**)>(dlsym(pHandle, "app_add_permissions"));
+ add_shared_dir_readers = reinterpret_cast <int (*)(const char*, const char**)>(dlsym(pHandle, "add_shared_dir_readers"));
pErrorMsg = dlerror();
if (pErrorMsg != null)
{
- AppLog("AddPermissions(): dlsym() failed. [%s][%s]", pPackageId, pErrorMsg);
+ AppLog("AddSharedDirReaders(): dlsym() failed. [%s]", pErrorMsg);
dlclose(pHandle);
return -1;
}
- for (int i = 0; ppPermissions[i] != null; i++)
+ ret = add_shared_dir_readers(pSharedLabel, ppAppList);
+ AppLog("[smack] add_shared_dir_readers(%s), result = [%d]", pSharedLabel, ret);
+
+ dlclose(pHandle);
+
+ return 0;
+}
+
+int
+SmackManager::AddFriend(const char* pPackageId1, const char* pPackageId2)
+{
+ int ret = 0;
+ void* pHandle = null;
+ char* pErrorMsg = null;
+ int (*app_add_friend)(const char*, const char*) = null;
+
+ pHandle = dlopen("libprivilege-control.so.0", RTLD_LAZY | RTLD_GLOBAL);
+ if (!pHandle)
{
- AppLog("Privilege - [%s]", ppPermissions[i]);
- }
+ AppLog("AddFriend(): dlopen() failed. [%s]", dlerror());
+ return -1;
+ }
- ret = app_add_permissions(pPackageId, ppPermissions);
- AppLog("[smack] app_add_permissions(%s), result = [%d]", pPackageId, ret);
+ app_add_friend = reinterpret_cast <int (*)(const char*, const char*)>(dlsym(pHandle, "app_add_friend"));
+ pErrorMsg = dlerror();
+ if (pErrorMsg != null)
+ {
+ AppLog("AddFriend(): dlsym() failed. [%s]", pErrorMsg);
+ dlclose(pHandle);
+ return -1;
+ }
+
+ ret = app_add_friend(pPackageId1, pPackageId2);
+ AppLog("[smack] app_add_friend(%s, %s), result = [%d]", pPackageId1, pPackageId2, ret);
+
+ dlclose(pHandle);
+
+ return 0;
+}
+
+int
+SmackManager::EnablePermissions(const char* pPackageId, int appType, const char** ppPermissions, bool persistent)
+{
+ int ret = 0;
+ void* pHandle = null;
+ char* pErrorMsg = null;
+ int (*app_enable_permissions)(const char*, int, const char**, bool) = null;
+
+ pHandle = dlopen("libprivilege-control.so.0", RTLD_LAZY | RTLD_GLOBAL);
+ if (!pHandle)
+ {
+ AppLog("EnablePermissions(): dlopen() failed. [%s]", dlerror());
+ return -1;
+ }
+
+ app_enable_permissions = reinterpret_cast <int (*)(const char*, int, const char**, bool)>(dlsym(pHandle, "app_enable_permissions"));
+ pErrorMsg = dlerror();
+ if (pErrorMsg != null)
+ {
+ AppLog("EnablePermissions(): dlsym() failed. [%s]", pErrorMsg);
+ dlclose(pHandle);
+ return -1;
+ }
+
+ ret = app_enable_permissions(pPackageId, appType, ppPermissions, persistent);
+ AppLog("[smack] app_enable_permissions(%s, %d), result = [%d]", pPackageId, appType, ret);
dlclose(pHandle);
return 0;
}
+
+int
+SmackManager::AddPermissions(const char* pPackageId, const char** ppPermissions)
+{
+ int ret = 0;
+ void* pHandle = null;
+ char* pErrorMsg = null;
+ int (*app_add_permissions)(const char*, const char**) = null;
+
+ pHandle = dlopen("libprivilege-control.so.0", RTLD_LAZY | RTLD_GLOBAL);
+ if (!pHandle)
+ {
+ AppLog("AddPermissions(): dlopen() failed. [%s][%s]", pPackageId, dlerror());
+ return -1;
+ }
+
+ app_add_permissions = reinterpret_cast <int (*)(const char*, const char**)>(dlsym(pHandle, "app_add_permissions"));
+ pErrorMsg = dlerror();
+ if (pErrorMsg != null)
+ {
+ AppLog("AddPermissions(): dlsym() failed. [%s][%s]", pPackageId, pErrorMsg);
+ dlclose(pHandle);
+ return -1;
+ }
+
+ for (int i = 0; ppPermissions[i] != null; i++)
+ {
+ AppLog("Privilege - [%s]", ppPermissions[i]);
+ }
+
+ ret = app_add_permissions(pPackageId, ppPermissions);
+ AppLog("[smack] app_add_permissions(%s), result = [%d]", pPackageId, ret);
+
+ dlclose(pHandle);
+
+ return 0;
+}
virtual ~SmackManager(void);
bool Construct(InstallationContext* pContext);
+ bool Install(const Tizen::App::PackageId& packageId);
+ bool Uninstall(const Tizen::App::PackageId& packageId);
+
bool AddLabelDir(const Tizen::Base::String& label, const Tizen::Base::String& dirPath, bool rootDirectory = false);
bool AddLabelSharedDir(const Tizen::App::PackageId& packageId, const Tizen::Base::String& dirPath);
+ bool AddSharedDirReaders(const Tizen::Base::String& label);
+ bool AddFriend(const Tizen::App::PackageId& packageId1, const Tizen::App::PackageId& packageId2);
+
bool AddPermissions(const Tizen::App::PackageId& packageId);
bool RevokePermissions(const Tizen::App::PackageId& packageId);
private:
bool IsSmackEnable();
+ int Install(const char* pPackageId);
+ int Uninstall(const char* pPackageId);
+
int AddLabelDir(const char* pLabel, const char* pDirPath);
int AddLabelSharedDir(const char* pLabel, const char* pSharedLabel, const char* pDirPath);
- int AddPermissions(const char* pPackageId, const char** ppPermissions);
+ int AddSharedDirReaders(const char* pSharedLabel, const char** ppAppList);
+ int AddFriend(const char* pPackageId1, const char* pPackageId2);
+
+ int EnablePermissions(const char* pPackageId, int appType, const char** ppPermissions, bool persistent);
int RevokePermissions(const char* pPackageId);
+ // deprecated
+ int AddPermissions(const char* pPackageId, const char** ppPermissions);
+
private:
InstallationContext* __pContext;
bool __isSmackEnable;