Revert "Add pkg-mgr plugin and modify some code Modify plugin"
authorHyunwoo Kim <hwlove.kim@samsung.com>
Mon, 25 Mar 2013 04:55:51 +0000 (13:55 +0900)
committerGerrit Code Review <gerrit2@kim11>
Mon, 25 Mar 2013 04:55:51 +0000 (13:55 +0900)
This reverts commit 512c5343d45fa8b318018c1b3ff05eb6425de2b5

26 files changed:
CMakeLists.txt
client/CMakeLists.txt
client/inc/PrivacyChecker.h
client/inc/PrivacyManager.h [moved from client/inc/PrivacyManagerClient.h with 85% similarity]
client/src/PrivacyChecker.cpp
client/src/PrivacyManager.cpp [new file with mode: 0644]
client/src/PrivacyManagerClient.cpp [deleted file]
client/src/privacy_checker_client.cpp
client/src/privacy_info_client.cpp
client/src/privacy_manager_client.cpp
common/inc/PrivacyManagerTypes.h
common/inc/privacy_manager_client_types.h
common/src/PrivacyIdInfo.cpp
packaging/privacy-manager-server.manifest
packaging/privacy-manager.spec
pkgmgr_plugin/CMakeLists.txt [deleted file]
pkgmgr_plugin/privileges.cpp [deleted file]
privacy-manager-test.pc.in [new file with mode: 0644]
res/usr/bin/privacy_db.sql
server/CMakeLists.txt
server/inc/PrivacyManagerServer.h
server/inc/TestService.h [new file with mode: 0644]
server/src/PrivacyManagerDaemon.cpp
server/src/PrivacyManagerServer.cpp
server/src/service/PrivacyInfoService.cpp
server/src/service/TestService.cpp [new file with mode: 0644]

index 15fa6d8..e335471 100644 (file)
@@ -15,4 +15,3 @@ ADD_SUBDIRECTORY(server)
 ADD_SUBDIRECTORY(client)\r
 #ADD_SUBDIRECTORY(test)\r
 ADD_SUBDIRECTORY(capi)\r
-ADD_SUBDIRECTORY(pkgmgr_plugin)\r
index 1e7024f..80c4c9e 100644 (file)
@@ -49,14 +49,15 @@ SET(PRIVACY_MANAGER_CLIENT_SOURCES
        ${common_src_dir}/SocketStream.cpp
        ${common_src_dir}/PrivacyIdInfo.cpp
        ${client_src_dir}/SocketClient.cpp
-       ${client_src_dir}/PrivacyManagerClient.cpp
+       ${client_src_dir}/PrivacyManager.cpp
        ${client_src_dir}/PrivacyChecker.cpp
        ${client_src_dir}/privacy_checker_client.cpp
        ${client_src_dir}/privacy_info_client.cpp
        ${client_src_dir}/privacy_manager_client.cpp
        )
 SET(PRIVACY_MANAGER_CLIENT_HEADERS
-    ${client_include_dir}/PrivacyManagerClient.h
+       ${client_include_dir}/PrivacyManager.h
+       ${client_include_dir}/PrivacyChecker.h
        ${client_include_dir}/PrivacyChecker.h
        ${client_include_dir}/privacy_info_client.h
        ${client_include_dir}/privacy_manager_client.h
index 90664f5..96d86b3 100644 (file)
@@ -32,8 +32,8 @@ struct sqlite3;
 class EXTERN_API PrivacyChecker\r
 {\r
 private:\r
+       static const std::string DB_PATH;\r
        static std::map < std::string, bool > m_privacyCache;\r
-       static std::map < std::string, std::map < std::string, bool > > m_privacyInfoCache;\r
        static std::string m_pkgId;\r
        static bool m_isInitialized;\r
        static std::mutex m_cacheMutex;\r
@@ -43,17 +43,16 @@ private:
 private:\r
        static int initializeDbus(void);\r
        static int finalizeDbus(void);\r
-       static int updateCache(const std::string privacyId, std::map < std::string, bool >& pkgCacheMap);\r
-       static int updateCache(std::map < std::string, bool >& pkgCacheMap);\r
+       static int getUniqueIdFromPackageId(const std::string pkgId, int& uniqueId);\r
+       static int updateCache(void);\r
+       static int updateCache(const std::string privacyId);\r
        static void printCache(void);\r
        static void* runSignalListenerThread(void* pData);\r
        static int getCurrentPkgId(std::string& pkgId);\r
-       static int check(const std::string privacyId, std::map < std::string, bool >& privacyMap);\r
 \r
 public:\r
        static int initialize(const std::string pkgId);\r
        static int check(const std::string privacyId);\r
-       static int check(const std::string, std::string privacyId);\r
        static int finalize(void);\r
        static DBusHandlerResult handleNotification(DBusConnection* connection, DBusMessage* message, void* user_data);\r
 };\r
similarity index 85%
rename from client/inc/PrivacyManagerClient.h
rename to client/inc/PrivacyManager.h
index e5ae684..a9c054d 100644 (file)
 \r
 class SocketClient;\r
 \r
-class EXTERN_API PrivacyManagerClient\r
+class EXTERN_API PrivacyManager\r
 {\r
 private:\r
-       static PrivacyManagerClient* m_pInstance;\r
+       static PrivacyManager* m_pInstance;\r
        static const std::string INTERFACE_NAME;\r
 \r
        std::unique_ptr< SocketClient > m_pSocketClient;\r
 \r
        static std::mutex m_singletonMutex;\r
 \r
-       PrivacyManagerClient();\r
-       ~PrivacyManagerClient();\r
+       PrivacyManager();\r
+       ~PrivacyManager();\r
 \r
 public:\r
-       static PrivacyManagerClient* getInstance(void);\r
+       static PrivacyManager* getInstance(void);\r
 \r
        int addAppPackagePrivacyInfo(const std::string pkgId, const std::list < std::string >& list);\r
 \r
index 4f1b352..8688f7e 100644 (file)
@@ -15,7 +15,7 @@
  */\r
 \r
 #include <PrivacyChecker.h>\r
-#include <PrivacyManagerClient.h>\r
+#include <PrivacyManager.h>\r
 #include <SocketClient.h>\r
 #include <algorithm> \r
 #include <memory>\r
@@ -27,8 +27,8 @@
 #include <unistd.h>\r
 \r
 bool PrivacyChecker::m_isInitialized = false;\r
+const std::string PrivacyChecker::DB_PATH("/opt/dbspace/.privacy.db");\r
 std::map < std::string, bool >PrivacyChecker::m_privacyCache;\r
-std::map < std::string, std::map < std::string, bool > > PrivacyChecker::m_privacyInfoCache;\r
 std::mutex PrivacyChecker::m_cacheMutex;\r
 std::string PrivacyChecker::m_pkgId;\r
 DBusConnection* PrivacyChecker::m_pDBusConnection;\r
@@ -37,6 +37,29 @@ GMainLoop* PrivacyChecker::m_pLoop = NULL;
 const int MAX_LOCAL_BUF_SIZE = 128;\r
 \r
 int\r
+PrivacyChecker::getUniqueIdFromPackageId(const std::string pkgId, int& uniqueId)\r
+{\r
+       LOGI("enter");\r
+       std::string PkgIdQuery = std::string("SELECT UNIQUE_ID from PackageInfo where PKG_ID=?");\r
+\r
+       int res;\r
+       openDb(DB_PATH.c_str(), pDbH, SQLITE_OPEN_READONLY);\r
+       prepareDb(pDbH, PkgIdQuery.c_str(), pStmt);\r
+\r
+       res = sqlite3_bind_text(pStmt.get(), 1, pkgId.c_str(), -1, SQLITE_TRANSIENT);\r
+       TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_IO_ERROR, , "sqlite3_bind_text : %d", res);\r
+\r
+       res = sqlite3_step(pStmt.get());\r
+       TryReturn( res == SQLITE_ROW, PRIV_MGR_ERROR_IO_ERROR, , "sqlite3_step : %d", res);\r
+\r
+       uniqueId = sqlite3_column_int(pStmt.get(), 0);\r
+       LOGI("%s : %d", pkgId.c_str(), uniqueId);\r
+\r
+       LOGI("leave");\r
+       return PRIV_MGR_ERROR_SUCCESS;\r
+}\r
+\r
+int\r
 PrivacyChecker::initialize(const std::string pkgId)\r
 {\r
        LOGI("enter");\r
@@ -50,7 +73,7 @@ PrivacyChecker::initialize(const std::string pkgId)
        TryReturn(res >= 0, PRIV_MGR_ERROR_SYSTEM_ERROR, errno = res;, "Failed to create listener thread :%s", strerror(res));\r
 \r
        m_pkgId = pkgId;\r
-       res = updateCache(m_privacyCache);\r
+       res = updateCache();\r
        TryReturn(res == 0, res, m_pkgId.clear(), "Failed to update cache : %d", res);\r
 \r
        m_isInitialized = true;\r
@@ -136,21 +159,12 @@ PrivacyChecker::handleNotification(DBusConnection* connection, DBusMessage* mess
                        DBUS_TYPE_INVALID);\r
                TryReturn(r, DBUS_HANDLER_RESULT_NOT_YET_HANDLED, , "Fail to get data : %s", error.message);\r
                \r
-               std::lock_guard < std::mutex > guard(m_cacheMutex);\r
-\r
                if (std::string(pPkgId) == m_pkgId)\r
                {\r
                        LOGI("Current app pkg privacy information updated");\r
-                       updateCache(pPrivacyId, m_privacyCache);\r
+                       updateCache(pPrivacyId);\r
                        printCache();\r
                }\r
-\r
-               std::map < std::string, std::map < std::string, bool > > :: iterator iter = m_privacyInfoCache.find(std::string(pPkgId));\r
-               if (iter != m_privacyInfoCache.end())\r
-               {\r
-                       updateCache(pPrivacyId, iter->second);\r
-               }\r
-               \r
        }\r
        else\r
        {\r
@@ -167,30 +181,18 @@ PrivacyChecker::check(const std::string privacyId)
 \r
        std::lock_guard < std::mutex > guard(m_cacheMutex);\r
 \r
-       int ret = check(privacyId, m_privacyCache);\r
-\r
-       LOGI("leave");\r
-\r
-       return ret;\r
-}\r
+       TryReturn(m_isInitialized, -1, , "Not initialized");\r
 \r
-int\r
-PrivacyChecker::check(const std::string privacyId, std::map < std::string, bool >& privacyMap)\r
-{\r
-       LOGI("enter");\r
-\r
-       TryReturn(m_isInitialized, PRIV_MGR_ERROR_NOT_INITIALIZED, , "Not initialized");\r
-\r
-       std::map < std::string, bool >::const_iterator iter = privacyMap.find(privacyId);\r
-       if (iter == privacyMap.end() )\r
+       std::map < std::string, bool >::const_iterator iter = m_privacyCache.find(privacyId);\r
+       if (iter == m_privacyCache.end() )\r
        {\r
                LOGD("NO matcheded");\r
-               return PRIV_MGR_ERROR_USER_NOT_CONSENTED;\r
+               return -1;\r
        }\r
        else if (!iter->second)\r
        {\r
                LOGD("NOT allowed");\r
-               return PRIV_MGR_ERROR_USER_NOT_CONSENTED;\r
+               return -1;\r
        }\r
        LOGD("OK");\r
 \r
@@ -198,36 +200,6 @@ PrivacyChecker::check(const std::string privacyId, std::map < std::string, bool
 }\r
 \r
 int\r
-PrivacyChecker::check(const std::string pkgId, const std::string privacyId)\r
-{\r
-       LOGI("enter");\r
-\r
-       std::lock_guard < std::mutex > guard(m_cacheMutex);\r
-\r
-       int res;\r
-\r
-       std::map < std::string, std::map < std::string, bool > >::iterator iter = m_privacyInfoCache.find(pkgId);\r
-       if (iter == m_privacyInfoCache.end() )\r
-       {\r
-               std::map < std::string, bool > pkgCacheMap;\r
-               res = updateCache(pkgCacheMap);\r
-               TryReturn( res == PRIV_MGR_ERROR_SUCCESS, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_text : %d", res);\r
-\r
-               m_privacyInfoCache.insert( std::map < std::string, std::map < std::string, bool > >::value_type(std::string(pkgId), pkgCacheMap));\r
-\r
-               iter = m_privacyInfoCache.find(pkgId);\r
-       }\r
-       if (iter->second.size() == 0)\r
-               return PRIV_MGR_ERROR_USER_NOT_CONSENTED;\r
-\r
-       res = check(privacyId, iter->second);\r
-\r
-       LOGI("leave");\r
-\r
-       return res;\r
-}\r
-\r
-int\r
 PrivacyChecker::finalize(void)\r
 {\r
        std::lock_guard <std::mutex> guard (m_cacheMutex);\r
@@ -244,68 +216,79 @@ PrivacyChecker::finalize(void)
        return PRIV_MGR_ERROR_SUCCESS;\r
 }\r
 \r
-void\r
-PrivacyChecker::printCache(void)\r
-{\r
-       std::map < std::string, bool >::const_iterator iter = m_privacyCache.begin();\r
-       for (; iter != m_privacyCache.end(); ++iter)\r
-       {\r
-               LOGD(" %s : %d", iter->first.c_str(), iter->second);\r
-       }\r
-}\r
-\r
 int\r
-PrivacyChecker::updateCache(const std::string privacyId, std::map < std::string, bool >& pkgCacheMap)\r
+PrivacyChecker::updateCache(void)\r
 {\r
        LOGI("enter");\r
-       static const std::string PrivacyQuery = "SELECT IS_ENABLED from PrivacyInfo where PKG_ID=? and PRIVACY_ID=?";\r
+       static const std::string PrivacyQuery = "SELECT PRIVACY_ID, IS_ENABLED from Privacy where ID=?";\r
+       \r
+       std::lock_guard < std::mutex > guard(m_cacheMutex);\r
+\r
+       int res;\r
+       int id;\r
+       res = getUniqueIdFromPackageId(m_pkgId, id);\r
+       TryReturn( res == 0, -1, , "getUniqueIdFromPackageId : %d", res);\r
+       LOGD("id : %d" ,id);\r
        \r
-       openDb(PRIVACY_DB_PATH.c_str(), pDbH, SQLITE_OPEN_READONLY);\r
+       openDb(DB_PATH.c_str(), pDbH, SQLITE_OPEN_READONLY);\r
        prepareDb(pDbH, PrivacyQuery.c_str(), pPrivacyStmt);\r
-       int res = sqlite3_bind_text(pPrivacyStmt.get(), 1, m_pkgId.c_str(),  -1, SQLITE_TRANSIENT);\r
-       TryReturn( res == 0, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_text : %d", res);\r
+       res = sqlite3_bind_int(pPrivacyStmt.get(), 1, id);\r
+       TryReturn( res == 0, -1, , "sqlite3_bind_int : %d", res);\r
 \r
-       res = sqlite3_bind_text(pPrivacyStmt.get(), 2, privacyId.c_str(),  -1, SQLITE_TRANSIENT);\r
-       TryReturn( res == 0, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_text : %d", res);\r
 \r
        while ( sqlite3_step(pPrivacyStmt.get()) == SQLITE_ROW )\r
        {\r
-               bool privacyEnabled = sqlite3_column_int(pPrivacyStmt.get(), 0) > 0 ? true : false;\r
+               LOGI("start");\r
+               const char* privacyId =  reinterpret_cast < const char* > (sqlite3_column_text(pPrivacyStmt.get(), 0));\r
+               bool privacyEnabled = sqlite3_column_int(pPrivacyStmt.get(), 1) > 0 ? true : false;\r
 \r
-               std::lock_guard < std::mutex > guard(m_cacheMutex);\r
-               pkgCacheMap.erase(privacyId);\r
-               pkgCacheMap.insert(std::map < std::string, bool >::value_type(privacyId, privacyEnabled));\r
+               m_privacyCache.insert(std::map < std::string, bool >::value_type(std::string(privacyId), privacyEnabled));\r
+\r
+               LOGD("Privacy found : %s %d", privacyId, privacyEnabled);\r
        }\r
-       \r
        LOGI("leave");\r
-\r
        return PRIV_MGR_ERROR_SUCCESS;\r
 }\r
-\r
-\r
+void\r
+PrivacyChecker::printCache(void)\r
+{\r
+       std::map < std::string, bool >::const_iterator iter = m_privacyCache.begin();\r
+       for (; iter != m_privacyCache.end(); ++iter)\r
+       {\r
+               LOGD(" %s : %d", iter->first.c_str(), iter->second);\r
+       }\r
+}\r
 int\r
-PrivacyChecker::updateCache(std::map < std::string, bool >& pkgCacheMap)\r
+PrivacyChecker::updateCache(const std::string privacyId)\r
 {\r
        LOGI("enter");\r
-       static const std::string PrivacyQuery = "SELECT PRIVACY_ID, IS_ENABLED from PrivacyInfo where PKG_ID=?";\r
+       static const std::string PrivacyQuery = "SELECT IS_ENABLED from Privacy where ID=? and PRIVACY_ID=?";\r
+\r
+       int res;\r
+       int id;\r
+       res = getUniqueIdFromPackageId(m_pkgId, id);\r
+       TryReturn( res == 0, -1, , "getUniqueIdFromPackageId : %d", res);\r
 \r
-       pkgCacheMap.clear();\r
+       LOGD("id : %d" ,id);\r
        \r
-       openDb(PRIVACY_DB_PATH.c_str(), pDbH, SQLITE_OPEN_READONLY);\r
+       openDb(DB_PATH.c_str(), pDbH, SQLITE_OPEN_READONLY);\r
        prepareDb(pDbH, PrivacyQuery.c_str(), pPrivacyStmt);\r
-       int res = sqlite3_bind_text(pPrivacyStmt.get(), 1, m_pkgId.c_str(), -1, SQLITE_TRANSIENT);\r
-       TryReturn( res == 0, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_text : %d", res);\r
+       res = sqlite3_bind_int(pPrivacyStmt.get(), 1, id);\r
+       TryReturn( res == 0, -1, , "sqlite3_bind_int : %d", res);\r
+\r
+       res = sqlite3_bind_text(pPrivacyStmt.get(), 2, privacyId.c_str(),  -1, SQLITE_TRANSIENT);\r
+       TryReturn( res == 0, -1, , "sqlite3_bind_text : %d", res);\r
 \r
        while ( sqlite3_step(pPrivacyStmt.get()) == SQLITE_ROW )\r
        {\r
-               LOGI("start");\r
-               const char* privacyId =  reinterpret_cast < const char* > (sqlite3_column_text(pPrivacyStmt.get(), 0));\r
-               bool privacyEnabled = sqlite3_column_int(pPrivacyStmt.get(), 1) > 0 ? true : false;\r
-\r
-               pkgCacheMap.insert(std::map < std::string, bool >::value_type(std::string(privacyId), privacyEnabled));\r
+               bool privacyEnabled = sqlite3_column_int(pPrivacyStmt.get(), 0) > 0 ? true : false;\r
 \r
-               LOGD("Privacy found : %s %d", privacyId, privacyEnabled);\r
+               std::lock_guard < std::mutex > guard(m_cacheMutex);\r
+               m_privacyCache.erase(privacyId);\r
+               m_privacyCache.insert(std::map < std::string, bool >::value_type(privacyId, privacyEnabled));\r
        }\r
+       \r
        LOGI("leave");\r
+\r
        return PRIV_MGR_ERROR_SUCCESS;\r
 }
\ No newline at end of file
diff --git a/client/src/PrivacyManager.cpp b/client/src/PrivacyManager.cpp
new file mode 100644 (file)
index 0000000..fca7d71
--- /dev/null
@@ -0,0 +1,149 @@
+/*\r
+ * Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved\r
+ *\r
+ *    Licensed under the Apache License, Version 2.0 (the "License");\r
+ *    you may not use this file except in compliance with the License.\r
+ *    You may obtain a copy of the License at\r
+ *\r
+ *        http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ *    Unless required by applicable law or agreed to in writing, software\r
+ *    distributed under the License is distributed on an "AS IS" BASIS,\r
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ *    See the License for the specific language governing permissions and\r
+ *    limitations under the License.\r
+ */\r
+\r
+#include <PrivacyManager.h>\r
+#include <SocketClient.h>\r
+#include <PrivacyIdInfo.h>\r
+#include <algorithm> \r
+#include <memory>\r
+#include <Utils.h>\r
+\r
+std::mutex PrivacyManager::m_singletonMutex;\r
+PrivacyManager* PrivacyManager::m_pInstance = NULL;\r
+const std::string PrivacyManager::INTERFACE_NAME("PrivacyInfoService");\r
+\r
+PrivacyManager::PrivacyManager(void)\r
+{\r
+       std::unique_ptr<SocketClient> pSocketClient(new SocketClient(INTERFACE_NAME));\r
+       m_pSocketClient = std::move(pSocketClient);\r
+}\r
+\r
+PrivacyManager*\r
+PrivacyManager::getInstance(void)\r
+{\r
+       std::lock_guard<std::mutex> guard(m_singletonMutex);\r
+       if (m_pInstance == NULL)\r
+               m_pInstance = new PrivacyManager();\r
+       return m_pInstance;\r
+}\r
+\r
+int\r
+PrivacyManager::addAppPackagePrivacyInfo(const std::string pkgId, const std::list < std::string >& pList)\r
+{\r
+       int result;\r
+\r
+       std::list < std::string > privacyList;\r
+\r
+       result = PrivacyIdInfo::getPrivacyIdListFromPrivilegeList(pList, privacyList);\r
+       if (result != PRIV_MGR_ERROR_SUCCESS )\r
+               return result;\r
+\r
+       if (privacyList.size() == 0)\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
+\r
+       m_pSocketClient->connect();\r
+       m_pSocketClient->call("addPrivacyInfo", pkgId, privacyList, &result);\r
+       m_pSocketClient->disconnect();\r
+\r
+       return result;\r
+}\r
+\r
+int\r
+PrivacyManager::removeAppPackagePrivacyInfo(const std::string pkgId)\r
+{\r
+       int result;\r
+       m_pSocketClient->connect();\r
+       m_pSocketClient->call("removePrivacyInfo", pkgId, pkgId, &result);\r
+       m_pSocketClient->disconnect();\r
+\r
+       return result;\r
+}\r
+\r
+int\r
+PrivacyManager::setPrivacySetting(const std::string pkgId, const std::string privacyId, bool isEnabled)\r
+{\r
+       int result;\r
+       m_pSocketClient->connect();\r
+       m_pSocketClient->call("setPrivacySetting", pkgId, privacyId, isEnabled, &result);\r
+       m_pSocketClient->disconnect();\r
+\r
+       return result;\r
+}\r
+       \r
+int\r
+PrivacyManager::getPrivacyAppPackages(std::list < std::string >& pList)\r
+{\r
+       int result, size;\r
+       std::string temp1;\r
+       SocketClient* p = new SocketClient(INTERFACE_NAME);\r
+       p->connect();\r
+       p->call("getPrivacyAppPackages", &result, &size, &pList);\r
+       p->disconnect();\r
+\r
+       return result;\r
+}\r
+\r
+int\r
+PrivacyManager::getAppPackagePrivacyInfo(const std::string pkgId, std::list < std::pair <std::string, bool > > & list)\r
+{\r
+\r
+       std::unique_ptr <SocketClient> pSocketClient (new SocketClient(INTERFACE_NAME));\r
+\r
+       int result;\r
+       pSocketClient->connect();\r
+       pSocketClient->call("getAppPackagePrivacyInfo", pkgId, &result, &list);\r
+\r
+       pSocketClient->disconnect();\r
+\r
+       for (std::list < std::pair <std::string, bool > >::const_iterator iter = list.begin(); iter != list.end(); ++iter){\r
+               LOGD(" %s : %d", iter->first.c_str(), iter->second);\r
+       }\r
+\r
+       return result;\r
+}\r
+\r
+int\r
+PrivacyManager::isUserPrompted(const std::string pkgId, bool& isPrompted)\r
+{\r
+       LOGI("enter");\r
+\r
+       std::unique_ptr <SocketClient> pSocketClient (new SocketClient(INTERFACE_NAME));\r
+\r
+       int result;\r
+       pSocketClient->connect();\r
+       pSocketClient->call("isUserPrompted", pkgId, &result, &isPrompted);\r
+       pSocketClient->disconnect();\r
+\r
+       LOGI("leave");\r
+\r
+       return result;\r
+}\r
+\r
+int\r
+PrivacyManager::setUserPrompted(const std::string pkgId, bool prompted)\r
+{\r
+       LOGI("enter");\r
+\r
+       std::unique_ptr <SocketClient> pSocketClient (new SocketClient(INTERFACE_NAME));\r
+\r
+       int result;\r
+       pSocketClient->connect();\r
+       pSocketClient->call("setUserPrompted", pkgId, prompted, &result);\r
+       pSocketClient->disconnect();\r
+       LOGI("leave");\r
+\r
+       return result;\r
+}
\ No newline at end of file
diff --git a/client/src/PrivacyManagerClient.cpp b/client/src/PrivacyManagerClient.cpp
deleted file mode 100644 (file)
index 1e15a37..0000000
+++ /dev/null
@@ -1,190 +0,0 @@
-/*\r
- * Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved\r
- *\r
- *    Licensed under the Apache License, Version 2.0 (the "License");\r
- *    you may not use this file except in compliance with the License.\r
- *    You may obtain a copy of the License at\r
- *\r
- *        http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- *    Unless required by applicable law or agreed to in writing, software\r
- *    distributed under the License is distributed on an "AS IS" BASIS,\r
- *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- *    See the License for the specific language governing permissions and\r
- *    limitations under the License.\r
- */\r
-\r
-#include <PrivacyManagerClient.h>\r
-#include <SocketClient.h>\r
-#include <PrivacyIdInfo.h>\r
-#include <algorithm> \r
-#include <memory>\r
-#include <Utils.h>\r
-\r
-std::mutex PrivacyManagerClient::m_singletonMutex;\r
-PrivacyManagerClient* PrivacyManagerClient::m_pInstance = NULL;\r
-const std::string PrivacyManagerClient::INTERFACE_NAME("PrivacyInfoService");\r
-\r
-PrivacyManagerClient::PrivacyManagerClient(void)\r
-{\r
-       std::unique_ptr<SocketClient> pSocketClient(new SocketClient(INTERFACE_NAME));\r
-       m_pSocketClient = std::move(pSocketClient);\r
-}\r
-\r
-PrivacyManagerClient*\r
-PrivacyManagerClient::getInstance(void)\r
-{\r
-       std::lock_guard<std::mutex> guard(m_singletonMutex);\r
-       if (m_pInstance == NULL)\r
-               m_pInstance = new PrivacyManagerClient();\r
-       return m_pInstance;\r
-}\r
-\r
-int\r
-PrivacyManagerClient::addAppPackagePrivacyInfo(const std::string pkgId, const std::list < std::string >& pList)\r
-{\r
-\r
-       std::list < std::string > privacyList;\r
-\r
-       int res = PrivacyIdInfo::getPrivacyIdListFromPrivilegeList(pList, privacyList);\r
-       if (res != PRIV_MGR_ERROR_SUCCESS )\r
-               return res;\r
-\r
-       if (privacyList.size() == 0)\r
-               return PRIV_MGR_ERROR_SUCCESS;\r
-\r
-#ifdef __READ_DB_IPC__\r
-       m_pSocketClient->connect();\r
-       m_pSocketClient->call("addPrivacyInfo", pkgId, privacyList, &result);\r
-       m_pSocketClient->disconnect();\r
-\r
-       return result;\r
-#else\r
-       LOGI("enter");\r
-\r
-       static const std::string pkgInfoQuery("INSERT INTO PackageInfo(PKG_ID, IS_SET) VALUES(?, ?)");\r
-       static const std::string privacyQuery("INSERT INTO PrivacyInfo(PKG_ID, PRIVACY_ID, IS_ENABLED) VALUES(?, ?, ?)");\r
-       \r
-       openDb(PRIVACY_DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);\r
-       prepareDb(pDbHandler, pkgInfoQuery.c_str(), pPkgInfoStmt);\r
-\r
-       res = sqlite3_bind_text(pPkgInfoStmt.get(), 1, pkgId.c_str(), -1, SQLITE_TRANSIENT);\r
-       TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_text : %d", res);\r
-       \r
-       res = sqlite3_bind_int(pPkgInfoStmt.get(), 2, 0);\r
-       TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_int : %d", res);\r
-\r
-       res = sqlite3_step(pPkgInfoStmt.get());\r
-       TryReturn( res == SQLITE_DONE || res == SQLITE_CONSTRAINT, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_step : %d", res);\r
-       \r
-       for ( std::list <std::string>::const_iterator iter = privacyList.begin(); iter != privacyList.end(); ++iter)\r
-       {\r
-               LOGD(" install privacy: %s", iter->c_str());\r
-               prepareDb(pDbHandler, privacyQuery.c_str(), pPrivacyStmt);\r
-               \r
-               res = sqlite3_bind_text(pPrivacyStmt.get(), 1, pkgId.c_str(), -1, SQLITE_TRANSIENT);\r
-               TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_int : %d", res);\r
-\r
-               res = sqlite3_bind_text(pPrivacyStmt.get(), 2, iter->c_str(), -1, SQLITE_TRANSIENT);\r
-               TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_text : %d", res);\r
-               \r
-               // Before setting app and popup is ready, default value is true\r
-               res = sqlite3_bind_int(pPrivacyStmt.get(), 3, 1);\r
-               TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_int : %d", res);\r
-\r
-               res = sqlite3_step(pPrivacyStmt.get());\r
-               TryReturn( res == SQLITE_DONE || res == SQLITE_CONSTRAINT, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_step : %d", res);\r
-\r
-               sqlite3_reset(pPrivacyStmt.get());\r
-       }\r
-\r
-       return 0;\r
-#endif\r
-}\r
-\r
-int\r
-PrivacyManagerClient::removeAppPackagePrivacyInfo(const std::string pkgId)\r
-{\r
-       int result;\r
-       m_pSocketClient->connect();\r
-       m_pSocketClient->call("removePrivacyInfo", pkgId, &result);\r
-       m_pSocketClient->disconnect();\r
-\r
-       return result;\r
-}\r
-\r
-int\r
-PrivacyManagerClient::setPrivacySetting(const std::string pkgId, const std::string privacyId, bool isEnabled)\r
-{\r
-       int result;\r
-       m_pSocketClient->connect();\r
-       m_pSocketClient->call("setPrivacySetting", pkgId, privacyId, isEnabled, &result);\r
-       m_pSocketClient->disconnect();\r
-\r
-       return result;\r
-}\r
-       \r
-int\r
-PrivacyManagerClient::getPrivacyAppPackages(std::list < std::string >& pList)\r
-{\r
-       int result, size;\r
-       std::string temp1;\r
-       SocketClient* p = new SocketClient(INTERFACE_NAME);\r
-       p->connect();\r
-       p->call("getPrivacyAppPackages", &result, &size, &pList);\r
-       p->disconnect();\r
-\r
-       return result;\r
-}\r
-\r
-int\r
-PrivacyManagerClient::getAppPackagePrivacyInfo(const std::string pkgId, std::list < std::pair <std::string, bool > > & list)\r
-{\r
-\r
-       std::unique_ptr <SocketClient> pSocketClient (new SocketClient(INTERFACE_NAME));\r
-\r
-       int result;\r
-       pSocketClient->connect();\r
-       pSocketClient->call("getAppPackagePrivacyInfo", pkgId, &result, &list);\r
-\r
-       pSocketClient->disconnect();\r
-\r
-       for (std::list < std::pair <std::string, bool > >::const_iterator iter = list.begin(); iter != list.end(); ++iter){\r
-               LOGD(" %s : %d", iter->first.c_str(), iter->second);\r
-       }\r
-\r
-       return result;\r
-}\r
-\r
-int\r
-PrivacyManagerClient::isUserPrompted(const std::string pkgId, bool& isPrompted)\r
-{\r
-       LOGI("enter");\r
-\r
-       std::unique_ptr <SocketClient> pSocketClient (new SocketClient(INTERFACE_NAME));\r
-\r
-       int result;\r
-       pSocketClient->connect();\r
-       pSocketClient->call("isUserPrompted", pkgId, &result, &isPrompted);\r
-       pSocketClient->disconnect();\r
-\r
-       LOGI("leave");\r
-\r
-       return result;\r
-}\r
-\r
-int\r
-PrivacyManagerClient::setUserPrompted(const std::string pkgId, bool prompted)\r
-{\r
-       LOGI("enter");\r
-\r
-       std::unique_ptr <SocketClient> pSocketClient (new SocketClient(INTERFACE_NAME));\r
-\r
-       int result;\r
-       pSocketClient->connect();\r
-       pSocketClient->call("setUserPrompted", pkgId, prompted, &result);\r
-       pSocketClient->disconnect();\r
-       LOGI("leave");\r
-\r
-       return result;\r
-}
\ No newline at end of file
index 5ff74fe..87a01e8 100644 (file)
@@ -17,7 +17,7 @@
 #include <string.h>\r
 #include <string>\r
 #include <memory>\r
-#include <PrivacyManagerClient.h>\r
+#include <PrivacyManager.h>\r
 #include <privacy_manager_client.h>\r
 #include <privacy_manager_client_types.h>\r
 #include "privacy_manager_client_internal_types.h"\r
index d4d9e99..691c69c 100644 (file)
@@ -17,7 +17,7 @@
 #include <string.h>\r
 #include <string>\r
 #include <memory>\r
-#include <PrivacyManagerClient.h>\r
+#include <PrivacyManager.h>\r
 #include <privacy_manager_client.h>\r
 #include <privacy_manager_client_types.h>\r
 #include "privacy_manager_client_internal_types.h"\r
index 42ca68e..eb9c155 100644 (file)
@@ -17,8 +17,7 @@
 #include <string.h>\r
 #include <string>\r
 #include <memory>\r
-#include <dlog.h>\r
-#include <PrivacyManagerClient.h>\r
+#include <PrivacyManager.h>\r
 #include <privacy_manager_client.h>\r
 #include "privacy_manager_client_internal_types.h"\r
 \r
@@ -46,17 +45,14 @@ int create_privacy_info_client_s(const char* package_id, bool enabled, privacy_i
 \r
 int privacy_manager_client_install_privacy(const char *package_id, const char** privacy_list)\r
 {\r
-       LOGI("enter");\r
-\r
-       PrivacyManagerClient* pInst = PrivacyManagerClient::getInstance();\r
+       int retval;\r
+       PrivacyManager* pInst = PrivacyManager::getInstance();\r
        std::list < std::string > privacyList;\r
 \r
-       while (*privacy_list[0] != '\0')\r
-               privacyList.push_back(std::string(*privacy_list++));\r
-\r
-       int retval = pInst->addAppPackagePrivacyInfo(std::string(package_id), privacyList);\r
+       while (*privacy_list != NULL)\r
+               privacyList.push_back(std::string(*privacy_list ++));\r
 \r
-       LOGI("leave");\r
+       retval = pInst->addAppPackagePrivacyInfo(std::string(package_id), privacyList);\r
 \r
        return retval;\r
 }\r
@@ -65,14 +61,13 @@ int privacy_manager_client_uninstall_privacy(const char *package_id)
 {\r
        if (package_id == NULL)\r
                return PRIV_MGR_ERROR_INVALID_PARAMETER;\r
-       int res = PrivacyManagerClient::getInstance()->removeAppPackagePrivacyInfo(std::string(package_id));\r
-       return res;\r
+       return PrivacyManager::getInstance()->removeAppPackagePrivacyInfo(std::string(package_id));\r
 }\r
 \r
 int privacy_manager_client_foreach_privacy_packages(privacy_manager_client_privacy_packages_cb callback, void *user_data)\r
 {\r
        int retval;\r
-       PrivacyManagerClient* pInst = PrivacyManagerClient::getInstance();\r
+       PrivacyManager* pInst = PrivacyManager::getInstance();\r
 \r
        std::list < std::string > list;\r
        retval = pInst->getPrivacyAppPackages(list);\r
@@ -93,11 +88,11 @@ int privacy_manager_client_foreach_get_privacy_info(const char *package_id, priv
 {\r
        int retval;\r
        bool res;\r
-       PrivacyManagerClient* pInst = PrivacyManagerClient::getInstance();\r
+       PrivacyManager* pInst = PrivacyManager::getInstance();\r
 \r
        std::list < std::pair <std::string, bool > > list;\r
 \r
-       retval = pInst->getAppPackagePrivacyInfo(std::string(package_id), list);\r
+       retval = pInst->getAppPackagePrivacyInfo(package_id, list);\r
        if (retval != PRIV_MGR_ERROR_SUCCESS)\r
                return retval;\r
        if (list.size() == 0)\r
@@ -117,7 +112,7 @@ int privacy_manager_client_foreach_get_privacy_info(const char *package_id, priv
 }\r
 int privacy_manager_client_set_package_privacy(const char *package_id, const char *privacy_id, bool enable)\r
 {\r
-       PrivacyManagerClient* pInst = PrivacyManagerClient::getInstance();\r
+       PrivacyManager* pInst = PrivacyManager::getInstance();\r
 \r
        return pInst->setPrivacySetting(package_id, privacy_id, enable);\r
 }\r
index 02b0068..6b42115 100644 (file)
@@ -20,7 +20,6 @@
 #include <string>\r
 #include <privacy_manager_client_types.h>\r
 \r
-static const std::string PRIVACY_DB_PATH("/opt/dbspace/.privacy.db");\r
 static const std::string SERVER_ADDRESS ("/tmp/privacy_manager_server");\r
 static const std::string DBUS_PATH("/privacy_manager/dbus_notification");\r
 static const std::string DBUS_SIGNAL_INTERFACE("org.tizen.privacy_manager.signal");\r
index e3da8ab..a368742 100644 (file)
@@ -37,7 +37,6 @@ enum {
        PRIV_MGR_ERROR_IPC_ERROR = -16,\r
        PRIV_MGR_ERROR_INVALID_STATE = -17,\r
        PRIV_MGR_ERROR_SYSTEM_ERROR = -18,\r
-       PRIV_MGR_ERROR_USER_NOT_CONSENTED = -19,\r
 \r
        PRIV_MGR_ERROR_UNKNOWN = -(0x99),\r
 };\r
index 3772242..ef8b260 100644 (file)
@@ -39,65 +39,65 @@ struct PrivacyDeviceCapPair
 \r
 static struct PrivacyPrivilegePair DeviceCapToPrivacyTable[] =\r
 {\r
-       {"bluetooth.admin",                     "http://tizen.org/privacy/bluetooth"},\r
-       {"bluetooth.gap",                               "http://tizen.org/privacy/bluetooth"},\r
-       {"bluetooth.spp",                               "http://tizen.org/privacy/bluetooth"},\r
-       {"bluetoothmanager",                    "http://tizen.org/privacy/bluetooth"},\r
+       {"bluetooth.admin", "bluetooth"},\r
+       {"bluetooth.gap", "bluetooth"},\r
+       {"bluetooth.spp", "bluetooth"},\r
+       {"bluetoothmanager", "bluetooth"},\r
 \r
-       {"calendar.read",                               "http://tizen.org/privacy/calender"},\r
-       {"calendar.write",                              "http://tizen.org/privacy/calender"},\r
+       {"calendar.read", "calender"},\r
+       {"calendar.write", "calender"},\r
 \r
-       {"contact.read",                                "http://tizen.org/privacy/contact"},\r
-       {"contact.write",                               "http://tizen.org/privacy/contact"},\r
+       {"contact.read", "contact"},\r
+       {"contact.write", "contact"},\r
 \r
-       {"messaging.read",                              "http://tizen.org/privacy/messaging"},\r
-       {"messaging.write",                     "http://tizen.org/privacy/messaging"},\r
-       {"messaging.send",                              "http://tizen.org/privacy/messaging"},\r
+       {"messaging.read", "messaging"},\r
+       {"messaging.write", "messaging"},\r
+       {"messaging.send", "messaging"},\r
 \r
-       {"nfc.admin",                                   "http://tizen.org/privacy/nfc"},\r
-       {"nfcmanager.cardemulation",    "http://tizen.org/privacy/nfc"},\r
-       {"nfc.common",                                  "http://tizen.org/privacy/nfc"},\r
-       {"nfc.p2p",                                     "http://tizen.org/privacy/nfc"},\r
-       {"nfc.tag",                                     "http://tizen.org/privacy/nfc"},\r
+       {"nfc.admin", "nfc"},\r
+       {"nfcmanager.cardemulation", "nfc"},\r
+       {"nfc.common", "nfc"},\r
+       {"nfc.p2p", "nfc"},\r
+       {"nfc.tag", "nfc"},\r
 \r
-       {"XMLHttpRequest",                              "http://tizen.org/privacy/internet"},\r
-       {"externalNetworkAccess",               "http://tizen.org/privacy/internet"},\r
+       {"XMLHttpRequest", "internet"},\r
+       {"externalNetworkAccess", "internet"},\r
 \r
        {"\0", "\0"}\r
 };\r
 \r
 static struct PrivacyPrivilegePair PrivilegeToPrivacyTable[] =\r
 {\r
-       {"http://tizen.org/privilege/bluetooth.admin",                  "http://tizen.org/privacy/bluetooth"},\r
-       {"http://tizen.org/privilege/bluetooth.gap",                    "http://tizen.org/privacy/bluetooth"},\r
-       {"http://tizen.org/privilege/bluetooth.health",                 "http://tizen.org/privacy/bluetooth"},\r
-       {"http://tizen.org/privilege/bluetooth.opp",                    "http://tizen.org/privacy/bluetooth"},\r
-       {"http://tizen.org/privilege/bluetooth.spp",                    "http://tizen.org/privacy/bluetooth"},\r
-       {"http://tizen.org/privilege/bluetoothmanager",                 "http://tizen.org/privacy/bluetooth"},\r
+       {"http://tizen.org/privilege/bluetooth.admin", "bluetooth"},\r
+       {"http://tizen.org/privilege/bluetooth.gap", "bluetooth"},\r
+       {"http://tizen.org/privilege/bluetooth.health", "bluetooth"},\r
+       {"http://tizen.org/privilege/bluetooth.opp", "bluetooth"},\r
+       {"http://tizen.org/privilege/bluetooth.spp", "bluetooth"},\r
+       {"http://tizen.org/privilege/bluetoothmanager", "bluetooth"},\r
 \r
-       {"http://tizen.org/privilege/calendar.read",                    "http://tizen.org/privacy/calender"},\r
-       {"http://tizen.org/privilege/calendar.write",                   "http://tizen.org/privacy/calender"},\r
+       {"http://tizen.org/privilege/calendar.read", "calender"},\r
+       {"http://tizen.org/privilege/calendar.write", "calender"},\r
 \r
-       {"http://tizen.org/privilege/contact.read",                     "http://tizen.org/privacy/contact"},\r
-       {"http://tizen.org/privilege/contact.write",                    "http://tizen.org/privacy/contact"},\r
+       {"http://tizen.org/privilege/contact.read", "contact"},\r
+       {"http://tizen.org/privilege/contact.write", "contact"},\r
 \r
-       {"http://tizen.org/privilege/contextmanager.privacy",   "http://tizen.org/privacy/context"},\r
-       {"http://tizen.org/privilege/contextmanager.upload",    "http://tizen.org/privacy/context"},\r
+       {"http://tizen.org/privilege/contextmanager.privacy", "context"},\r
+       {"http://tizen.org/privilege/contextmanager.upload", "context"},\r
 \r
-       {"http://tizen.org/privilege/location",                                 "http://tizen.org/privacy/location"},\r
+       {"http://tizen.org/privilege/location", "location"},\r
 \r
-       {"http://tizen.org/privilege/messaging.read",                   "http://tizen.org/privacy/messaging"},\r
-       {"http://tizen.org/privilege/messaging.write",                  "http://tizen.org/privacy/messaging"},\r
+       {"http://tizen.org/privilege/messaging.read", "messaging"},\r
+       {"http://tizen.org/privilege/messaging.write", "messaging"},\r
 \r
-       {"http://tizen.org/privilege/nfc.admin",                                "http://tizen.org/privacy/nfc"},\r
-       {"http://tizen.org/privilege/nfcmanager.cardemulation", "http://tizen.org/privacy/nfc"},\r
-       {"http://tizen.org/privilege/nfc.common",                               "http://tizen.org/privacy/nfc"},\r
-       {"http://tizen.org/privilege/nfc.p2p",                                  "http://tizen.org/privacy/nfc"},\r
-       {"http://tizen.org/privilege/nfc.tag",                                  "http://tizen.org/privacy/nfc"},\r
+       {"http://tizen.org/privilege/nfc.admin", "nfc"},\r
+       {"http://tizen.org/privilege/nfcmanager.cardemulation", "nfc"},\r
+       {"http://tizen.org/privilege/nfc.common", "nfc"},\r
+       {"http://tizen.org/privilege/nfc.p2p", "nfc"},\r
+       {"http://tizen.org/privilege/nfc.tag", "nfc"},\r
 \r
-       {"http://tizen.org/privilege/http",                                     "http://tizen.org/privacy/internet"},\r
-       {"http://tizen.org/privilege/socket",                                   "http://tizen.org/privacy/internet"},\r
-       {"http://tizen.org/privilege/web.service",                              "http://tizen.org/privacy/internet"},\r
+       {"http://tizen.org/privilege/http", "internet"},\r
+       {"http://tizen.org/privilege/socket", "internet"},\r
+       {"http://tizen.org/privilege/web.service", "internet"},\r
 \r
        {"\0", "\0"}\r
 };\r
index cb3db80..05112a1 100644 (file)
@@ -1,21 +1,12 @@
 <manifest>
         <define>
-                <domain name="privacy-manager" />
+                <domain name="policy-manager" />
                 <provide>
-                        <label name="privacy-manager::daemon" />
-                        <label name="privacy-manager::db" />
+                        <label name="policy-manager::daemon" />
+                        <label name="policy-manager::db" />
                 </provide>
         </define>
         <request>
-                <domain name="privacy-manager-server" />
+                <domain name="_" />
         </request>
-        <assign>
-                       <filesystem path="/usr/bin/privacy-manager-server" label="privacy-manager::daemon" exec_label="privacy-manager::daemon"/>
-                       <filesystem path="/usr/share/license/privacy-manager-server" label="_"/>                
-                       <filesystem path="/etc/rc.d/init.d/privacy-manager-server.sh" label="_" exec_label="none"/>
-                       <filesystem path="/etc/rc.d/rc3.d/S10privacy-manager-server.sh" label="_" exec_label="none"/>
-                       <filesystem path="/etc/rc.d/rc5.d/S10privacy-manager-server.sh" label="_" exec_label="none"/>           
-                       <filesystem path="/usr/lib/systemd/system/privacy-manager-server.service" label="_" exec_label="none" />
-                       <filesystem path="/usr/lib/systemd/system/multi-user.target.wants/privacy-manager-server.service" label="_" exec_label="none" />
-               </assign> 
 </manifest>
index 3352a9e..80a6d04 100644 (file)
@@ -20,13 +20,15 @@ BuildRequires: pkgconfig(dbus-glib-1)
 Requires(post):   /sbin/ldconfig
 Requires(postun): /sbin/ldconfig
 
+provides: privacy-manager-server
+
 %description
 Privacy Management
 
 %package -n privacy-manager-server-devel
 summary: privacy-manager server
 Group: Development/Libraries
-Requires: privacy-manager = %{version}-%{release}
+Requires: privacy-manager-server = %{version}-%{release}
 
 %description -n privacy-manager-server-devel
 privacy-manager server devel
@@ -34,7 +36,9 @@ privacy-manager server devel
 %package -n privacy-manager-client
 summary: privacy-manager client
 Group: Development/Libraries
-Requires: privacy-manager = %{version}-%{release}
+Requires: privacy-manager-server = %{version}-%{release}
+
+provides: libprivacy-manager-client.so.1
 
 %description -n privacy-manager-client
 privacy-manager client
@@ -42,7 +46,6 @@ privacy-manager client
 %package -n privacy-manager-client-devel
 Summary:    privacy-manager client devel
 Group:      Development/Libraries
-BuildRequires:  pkgconfig(libxml-2.0)
 Requires:   privacy-manager-client = %{version}-%{release}
 
 %description -n privacy-manager-client-devel
@@ -92,7 +95,7 @@ make %{?jobs:-j%jobs}
 %install
 rm -rf %{buildroot}
 mkdir -p %{buildroot}/usr/share/license
-cp LICENSE.APLv2 %{buildroot}/usr/share/license/privacy-manager-server
+cp LICENSE.APLv2 %{buildroot}/usr/share/license/%{name}
 mkdir -p %{buildroot}/usr/share/license
 cp LICENSE.APLv2 %{buildroot}/usr/share/license/privacy-manager-client
 mkdir -p %{buildroot}/usr/bin
@@ -103,7 +106,7 @@ cp res/usr/bin/* %{buildroot}/usr/bin/
 %make_install -n privacy-manager-client
 install -D %{SOURCE2} %{buildroot}%{_datadir}/privacy-manager-client.manifest
 
-%make_install -n privacy-manager
+%make_install -n privacy-manager-server
 install -D %{SOURCE1} %{buildroot}%{_datadir}/privacy-manager-server.manifest
 
 %make_install -n capi-security-privacy-manager
@@ -111,8 +114,8 @@ install -D %{SOURCE4} %{buildroot}%{_datadir}/capi-security-privacy-manager.mani
 
 #mkdir -p %{buildroot}/etc/rc.d/rc3.d
 #mkdir -p %{buildroot}/etc/rc.d/rc5.d
-#ln -sf res/etc/rc.d/init.d/privacy-manager-server.sh %{buildroot}/etc/rc.d/rc3.d/S10privacy-manager-server.sh
-#ln -sf res/etc/rc.d/init.d/privacy-manager-server.sh %{buildroot}/etc/rc.d/rc5.d/S10privacy-manager-server.sh
+#ln -sf /etc/rc.d/init.d/wrt-security-daemon.sh %{buildroot}/etc/rc.d/rc3.d/S10privacy-manager-server.sh
+#ln -sf /etc/rc.d/init.d/wrt-security-daemon.sh %{buildroot}/etc/rc.d/rc5.d/S10privacy-manager-server.sh
 
 mkdir -p %{buildroot}%{_libdir}/systemd/system/multi-user.target.wants
 install -m 0644 %{SOURCE3} %{buildroot}%{_libdir}/systemd/system/privacy-manager-server.service
@@ -121,13 +124,11 @@ ln -sf /usr/lib/systemd/system/privacy-manager-server.service %{buildroot}%{_lib
 %clean
 rm -rf %{buildroot}
 
-%post -n privacy-manager-server
+%post
 /sbin/ldconfig
 
-echo "Check privacy DB"
 if [ ! -f /opt/dbspace/.privacy.db ]
 then
-       echo "Create privacy DB"
        /usr/bin/privacy_manager_create_clean_db.sh
 fi
 
@@ -136,10 +137,10 @@ fi
 
 %files -n privacy-manager-server
 %defattr(-,root,root,-)
-%manifest %{_datadir}/privacy-manager-server.manifest
+%manifest %{_datadir}/%{name}.manifest
 %{_bindir}/*
 %{_libdir}/systemd/*
-#/etc/rc.d/init.d/privacy-manager-server.sh
+#%{_libdir}/etc/rc.d/init.d/privacy-manager-server.sh
 #%attr(755,root,root) /etc/rc.d/init.d/privacy-manager-server.sh
 #/etc/rc.d/rc3.d/S10privacy-manager-server.sh
 #/etc/rc.d/rc5.d/S10privacy-manager-server.sh
@@ -151,9 +152,8 @@ fi
 %files -n privacy-manager-client
 %defattr(-,root,root,-)
 %manifest %{_datadir}/privacy-manager-client.manifest
-%{_libdir}/libprivacy-manager-client.so*
+%{_libdir}/*.so*
 /usr/share/license/privacy-manager-client
-/usr/etc/package-manager/parserlib/libprivileges.so
 
 %files -n privacy-manager-client-devel
 %defattr(-,root,root,-)
@@ -168,3 +168,4 @@ fi
 %{_includedir}/privacymgr/*.h
 %{_libdir}/libcapi-security-privacy-manager.so
 %{_libdir}/pkgconfig/capi-security-privacy-manager.pc
+
diff --git a/pkgmgr_plugin/CMakeLists.txt b/pkgmgr_plugin/CMakeLists.txt
deleted file mode 100644 (file)
index c3898b6..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-
-SET (this_target privileges)
-
-SET(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/cmake_build_tmp/output)
-
-INCLUDE(FindPkgConfig)
-pkg_check_modules(bin_pkgs REQUIRED dlog libxml-2.0)
-
-INCLUDE_DIRECTORIES(
-    /usr/include
-    /usr/include/glib-2.0 
-    /usr/lib/glib-2.0/include
-    /usr/include/libxml2
-    /usr/include/package_manager
-    /usr/include/dlog
-    "${CMAKE_SOURCE_DIR}/client/inc/"
-    "${CMAKE_SOURCE_DIR}/common/inc/"
-    )
-
-SET (${this_target}_SOURCE_FILES
-    privileges.cpp
-    )
-
-ADD_DEFINITIONS("-DDLOG_ERROR_ENABLED")
-ADD_DEFINITIONS("-DLOG_TAG=\"PRIVILEGE_PLUGIN\"")
-SET(EXTRA_CFLAGS  "${EXTRA_CFLAGS} -Wall" )
-
-SET(CMAKE_C_FLAGS_PROFILING    " -g -pg")
-SET(CMAKE_CXX_FLAGS_PROFILING  " -std=c++0x -g -pg")
-SET(CMAKE_C_FLAGS_DEBUG        " -g")
-SET(CMAKE_CXX_FLAGS_DEBUG      " -std=c++0x -g")
-SET(CMAKE_C_FLAGS_RELEASE      " -g")
-SET(CMAKE_CXX_FLAGS_RELEASE    " -std=c++0x -g")
-SET(CMAKE_C_FLAGS_CCOV         " -g --coverage")
-SET(CMAKE_CXX_FLAGS_CCOV       " -std=c++0x -g --coverage")
-
-## Create Library
-ADD_LIBRARY (${this_target} SHARED ${${this_target}_SOURCE_FILES} )
-ADD_DEPENDENCIES(${this_target} privacy-manager-client)
-## SET LINKER FLAGS
-SET(CMAKE_SHARED_LINKER_FLAGS -Wl,--no-undefined)
-
-TARGET_LINK_LIBRARIES(${this_target} "-lxml2" )
-TARGET_LINK_LIBRARIES(${this_target} "-lglib-2.0" )
-TARGET_LINK_LIBRARIES(${this_target} "-ldlog" )
-TARGET_LINK_LIBRARIES(${this_target} "-lprivacy-manager-client" "-L../client" )
-
-ADD_CUSTOM_COMMAND(TARGET ${this_target}
-    POST_BUILD
-        COMMAND ${CMAKE_COMMAND} -E copy ${LIBRARY_OUTPUT_PATH}/${CMAKE_SHARED_LIBRARY_PREFIX}${this_target}${CMAKE_SHARED_LIBRARY_SUFFIX} ${LIBRARY_OUTPUT_PATH}/debug/${CMAKE_SHARED_LIBRARY_PREFIX}${this_target}${CMAKE_SHARED_LIBRARY_SUFFIX}
-        COMMAND ${CMAKE_STRIP} --strip-unneeded ${LIBRARY_OUTPUT_PATH}/${CMAKE_SHARED_LIBRARY_PREFIX}${this_target}${CMAKE_SHARED_LIBRARY_SUFFIX}
-    COMMENT "strip ${this_target}"
-        )   
-
-INSTALL(TARGETS ${this_target} DESTINATION "../etc/package-manager/parserlib")
-
diff --git a/pkgmgr_plugin/privileges.cpp b/pkgmgr_plugin/privileges.cpp
deleted file mode 100644 (file)
index d26dd1a..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-//\r
-// Open Service Platform\r
-// Copyright (c) 2013 Samsung Electronics Co., Ltd.\r
-//\r
-// Licensed under the Apache License, Version 2.0 (the License);\r
-// you may not use this file except in compliance with the License.\r
-// You may obtain a copy of the License at\r
-//\r
-//     http://www.apache.org/licenses/LICENSE-2.0\r
-//\r
-// Unless required by applicable law or agreed to in writing, software\r
-// distributed under the License is distributed on an "AS IS" BASIS,\r
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-// See the License for the specific language governing permissions and\r
-// limitations under the License.\r
-//\r
-\r
-#include <errno.h>\r
-#include <libxml/parser.h>\r
-#include <libxml/tree.h>\r
-#include <privacy_manager_client.h>\r
-#include <dlog.h>\r
-#include <list>\r
-#include <string>\r
-\r
-static const xmlChar _NODE_PRIVILEGES[]                = "privileges";\r
-static const xmlChar _NODE_PRIVILEGE[]         = "privilege";\r
-\r
-\r
-void destroy_char_list(char** ppList, int size)\r
-{\r
-       int i;\r
-       for (i = 0; i < size; ++i)\r
-       {\r
-               LOGD("delete: %s", ppList[i]);\r
-               if (ppList[i])\r
-                       free(ppList[i]);\r
-       }\r
-       free(ppList);\r
-}\r
-\r
-extern "C"\r
-__attribute__ ((visibility("default")))\r
-int PKGMGR_PARSER_PLUGIN_INSTALL(xmlDocPtr docPtr, const char* packageId)\r
-{\r
-       int ret;\r
-       LOGI("enter");\r
-\r
-       // Node: <privileges>\r
-       xmlNodePtr curPtr = xmlFirstElementChild(xmlDocGetRootElement(docPtr));\r
-       LOGD("Node: %s", curPtr->name);\r
-\r
-       curPtr = curPtr->xmlChildrenNode;\r
-       if (curPtr == NULL)\r
-       {\r
-               LOGD("No privileges");\r
-               return 0;\r
-       }\r
-\r
-       std::list <std::string> privilegeList;\r
-       while (curPtr != NULL)\r
-       {\r
-               LOGD("Node: %s", curPtr->name);\r
-\r
-               if (xmlStrcmp(curPtr->name, _NODE_PRIVILEGE) == 0)\r
-               {\r
-                       xmlChar* pPrivilege = xmlNodeListGetString(docPtr, curPtr->xmlChildrenNode, 1);\r
-                       LOGD(" value= %s", reinterpret_cast<char*>(pPrivilege));\r
-                       if (pPrivilege == NULL)\r
-                       {\r
-                               LOGE("Failed to get value");\r
-                               return -EINVAL;\r
-                       }\r
-            std::string temp (reinterpret_cast<char*> (pPrivilege));\r
-            LOGD(" test 1 : %s", temp.c_str());\r
-                       privilegeList.push_back(std::string( temp));\r
-               }\r
-               curPtr = curPtr->next;\r
-       }\r
-\r
-       char** ppPrivilegeList = (char**) calloc(privilegeList.size() + 1, sizeof(char*));\r
-       std::list <std::string>::iterator iter = privilegeList.begin();\r
-       for (int i = 0; i < privilegeList.size(); ++i)\r
-       {\r
-               LOGD(" test 2 : %s %d", iter->c_str(), i);\r
-               ppPrivilegeList[i] = (char*)calloc (strlen(iter->c_str()) + 1, sizeof(char));\r
-\r
-               if (ppPrivilegeList[i] == NULL)\r
-               {\r
-                       destroy_char_list(ppPrivilegeList, privilegeList.size() + 1);\r
-                       return -ENOMEM;\r
-               }\r
-               memcpy(ppPrivilegeList[i], iter->c_str(), strlen(iter->c_str()));\r
-               LOGD(" test 3 : %s", ppPrivilegeList[0]);\r
-               ++iter;\r
-       }\r
-       for (int i = 0; i < privilegeList.size(); ++i)\r
-               LOGD(" values : %s %x", ppPrivilegeList[i], (int)ppPrivilegeList[i]);\r
-\r
-       ppPrivilegeList[privilegeList.size()] = (char*)calloc (1, sizeof(char) + 1 );\r
-       memcpy(ppPrivilegeList[privilegeList.size()], "\0", 1);\r
-\r
-       ret = privacy_manager_client_install_privacy(packageId, (const char**) ppPrivilegeList);\r
-       destroy_char_list(ppPrivilegeList, privilegeList.size() + 1);\r
-       if (ret != PRIV_MGR_ERROR_SUCCESS)\r
-       {\r
-               LOGD("Failed to install privacy : %d", ret);\r
-               return -EINVAL;\r
-       }\r
-\r
-       LOGI("leave");\r
-}\r
-\r
-extern "C"\r
-__attribute__ ((visibility("default")))\r
-int PKGMGR_PARSER_PLUGIN_UNINSTALL(xmlDocPtr docPtr, const char* packageId)\r
-{\r
-       LOGI("enter");\r
-\r
-       privacy_manager_client_uninstall_privacy(packageId);\r
-\r
-       return 0;\r
-       LOGI("leave");  \r
-}\r
diff --git a/privacy-manager-test.pc.in b/privacy-manager-test.pc.in
new file mode 100644 (file)
index 0000000..0bba87a
--- /dev/null
@@ -0,0 +1,9 @@
+prefix=@PREFIX@
+exec_prefix=@EXEC_PREFIX@
+libdir=@LIBDIR@
+includedir=@INCLUDEDIR@
+
+Name: privacy-manager-server
+Description: Privacy Manager Server
+Version: @VERSION@
+Requires: 
index 49a0557..5b16806 100644 (file)
@@ -1,18 +1,25 @@
 PRAGMA foreign_keys = ON; BEGIN TRANSACTION;
 
 CREATE TABLE PackageInfo(
-    PKG_ID TEXT not null PRIMARY KEY UNIQUE,
+    UNIQUE_ID INTEGER PRIMARY KEY AUTOINCREMENT,
+    PKG_ID TEXT not null,
     IS_SET BOOL not null,
 CHECK(1) );
 
-CREATE TABLE PrivacyInfo(
-       PKG_ID TEXT not null ,
+CREATE TABLE Privacy(
+    ID INTEGER not null,
     PRIVACY_ID TEXT not null,
     IS_ENABLED INTEGER not null,
-    FOREIGN KEY(PKG_ID) REFERENCES PackageInfo(PKG_ID),
-    CONSTRAINT PKG_PRIVACY UNIQUE (PKG_ID, PRIVACY_ID)
+    FOREIGN KEY(ID) REFERENCES PackageInfo(UNQUE_ID),
 CHECK(1) );
 
+CREATE VIEW PrivacyView as SELECT 
+    PackageInfo.UNIQUE_ID, 
+    PackageInfo.PKG_ID, 
+    Privacy.PRIVACY_ID, 
+    Privacy.IS_ENABLED 
+    FROM PackageInfo, Privacy 
+    WHERE PackageInfo.UNIQUE_ID = Privacy.ID;
 COMMIT;
 BEGIN TRANSACTION; 
 CREATE TABLE DB_VERSION_0_1 (version INT); COMMIT;
index 2dc6f84..a0f2d39 100644 (file)
@@ -54,15 +54,16 @@ SET(PRIVACY_MANAGER_SERVER_SOURCES
        ${server_src_dir}/SocketService.cpp
        ${server_src_dir}/PrivacyManagerDaemon.cpp
        ${server_src_dir}/service/PrivacyInfoService.cpp
+       ${server_src_dir}/service/TestService.cpp
        ${server_src_dir}/PrivacyManagerServer.cpp
        ${server_src_dir}/NotificationServer.cpp
 
        )
 SET(PRIVACY_MANAGER_SERVER_HEADERS
-    #  ${server_include_dir}/SocketService.h
-    #   ${server_include_dir}/PrivacyManagerDaemon.h
-    #  ${common_include_dir}/SocketConnection.h
-    #  ${common_include_dir}/SocketConnection.h
+       ${server_include_dir}/SocketService.h
+       ${server_include_dir}/PrivacyManagerDaemon.h
+       ${common_include_dir}/SocketConnection.h
+       ${common_include_dir}/SocketConnection.h
 )
 SET(PRIVACY_MANAGER_SERVER_LDFLAGS " -module -avoid-version ")
 SET(PRIVACY_MANAGER_SERVER_CFLAGS  " ${CFLAGS} -fPIC ")
@@ -80,4 +81,4 @@ CONFIGURE_FILE(../privacy-manager-server.pc.in privacy-manager-server.pc @ONLY)
 
 INSTALL(TARGETS privacy-manager-server DESTINATION ../bin COMPONENT RuntimeLibraries)
 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/privacy-manager-server.pc DESTINATION ../lib/pkgconfig)
-INSTALL(FILES ${PRIVACY_MANAGER_SERVER_HEADERS} DESTINATION ../include/privacy_manager/server)
+INSTALL(FILES ${PRIVACY_MANAGER_SERVER_HEADERS} DESTINATION ../include/privacy_manager/server)
\ No newline at end of file
index ec75620..c9a7689 100644 (file)
  *    limitations under the License.\r
  */\r
 \r
-#ifndef _PRIVACY_MANAGER_SERVER_H_\r
-#define _PRIVACY_MANAGER_SERVER_H_\r
+#ifndef _PRIVACY_DB_H_\r
+#define _PRIVACY_DB_H_\r
 \r
 #include <string>\r
 #include <memory>\r
 #include <list>\r
 #include <mutex>\r
+#include <sqlite3.h>\r
 #include <NotificationServer.h>\r
 \r
 class NotificationServer;\r
+struct sqlite3;\r
+class a;\r
 class PrivacyManagerServer\r
 {\r
 private:\r
        static std::mutex m_singletonMutex;\r
+       static const std::string DB_PATH;\r
        static PrivacyManagerServer* m_pInstance;\r
+       sqlite3* m_pDBHandler;\r
        NotificationServer m_notificationServer;\r
 \r
+       const static std::string CREATE_PACKAGE_INFO_TABLE;\r
+       const static std::string CREATE_PRIVACY_TABLE;\r
+\r
 private:\r
        void createDB(void);\r
+       int isPackageIdAreadyExisted(const std::string pkgId, bool& isExisted);\r
 \r
 public:\r
 \r
@@ -40,9 +49,13 @@ public:
 \r
        static PrivacyManagerServer* getInstance(void);\r
 \r
+       sqlite3* getDBHandler(void);\r
+\r
+       int getUniqueIdFromPackageId(const std::string pkgId, int& id);\r
+\r
        int getPrivacyAppPackages(std::list <std::string>& list);\r
 \r
-       int getAppPackagePrivacyInfo(const std::string pkgId, std::list < std::pair < std::string, bool > > & list);\r
+       int getAppPackagePrivacyInfo(const std::string pkgId, std::list < std::pair < std::string, bool > > *pList);\r
 \r
        int setPrivacySetting(const std::string pkgId, const std::string privacyId, bool enabled);\r
 \r
@@ -56,4 +69,4 @@ public:
 };\r
 \r
 \r
-#endif // _PRIVACY_MANAGER_SERVER_H_
\ No newline at end of file
+#endif // _PRIVACY_DB_H_
\ No newline at end of file
diff --git a/server/inc/TestService.h b/server/inc/TestService.h
new file mode 100644 (file)
index 0000000..1498ce5
--- /dev/null
@@ -0,0 +1,39 @@
+/*\r
+ * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved\r
+ *\r
+ *    Licensed under the Apache License, Version 2.0 (the "License");\r
+ *    you may not use this file except in compliance with the License.\r
+ *    You may obtain a copy of the License at\r
+ *\r
+ *        http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ *    Unless required by applicable law or agreed to in writing, software\r
+ *    distributed under the License is distributed on an "AS IS" BASIS,\r
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ *    See the License for the specific language governing permissions and\r
+ *    limitations under the License.\r
+ */\r
+\r
+#ifndef _TEST_SERVICE_H_\r
+#define _TEST_SERVICE_H_\r
+\r
+#include <SocketConnection.h>\r
+#include <SocketService.h>\r
+\r
+class TestService {\r
+private:\r
+       inline static std::string getInterfaceName(void)\r
+       {\r
+               return "TestService";\r
+       }\r
+\r
+public:\r
+       static void registerCallbacks(SocketService* pSocketService)\r
+       {\r
+               pSocketService->registerServiceCallback(getInterfaceName(), std::string("test"), test);\r
+       }\r
+\r
+       static void test(SocketConnection* pConnector);\r
+\r
+};\r
+#endif // _TEST_SERVICE_H_
\ No newline at end of file
index b448e0a..44c9674 100644 (file)
@@ -17,6 +17,7 @@
 #include <string>\r
 #include <PrivacyManagerDaemon.h>\r
 #include <PrivacyInfoService.h>\r
+#include <TestService.h>\r
 #include <PrivacyManagerServer.h>\r
 \r
 PrivacyManagerDaemon* PrivacyManagerDaemon::pInstance = NULL;\r
@@ -50,6 +51,7 @@ PrivacyManagerDaemon::inialize(void)
        pSocketService->initialize();\r
 \r
        PrivacyInfoService::registerCallbacks(pSocketService);\r
+       TestService::registerCallbacks(pSocketService);\r
 \r
        return 0;\r
 }\r
index beacfec..c54d87b 100644 (file)
@@ -19,9 +19,9 @@
 #include <dlog.h>\r
 #include <Utils.h>\r
 #include <PrivacyManagerTypes.h>\r
-#include <sqlite3.h>\r
 \r
 std::mutex PrivacyManagerServer::m_singletonMutex;\r
+const std::string PrivacyManagerServer::DB_PATH("/opt/dbspace/.privacy.db");\r
 PrivacyManagerServer* PrivacyManagerServer::m_pInstance = NULL;\r
 \r
 void\r
@@ -31,19 +31,82 @@ PrivacyManagerServer::createDB(void)
 }\r
 \r
 int\r
+PrivacyManagerServer::isPackageIdAreadyExisted(const std::string pkgId, bool& isExisted)\r
+{\r
+       LOGI("enter");\r
+\r
+       isExisted = false;\r
+\r
+       static const std::string query = std::string("SELECT UNIQUE_ID from PackageInfo where PKG_ID=?");\r
+\r
+       int res;\r
+\r
+       openDb(DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);\r
+       prepareDb(pDbHandler, query.c_str(), pStmt);\r
+\r
+       res = sqlite3_bind_text(pStmt.get(), 1, pkgId.c_str(), -1, SQLITE_TRANSIENT);\r
+       TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_prepare_v2 : %d", res);\r
+\r
+       res = sqlite3_step(pStmt.get());\r
+       if (res == SQLITE_DONE)\r
+       {\r
+               isExisted = true;\r
+               return 0;\r
+       }\r
+\r
+       LOGI("leave");\r
+\r
+       return 0;\r
+}\r
+\r
+int\r
+PrivacyManagerServer::getUniqueIdFromPackageId(const std::string pkgId, int& uniqueId)\r
+{\r
+       LOGI("enter");\r
+\r
+       static const std::string query = std::string("SELECT UNIQUE_ID from PackageInfo where PKG_ID=?");\r
+\r
+       int res;\r
+\r
+       openDb(DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);\r
+       prepareDb(pDbHandler, query.c_str(), pStmt);\r
+\r
+       res = sqlite3_bind_text(pStmt.get(), 1, pkgId.c_str(), -1, SQLITE_TRANSIENT);\r
+       TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_prepare_v2 : %d", res);\r
+\r
+       res = sqlite3_step(pStmt.get());\r
+       TryReturn( res == SQLITE_ROW, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_step : %d", res);\r
+\r
+\r
+       int cnt = sqlite3_data_count(pStmt.get());\r
+       TryReturn(cnt != 0, PRIV_MGR_ERROR_NO_DATA, , "Failed to find data");\r
+\r
+       uniqueId = sqlite3_column_int(pStmt.get(), 0);\r
+\r
+       LOGI("%s : %d", pkgId.c_str(), uniqueId);\r
+\r
+       LOGI("leave");\r
+\r
+       return 0;\r
+}\r
+int\r
 PrivacyManagerServer::setPrivacySetting(const std::string pkgId, const std::string privacyId, bool enabled)\r
 {\r
        LOGI("enter");\r
 \r
-       static const std::string query = std::string("UPDATE PrivacyInfo set IS_ENABLED =? where PKG_ID=? and PRIVACY_ID=?");\r
+       static const std::string query = std::string("UPDATE Privacy set IS_ENABLED =? where ID=? and PRIVACY_ID=?");\r
+\r
+       int uniqueId;\r
+       int res = getUniqueIdFromPackageId(pkgId, uniqueId);\r
+       TryReturn(res == 0, PRIV_MGR_ERROR_NO_DATA, , "getUniqueIdFromPackageId : %d", res);\r
 \r
-       openDb(PRIVACY_DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);\r
+       openDb(DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);\r
        prepareDb(pDbHandler, query.c_str(), pStmt);\r
 \r
-       int res = sqlite3_bind_int(pStmt.get(), 1, enabled);\r
+       res = sqlite3_bind_int(pStmt.get(), 1, enabled);\r
        TryReturn(res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_int : %d", res);\r
 \r
-       res = sqlite3_bind_text(pStmt.get(), 2, pkgId.c_str(), -1, SQLITE_TRANSIENT);\r
+       res = sqlite3_bind_int(pStmt.get(), 2, uniqueId);\r
        TryReturn(res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_int : %d", res);\r
 \r
        res = sqlite3_bind_text(pStmt.get(), 3, privacyId.c_str(), -1, SQLITE_TRANSIENT);\r
@@ -65,9 +128,9 @@ PrivacyManagerServer::getPrivacyAppPackages(std::list <std::string>& list)
 {\r
        LOGI("enter");\r
 \r
-       std::string query = "SELECT PKG_ID from PackageInfo";\r
+       std::string query = "SELECT pkg_id from PackageInfo";\r
 \r
-       openDb(PRIVACY_DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);\r
+       openDb(DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);\r
        prepareDb(pDbHandler, query.c_str(), pStmt);\r
 \r
        while ( sqlite3_step(pStmt.get()) == SQLITE_ROW )\r
@@ -84,29 +147,35 @@ PrivacyManagerServer::getPrivacyAppPackages(std::list <std::string>& list)
 }\r
 \r
 int\r
-PrivacyManagerServer::getAppPackagePrivacyInfo(const std::string pkgId, std::list < std::pair < std::string, bool > >& privacyInfoList)\r
+PrivacyManagerServer::getAppPackagePrivacyInfo(const std::string pkgId, std::list < std::pair < std::string, bool > >* pPrivacyInfoList)\r
 {\r
        LOGI("enter");\r
 \r
-       static const std::string query = "SELECT PRIVACY_ID, IS_ENABLED from PrivacyInfo where PKG_ID=?";\r
+       static const std::string query = "SELECT PRIVACY_ID, IS_ENABLED from Privacy where ID=?";\r
+\r
+       int uniqueId;\r
+       int res = getUniqueIdFromPackageId(pkgId, uniqueId);\r
+       TryReturn( res == 0, -1, , "getUniqueIdFromPackageId : %d", res);\r
 \r
-       openDb(PRIVACY_DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);\r
+       openDb(DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);\r
        prepareDb(pDbHandler, query.c_str(), pStmt);\r
 \r
-       int res = sqlite3_bind_text(pStmt.get(), 1, pkgId.c_str(), -1, SQLITE_TRANSIENT);\r
+       res = sqlite3_bind_int(pStmt.get(), 1, uniqueId);\r
        TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_int : %d", res);\r
 \r
-       LOGI("start");\r
+       std::unique_ptr < std::list < std::pair < std:: string, bool > > > pList ( new std::list < std::pair < std:: string, bool > >);\r
 \r
-       while ( (res= sqlite3_step(pStmt.get())) == SQLITE_ROW )\r
+       LOGI("start");\r
+       while ((res= sqlite3_step(pStmt.get())) == SQLITE_ROW )\r
        {\r
                const char* privacyId =  reinterpret_cast < const char* > (sqlite3_column_text(pStmt.get(), 0));\r
                bool privacyEnabled = sqlite3_column_int(pStmt.get(), 1) > 0 ? true : false;\r
 \r
-               privacyInfoList.push_back( std::pair <std::string, bool> (std::string(privacyId), privacyEnabled) );\r
+               pList->push_back( std::pair <std::string, bool> (std::string(privacyId), privacyEnabled) );\r
 \r
                LOGD("Privacy found : %s %d", privacyId, privacyEnabled);\r
        }\r
+       *pPrivacyInfoList = *pList.release();\r
 \r
        LOGI("leave");\r
 \r
@@ -120,26 +189,35 @@ PrivacyManagerServer::addAppPackagePrivacyInfo(const std::string pkgId, const st
        LOGI("enter");\r
 \r
        static const std::string pkgInfoQuery("INSERT INTO PackageInfo(PKG_ID, IS_SET) VALUES(?, ?)");\r
-       static const std::string privacyQuery("INSERT INTO PrivacyInfo(PKG_ID, PRIVACY_ID, IS_ENABLED) VALUES(?, ?, ?)");\r
+       static const std::string privacyQuery("INSERT INTO Privacy(ID, PRIVACY_ID, IS_ENABLED) VALUES(?, ?, ?)");\r
+\r
+       int res;\r
+       int uniqueId;\r
+       bool check;\r
+       res = isPackageIdAreadyExisted(pkgId, check);\r
+       TryReturn(check, PRIV_MGR_ERROR_INVALID_STATE, ,"The pkg ID %s is alreay added : %d", pkgId.c_str(), res);\r
        \r
-       openDb(PRIVACY_DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);\r
+       openDb(DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);\r
        prepareDb(pDbHandler, pkgInfoQuery.c_str(), pPkgInfoStmt);\r
 \r
-       int res = sqlite3_bind_text(pPkgInfoStmt.get(), 1, pkgId.c_str(), -1, SQLITE_TRANSIENT);\r
+       res = sqlite3_bind_text(pPkgInfoStmt.get(), 1, pkgId.c_str(), -1, SQLITE_TRANSIENT);\r
        TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_text : %d", res);\r
        \r
        res = sqlite3_bind_int(pPkgInfoStmt.get(), 2, 0);\r
        TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_int : %d", res);\r
 \r
        res = sqlite3_step(pPkgInfoStmt.get());\r
-       TryReturn( res == SQLITE_DONE || res == SQLITE_CONSTRAINT, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_step : %d", res);\r
+       TryReturn( res == SQLITE_DONE, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_step : %d", res);\r
+\r
+       \r
+       res = getUniqueIdFromPackageId(pkgId, uniqueId);\r
+       TryReturn( res == PRIV_MGR_ERROR_SUCCESS, res, , "getUniqueIdFromPackageId : %d", res);\r
        \r
        for ( std::list <std::string>::const_iterator iter = privilegeList.begin(); iter != privilegeList.end(); ++iter)\r
        {\r
-               LOGD(" install privacy: %s", iter->c_str());\r
                prepareDb(pDbHandler, privacyQuery.c_str(), pPrivacyStmt);\r
                \r
-               res = sqlite3_bind_text(pPrivacyStmt.get(), 1, pkgId.c_str(), -1, SQLITE_TRANSIENT);\r
+               res = sqlite3_bind_int(pPrivacyStmt.get(), 1, uniqueId);\r
                TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_int : %d", res);\r
 \r
                res = sqlite3_bind_text(pPrivacyStmt.get(), 2, iter->c_str(), -1, SQLITE_TRANSIENT);\r
@@ -150,9 +228,7 @@ PrivacyManagerServer::addAppPackagePrivacyInfo(const std::string pkgId, const st
                TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_int : %d", res);\r
 \r
                res = sqlite3_step(pPrivacyStmt.get());\r
-               TryReturn( res == SQLITE_DONE || res == SQLITE_CONSTRAINT, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_step : %d", res);\r
-\r
-               sqlite3_reset(pPrivacyStmt.get());\r
+               TryReturn( res == SQLITE_DONE, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_step : %d", res);\r
        }\r
 \r
        return 0;\r
@@ -164,11 +240,14 @@ PrivacyManagerServer::removeAppPackagePrivacyInfo(const std::string pkgId)
        LOGI("enter");\r
 \r
        static const std::string pkgInfoQuery("DELETE FROM PackageInfo WHERE PKG_ID=?");\r
-       static const std::string privacyQuery("DELETE FROM PrivacyInfo WHERE PKG_ID=?");\r
+       static const std::string privacyQuery("DELETE FROM Privacy WHERE ID=?");\r
 \r
        int res;\r
+       int uniqueId;\r
+       res = getUniqueIdFromPackageId(pkgId, uniqueId);\r
+       TryReturn( res == 0, res, , "getUniqueIdFromPackageId : %d", res);\r
 \r
-       openDb(PRIVACY_DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);\r
+       openDb(DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);\r
        prepareDb(pDbHandler, pkgInfoQuery.c_str(), pPkgInfoStmt);\r
 \r
        res = sqlite3_bind_text(pPkgInfoStmt.get(), 1, pkgId.c_str(), -1, SQLITE_TRANSIENT);\r
@@ -179,8 +258,8 @@ PrivacyManagerServer::removeAppPackagePrivacyInfo(const std::string pkgId)
 \r
        prepareDb(pDbHandler, privacyQuery.c_str(), pPrivacyStmt);\r
 \r
-       res = sqlite3_bind_text(pPrivacyStmt.get(), 1, pkgId.c_str(), -1, SQLITE_TRANSIENT);\r
-       TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_text : %d", res); \r
+       res = sqlite3_bind_int(pPrivacyStmt.get(), 1, uniqueId);\r
+       TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_int : %d", res);  \r
 \r
        res = sqlite3_step(pPrivacyStmt.get());\r
        TryReturn( res == SQLITE_DONE, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_step : %d", res);\r
@@ -195,10 +274,14 @@ PrivacyManagerServer::isUserPrompted(const std::string pkgId, bool& isPrompted)
 \r
        static const std::string query = "SELECT IS_SET from PackageInfo where PKG_ID=?";\r
 \r
-       openDb(PRIVACY_DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);\r
+       int uniqueId;\r
+       int res = getUniqueIdFromPackageId(pkgId, uniqueId);\r
+       TryReturn( res == 0, res, , "getUniqueIdFromPackageId : %d", res);\r
+\r
+       openDb(DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);\r
        prepareDb(pDbHandler, query.c_str(), pStmt);\r
 \r
-       int res = sqlite3_bind_text(pStmt.get(), 1, pkgId.c_str(), -1, SQLITE_TRANSIENT);\r
+       res = sqlite3_bind_text(pStmt.get(), 1, pkgId.c_str(), -1, SQLITE_TRANSIENT);\r
        TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_text : %d", res);\r
 \r
        std::unique_ptr < std::list < std::pair < std:: string, bool > > > pList ( new std::list < std::pair < std:: string, bool > >);\r
@@ -227,7 +310,7 @@ PrivacyManagerServer::setUserPrompted(const std::string pkgId, bool prompted)
 \r
        int res;\r
 \r
-       openDb(PRIVACY_DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);\r
+       openDb(DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);\r
        prepareDb(pDbHandler, query.c_str(), pStmt);\r
 \r
        res = sqlite3_bind_int(pStmt.get(), 1, prompted? 1 : 0);\r
@@ -261,4 +344,10 @@ PrivacyManagerServer::getInstance(void)
        }\r
        LOGI("leave");\r
        return m_pInstance;\r
-}
\ No newline at end of file
+}\r
+\r
+sqlite3*\r
+PrivacyManagerServer::getDBHandler(void)\r
+{\r
+       return m_pDBHandler;\r
+}\r
index d822e13..664da44 100644 (file)
@@ -90,7 +90,7 @@ PrivacyInfoService::getAppPackagePrivacyInfo(SocketConnection* pConnector)
        \r
        std::list < std::pair < std::string, bool > > infoList;\r
        \r
-       int res = pPrivacyManagerServer->getAppPackagePrivacyInfo(pkgId, infoList);\r
+       int res = pPrivacyManagerServer->getAppPackagePrivacyInfo(pkgId, &infoList);\r
 \r
        pConnector->write( res );\r
        pConnector->write( infoList );\r
diff --git a/server/src/service/TestService.cpp b/server/src/service/TestService.cpp
new file mode 100644 (file)
index 0000000..d9e77cc
--- /dev/null
@@ -0,0 +1,29 @@
+/*\r
+ * Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved\r
+ *\r
+ *    Licensed under the Apache License, Version 2.0 (the "License");\r
+ *    you may not use this file except in compliance with the License.\r
+ *    You may obtain a copy of the License at\r
+ *\r
+ *        http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ *    Unless required by applicable law or agreed to in writing, software\r
+ *    distributed under the License is distributed on an "AS IS" BASIS,\r
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ *    See the License for the specific language governing permissions and\r
+ *    limitations under the License.\r
+ */\r
+\r
+\r
+#include <TestService.h>\r
+\r
+void\r
+TestService::test(SocketConnection* pConnector)\r
+{\r
+       std::string res1, res2;\r
+       pConnector->read(&res1, &res2);\r
+       LOGD("TEST received: %s %s", res1.c_str(),res2.c_str());\r
+\r
+       pConnector->write(std::string("-test OK-"));\r
+       pConnector->write(std::string("-byebye-"));\r
+}\r