2 * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
20 #include <pkgmgr-info.h>
23 #include "PrivacyGuardDb.h"
24 #include "PrivacyIdInfo.h"
27 #include "CynaraService.h"
29 //static cynara_monitor_configuration *p_conf;
30 static cynara_monitor *p_cynara_monitor;
31 static cynara_monitor_entry **monitor_entries;
34 std::mutex PrivacyGuardDb::m_singletonMutex;
35 PrivacyGuardDb* PrivacyGuardDb::m_pInstance = NULL;
37 static const char* privacy_list[5] = { "http://tizen.org/privacy/location",
38 "http://tizen.org/privacy/contact",
39 "http://tizen.org/privacy/calendar",
40 "http://tizen.org/privacy/messaging",
41 "http://tizen.org/privacy/callhistory" };
43 #ifdef __FILTER_LISTED_PKG
44 const std::string PrivacyGuardDb::PRIVACY_FILTER_LIST_FILE = std::string("/usr/share/privacy-guard/privacy-guard-list.ini");
45 const std::string PrivacyGuardDb::FILTER_KEY = std::string("package_id");
46 std::map < std::string, bool > PrivacyGuardDb::m_filteredPkgList;
50 PrivacyGuardDb::createDB(void)
56 PrivacyGuardDb::openSqliteDB(void)
59 res = sqlite3_open_v2(PRIVACY_DB_PATH, &m_sqlHandler, SQLITE_OPEN_READWRITE, NULL);
60 if(res == SQLITE_OK) {
61 PG_LOGI("monitor db is opened successfully");
62 // sqlite3_wal_autocheckpoint(m_sqlHandler, 1);
66 PG_LOGE("fail : monitor db open(%d)", res);
71 PrivacyGuardDb::PgAddPrivacyAccessLog(const int userId, std::list < std::pair < std::string, std::string > > logInfoList)
75 current_date = time(NULL);
76 localtime_r(¤t_date, &tm);
78 if(current_date <= 0) {
79 return PRIV_GUARD_ERROR_INVALID_PARAMETER;
84 static const std::string QUERY_INSERT = std::string("INSERT INTO StatisticsMonitorInfo(USER_ID, PKG_ID, PRIVACY_ID, USE_DATE) VALUES(?, ?, ?, ?)");
88 if(m_bDBOpen == false) {
91 TryCatchResLogReturn(m_bDBOpen == true, m_dbMutex.unlock(), PRIV_GUARD_ERROR_IO_ERROR, "openSqliteDB : %d", res);
93 PG_LOGD("addlogToDb m_sqlHandler : %p", m_sqlHandler);
96 res = sqlite3_prepare_v2(m_sqlHandler, QUERY_INSERT.c_str(), -1, &m_stmt, NULL);
97 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
99 for (std::list <std::pair <std::string, std::string>>::iterator iter = logInfoList.begin(); iter != logInfoList.end(); ++iter) {
100 PG_LOGD("packageID : %s, PrivacyID : %s", iter->first.c_str(), iter->second.c_str());
103 res = sqlite3_bind_int(m_stmt, 1, userId);
104 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
106 res = sqlite3_bind_text(m_stmt, 2, iter->first.c_str(), -1, SQLITE_TRANSIENT);
107 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
109 res = sqlite3_bind_text(m_stmt, 3, iter->second.c_str(), -1, SQLITE_TRANSIENT);
110 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
112 res = sqlite3_bind_int(m_stmt, 4, current_date);
113 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
115 res = sqlite3_step(m_stmt);
116 TryCatchResLogReturn(res == SQLITE_DONE, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_step : %d", res);
118 sqlite3_reset(m_stmt);
122 return PRIV_GUARD_ERROR_SUCCESS;
126 PrivacyGuardDb::PgAddPrivacyAccessLogForCynara(const int userId, const std::string packageId, const std::string privilege, const timespec* timestamp)
128 if(timestamp->tv_sec <= 0) {
129 return PRIV_GUARD_ERROR_INVALID_PARAMETER;
134 // change from privilege to privacy
135 std::string privacyId;
136 res = PrivacyIdInfo::getPrivacyIdFromPrivilege(privilege, privacyId);
137 if (res == PRIV_GUARD_ERROR_NO_DATA) {
138 return PRIV_GUARD_ERROR_SUCCESS;
140 TryReturn( res == PRIV_GUARD_ERROR_SUCCESS, res, , "getPrivacyIdFromPrivilege : %d", res);
142 // change from timespec to time_t
144 logging_date = timestamp->tv_sec;
146 static const std::string QUERY_INSERT = std::string("INSERT INTO StatisticsMonitorInfo(USER_ID, PKG_ID, PRIVACY_ID, USE_DATE) VALUES(?, ?, ?, ?)");
150 if(m_bDBOpen == false) {
153 TryCatchResLogReturn(m_bDBOpen == true, m_dbMutex.unlock(), PRIV_GUARD_ERROR_IO_ERROR, "openSqliteDB : %d", res);
155 PG_LOGD("addlogToDb m_sqlHandler : %p", m_sqlHandler);
158 res = sqlite3_prepare_v2(m_sqlHandler, QUERY_INSERT.c_str(), -1, &m_stmt, NULL);
159 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
162 res = sqlite3_bind_int(m_stmt, 1, userId);
163 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
165 res = sqlite3_bind_text(m_stmt, 2, packageId.c_str(), -1, SQLITE_TRANSIENT);
166 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
168 res = sqlite3_bind_text(m_stmt, 3, privacyId.c_str(), -1, SQLITE_TRANSIENT);
169 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
171 res = sqlite3_bind_int(m_stmt, 4, logging_date);
172 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
174 res = sqlite3_step(m_stmt);
175 TryCatchResLogReturn(res == SQLITE_DONE, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_step : %d", res);
177 sqlite3_reset(m_stmt);
181 return PRIV_GUARD_ERROR_SUCCESS;
185 PrivacyGuardDb::PgAddPrivacyAccessLogTest(const int userId, const std::string packageId, const std::string privacyId)
189 current_date = time(NULL);
190 localtime_r(¤t_date, &tm);
192 if(current_date <= 0) {
193 return PRIV_GUARD_ERROR_INVALID_PARAMETER;
198 static const std::string QUERY_INSERT = std::string("INSERT INTO StatisticsMonitorInfo(USER_ID, PKG_ID, PRIVACY_ID, USE_DATE) VALUES(?, ?, ?, ?)");
202 if(m_bDBOpen == false) {
205 TryCatchResLogReturn(m_bDBOpen == true, m_dbMutex.unlock(), PRIV_GUARD_ERROR_IO_ERROR, "openSqliteDB : %d", res);
207 PG_LOGD("addlogToDb m_sqlHandler : %p", m_sqlHandler);
210 res = sqlite3_prepare_v2(m_sqlHandler, QUERY_INSERT.c_str(), -1, &m_stmt, NULL);
211 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
214 res = sqlite3_bind_int(m_stmt, 1, userId);
215 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
217 res = sqlite3_bind_text(m_stmt, 2, packageId.c_str(), -1, SQLITE_TRANSIENT);
218 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
220 res = sqlite3_bind_text(m_stmt, 3, privacyId.c_str(), -1, SQLITE_TRANSIENT);
221 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
223 res = sqlite3_bind_int(m_stmt, 4, current_date);
224 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
226 res = sqlite3_step(m_stmt);
227 TryCatchResLogReturn(res == SQLITE_DONE, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_step : %d", res);
229 sqlite3_reset(m_stmt);
233 return PRIV_GUARD_ERROR_SUCCESS;
238 PrivacyGuardDb::PgAddMonitorPolicy(const int userId, const std::string packageId, const std::list < std::string > privacyList, bool monitorPolicy)
240 PG_LOGD("PrivacyGuardDb::PgAddMonitorPolicy");
244 static const std::string QUERY_INSERT = std::string("INSERT INTO MonitorPolicy(USER_ID, PKG_ID, PRIVACY_ID, MONITOR_POLICY) VALUES(?, ?, ?, ?)");
248 if(m_bDBOpen == false) {
251 TryCatchResLogReturn(m_bDBOpen == true, m_dbMutex.unlock(), PRIV_GUARD_ERROR_IO_ERROR, "openSqliteDB : %d", res);
253 PG_LOGD("addlogToDb m_sqlHandler : %p", m_sqlHandler);
256 res = sqlite3_prepare_v2(m_sqlHandler, QUERY_INSERT.c_str(), -1, &m_stmt, NULL);
257 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
259 for (std::list <std::string>::const_iterator iter = privacyList.begin(); iter != privacyList.end(); ++iter) {
260 PG_LOGD("PrivacyID : %s", iter->c_str());
263 res = sqlite3_bind_int(m_stmt, 1, userId);
264 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
266 res = sqlite3_bind_text(m_stmt, 2, packageId.c_str(), -1, SQLITE_TRANSIENT);
267 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
269 res = sqlite3_bind_text(m_stmt, 3, iter->c_str(), -1, SQLITE_TRANSIENT);
270 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
272 res = sqlite3_bind_int(m_stmt, 4, monitorPolicy);
273 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
275 res = sqlite3_step(m_stmt);
276 TryCatchResLogReturn(res == SQLITE_DONE, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_step : %d", res);
278 sqlite3_reset(m_stmt);
282 return PRIV_GUARD_ERROR_SUCCESS;
286 PrivacyGuardDb::PgCheckPrivacyPackage(const int userId, const std::string packageId, bool &isPrivacyPackage)
289 static const std::string query = std::string("SELECT COUNT(*) FROM MonitorPolicy WHERE USER_ID=? AND PKG_ID=?");
293 if(m_bDBOpen == false) {
296 TryCatchResLogReturn(m_bDBOpen == true, m_dbMutex.unlock(), PRIV_GUARD_ERROR_IO_ERROR, "openSqliteDB : %d", res);
299 res = sqlite3_prepare_v2(m_sqlHandler, query.c_str(), -1, &m_stmt, NULL);
300 TryCatchResLogReturn( res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
303 res = sqlite3_bind_int(m_stmt, 1, userId);
304 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
306 res = sqlite3_bind_text(m_stmt, 2, packageId.c_str(), -1, SQLITE_TRANSIENT);
307 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
312 if ((res = sqlite3_step(m_stmt)) == SQLITE_ROW) {
313 count = sqlite3_column_int(m_stmt, 0);
318 isPrivacyPackage = true;
321 isPrivacyPackage = false;
324 return PRIV_GUARD_ERROR_SUCCESS;
328 PrivacyGuardDb::PgDeleteAllLogsAndMonitorPolicy(void)
330 PG_LOGD("PgDeleteAllLogsAndMonitorPolicy");
334 static const std::string LOG_DELETE = std::string("DELETE FROM StatisticsMonitorInfo");
335 static const std::string POLICY_DELETE = std::string("DELETE FROM MonitorPolicy");
336 static const std::string MAIN_POLICY_DELETE = std::string("DELETE FROM MainMonitorPolicy");
340 if(m_bDBOpen == false) {
343 TryCatchResLogReturn(m_bDBOpen == true, m_dbMutex.unlock(), PRIV_GUARD_ERROR_IO_ERROR, "openSqliteDB : %d", res);
346 res = sqlite3_prepare_v2(m_sqlHandler, LOG_DELETE.c_str(), -1, &m_stmt, NULL);
347 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
349 res = sqlite3_step(m_stmt);
350 TryCatchResLogReturn(res == SQLITE_DONE, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_step : %d", res);
352 res = sqlite3_prepare_v2(m_sqlHandler, POLICY_DELETE.c_str(), -1, &m_stmt, NULL);
353 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
355 res = sqlite3_step(m_stmt);
356 TryCatchResLogReturn(res == SQLITE_DONE, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_step : %d", res);
358 res = sqlite3_prepare_v2(m_sqlHandler, MAIN_POLICY_DELETE.c_str(), -1, &m_stmt, NULL);
359 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
361 res = sqlite3_step(m_stmt);
362 TryCatchResLogReturn(res == SQLITE_DONE, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_step : %d", res);
366 return PRIV_GUARD_ERROR_SUCCESS;
371 PrivacyGuardDb::PgDeleteLogsByPackageId(const std::string packageId)
373 PG_LOGD("PrivacyGuardDb::PgDeleteLogsByPackageId packageid : %s", packageId.c_str());
377 static const std::string QUERY_DELETE = std::string("DELETE FROM StatisticsMonitorInfo WHERE PKG_ID=?");
381 if(m_bDBOpen == false) {
384 TryCatchResLogReturn(m_bDBOpen == true, m_dbMutex.unlock(), PRIV_GUARD_ERROR_IO_ERROR, "openSqliteDB : %d", res);
387 res = sqlite3_prepare_v2(m_sqlHandler, QUERY_DELETE.c_str(), -1, &m_stmt, NULL);
388 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
391 res = sqlite3_bind_text(m_stmt, 1, packageId.c_str(), -1, SQLITE_TRANSIENT);
392 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
395 res = sqlite3_step(m_stmt);
396 TryCatchResLogReturn(res == SQLITE_DONE, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_step : %d", res);
400 return PRIV_GUARD_ERROR_SUCCESS;
404 PrivacyGuardDb::PgDeleteMonitorPolicyByPackageId(const std::string packageId)
406 PG_LOGD("PrivacyGuardDb::PgDeleteMonitorPolicyByPackageId packageid : %s", packageId.c_str());
410 static const std::string QUERY_DELETE = std::string("DELETE FROM MonitorPolicy WHERE PKG_ID=?");
414 if(m_bDBOpen == false) {
417 TryCatchResLogReturn(m_bDBOpen == true, m_dbMutex.unlock(), PRIV_GUARD_ERROR_IO_ERROR, "openSqliteDB : %d", res);
420 res = sqlite3_prepare_v2(m_sqlHandler, QUERY_DELETE.c_str(), -1, &m_stmt, NULL);
421 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
424 res = sqlite3_bind_text(m_stmt, 1, packageId.c_str(), -1, SQLITE_TRANSIENT);
425 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
428 res = sqlite3_step(m_stmt);
429 TryCatchResLogReturn(res == SQLITE_DONE, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_step : %d", res);
433 return PRIV_GUARD_ERROR_SUCCESS;
437 PrivacyGuardDb::PgForeachTotalPrivacyCountOfPackage(const int userId, const int startDate, const int endDate,
438 std::list < std::pair < std::string, int > >& packageInfoList)
443 // [CYNARA] Fluch Entries
444 int ret= cynara_monitor_entries_flush(p_cynara_monitor);
445 if(ret != CYNARA_API_SUCCESS){
446 PG_LOGE("cynara_monitor_entries_flush FAIL");
447 return PRIV_GUARD_ERROR_SYSTEM_ERROR;
450 // [CYNARA] Get Entries
451 ret = cynara_monitor_entries_get(p_cynara_monitor, &monitor_entries);
452 if(ret != CYNARA_API_SUCCESS){
453 PG_LOGE("cynara_monitor_entries_get FAIL");
454 return PRIV_GUARD_ERROR_SYSTEM_ERROR;
457 // [CYNARA] Update DB
458 ret = CynaraService::updateDb(monitor_entries);
459 if(ret != PRIV_GUARD_ERROR_SUCCESS){
460 PG_LOGE("updateDb FAIL");
465 static const std::string PKGID_SELECT = std::string("SELECT DISTINCT PKG_ID FROM StatisticsMonitorInfo WHERE USER_ID=? AND USE_DATE>=? AND USE_DATE<=?");
466 static const std::string PKGINFO_SELECT = std::string("SELECT COUNT(*) FROM StatisticsMonitorInfo WHERE USER_ID=? AND PKG_ID=? AND USE_DATE>=? AND USE_DATE<=?");
467 sqlite3_stmt* infoStmt;
471 if(m_bDBOpen == false) {
474 TryCatchResLogReturn(m_bDBOpen == true, m_dbMutex.unlock(), PRIV_GUARD_ERROR_IO_ERROR, "openSqliteDB : %d", res);
477 res = sqlite3_prepare_v2(m_sqlHandler, PKGID_SELECT.c_str(), -1, &m_stmt, NULL);
478 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
480 res = sqlite3_bind_int(m_stmt, 1, userId);
481 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
483 res = sqlite3_bind_int(m_stmt, 2, startDate);
484 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
486 res = sqlite3_bind_int(m_stmt, 3, endDate);
487 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
489 while ((res = sqlite3_step(m_stmt)) == SQLITE_ROW) {
490 const char* packageId = reinterpret_cast < const char* > (sqlite3_column_text(m_stmt, 0));
491 if(packageId == NULL) { continue; }
494 res = sqlite3_prepare_v2(m_sqlHandler, PKGINFO_SELECT.c_str(), -1, &infoStmt, NULL);
495 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
497 res = sqlite3_bind_int(infoStmt, 1, userId);
498 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
500 res = sqlite3_bind_text(infoStmt, 2, packageId, -1, SQLITE_TRANSIENT);
501 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
503 res = sqlite3_bind_int(infoStmt, 3, startDate);
504 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
506 res = sqlite3_bind_int(infoStmt, 4, endDate);
507 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
509 while ((res = sqlite3_step(infoStmt)) == SQLITE_ROW) {
510 int count = sqlite3_column_int(infoStmt, 0);
514 packageInfoList.push_back(std::pair <std::string, int> (std::string(packageId), count));
516 sqlite3_reset(infoStmt);
520 return PRIV_GUARD_ERROR_SUCCESS;
524 PrivacyGuardDb::PgForeachTotalPrivacyCountOfPrivacy(const int userId, const int startDate, const int endDate,
525 std::list < std::pair < std::string, int > >& privacyInfoList)
530 // [CYNARA] Fluch Entries
531 int ret= cynara_monitor_entries_flush(p_cynara_monitor);
532 if(ret != CYNARA_API_SUCCESS){
533 PG_LOGE("cynara_monitor_entries_flush FAIL");
534 return PRIV_GUARD_ERROR_SYSTEM_ERROR;
537 // [CYNARA] Get Entries
538 ret = cynara_monitor_entries_get(p_cynara_monitor, &monitor_entries);
539 if(ret != CYNARA_API_SUCCESS){
540 PG_LOGE("cynara_monitor_entries_get FAIL");
541 return PRIV_GUARD_ERROR_SYSTEM_ERROR;
544 // [CYNARA] Update DB
545 ret = CynaraService::updateDb(monitor_entries);
546 if(ret != PRIV_GUARD_ERROR_SUCCESS){
547 PG_LOGE("updateDb FAIL");
552 static const std::string PRIVACY_SELECT = std::string("SELECT COUNT(*) FROM StatisticsMonitorInfo WHERE USER_ID=? AND PRIVACY_ID=? AND USE_DATE>=? AND USE_DATE<=?");
556 if(m_bDBOpen == false) {
559 TryCatchResLogReturn(m_bDBOpen == true, m_dbMutex.unlock(), PRIV_GUARD_ERROR_IO_ERROR, "openSqliteDB : %d", res);
562 int cnt_privacy = sizeof(privacy_list) / sizeof(privacy_list[0]);
564 for (i = 0; i < cnt_privacy; i++) {
566 res = sqlite3_prepare_v2(m_sqlHandler, PRIVACY_SELECT.c_str(), -1, &m_stmt, NULL);
567 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
570 res = sqlite3_bind_int(m_stmt, 1, userId);
571 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
573 res = sqlite3_bind_text(m_stmt, 2, privacy_list[i], -1, SQLITE_TRANSIENT);
574 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
576 res = sqlite3_bind_int(m_stmt, 3, startDate);
577 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
579 res = sqlite3_bind_int(m_stmt, 4, endDate);
580 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
583 if ((res = sqlite3_step(m_stmt)) == SQLITE_ROW) {
584 int count = sqlite3_column_int(m_stmt, 0);
588 const char* privacyId = privacy_list[i];
589 privacyInfoList.push_back(std::pair <std::string, int> (std::string(privacyId), count));
591 sqlite3_reset(m_stmt);
596 return PRIV_GUARD_ERROR_SUCCESS;
600 PrivacyGuardDb::PgForeachPrivacyCountByPrivacyId(const int userId, const int startDate, const int endDate,
601 const std::string privacyId, std::list < std::pair < std::string, int > >& packageInfoList)
606 // [CYNARA] Fluch Entries
607 int ret= cynara_monitor_entries_flush(p_cynara_monitor);
608 if(ret != CYNARA_API_SUCCESS){
609 PG_LOGE("cynara_monitor_entries_flush FAIL");
610 return PRIV_GUARD_ERROR_SYSTEM_ERROR;
613 // [CYNARA] Get Entries
614 ret = cynara_monitor_entries_get(p_cynara_monitor, &monitor_entries);
615 if(ret != CYNARA_API_SUCCESS){
616 PG_LOGE("cynara_monitor_entries_get FAIL");
617 return PRIV_GUARD_ERROR_SYSTEM_ERROR;
620 // [CYNARA] Update DB
621 ret = CynaraService::updateDb(monitor_entries);
622 if(ret != PRIV_GUARD_ERROR_SUCCESS){
623 PG_LOGE("updateDb FAIL");
628 static const std::string PKGID_SELECT = std::string("SELECT DISTINCT PKG_ID FROM StatisticsMonitorInfo WHERE USER_ID=? AND PRIVACY_ID=? AND USE_DATE>=? AND USE_DATE<=?");
629 static const std::string PKGINFO_SELECT = std::string("SELECT COUNT(*) FROM StatisticsMonitorInfo WHERE USER_ID=? AND PKG_ID=? AND PRIVACY_ID=? AND USE_DATE>=? AND USE_DATE<=?");
630 sqlite3_stmt* infoStmt;
634 if(m_bDBOpen == false) {
637 TryCatchResLogReturn(m_bDBOpen == true, m_dbMutex.unlock(), PRIV_GUARD_ERROR_IO_ERROR, "openSqliteDB : %d", res);
640 res = sqlite3_prepare_v2(m_sqlHandler, PKGID_SELECT.c_str(), -1, &m_stmt, NULL);
641 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
644 res = sqlite3_bind_int(m_stmt, 1, userId);
645 TryReturn(res == SQLITE_OK, PRIV_GUARD_ERROR_DB_ERROR, , "sqlite3_bind_int : %d", res);
647 res = sqlite3_bind_text(m_stmt, 2, privacyId.c_str(), -1, SQLITE_TRANSIENT);
648 TryReturn(res == SQLITE_OK, PRIV_GUARD_ERROR_DB_ERROR, , "sqlite3_bind_text : %d", res);
650 res = sqlite3_bind_int(m_stmt, 3, startDate);
651 TryReturn(res == SQLITE_OK, PRIV_GUARD_ERROR_DB_ERROR, , "sqlite3_bind_int : %d", res);
653 res = sqlite3_bind_int(m_stmt, 4, endDate);
654 TryReturn(res == SQLITE_OK, PRIV_GUARD_ERROR_DB_ERROR, , "sqlite3_bind_int : %d", res);
656 while ((res = sqlite3_step(m_stmt)) == SQLITE_ROW) {
657 const char* packageId = reinterpret_cast < const char* > (sqlite3_column_text(m_stmt, 0));
658 if(packageId == NULL) { continue; }
661 res = sqlite3_prepare_v2(m_sqlHandler, PKGINFO_SELECT.c_str(), -1, &infoStmt, NULL);
662 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
665 res = sqlite3_bind_int(infoStmt, 1, userId);
666 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
668 res = sqlite3_bind_text(infoStmt, 2, packageId, -1, SQLITE_TRANSIENT);
669 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
671 res = sqlite3_bind_text(infoStmt, 3, privacyId.c_str(), -1, SQLITE_TRANSIENT);
672 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
674 res = sqlite3_bind_int(infoStmt, 4, startDate);
675 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
677 res = sqlite3_bind_int(infoStmt, 5, endDate);
678 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
680 if ((res = sqlite3_step(infoStmt)) == SQLITE_ROW) {
681 int count = sqlite3_column_int(infoStmt, 0);
685 packageInfoList.push_back(std::pair <std::string, int> (std::string(packageId), count));
687 sqlite3_reset(infoStmt);
692 return PRIV_GUARD_ERROR_SUCCESS;
696 PrivacyGuardDb::PgForeachPrivacyCountByPackageId(const int userId, const int startDate, const int endDate,
697 const std::string packageId, std::list < std::pair < std::string, int > >& privacyInfoList)
702 // [CYNARA] Fluch Entries
703 int ret= cynara_monitor_entries_flush(p_cynara_monitor);
704 if(ret != CYNARA_API_SUCCESS){
705 PG_LOGE("cynara_monitor_entries_flush FAIL");
706 return PRIV_GUARD_ERROR_SYSTEM_ERROR;
709 // [CYNARA] Get Entries
710 ret = cynara_monitor_entries_get(p_cynara_monitor, &monitor_entries);
711 if(ret != CYNARA_API_SUCCESS){
712 PG_LOGE("cynara_monitor_entries_get FAIL");
713 return PRIV_GUARD_ERROR_SYSTEM_ERROR;
716 // [CYNARA] Update DB
717 ret = CynaraService::updateDb(monitor_entries);
718 if(ret != PRIV_GUARD_ERROR_SUCCESS){
719 PG_LOGE("updateDb FAIL");
724 static const std::string PRIVACY_SELECT = std::string("SELECT COUNT(*) FROM StatisticsMonitorInfo WHERE USER_ID=? AND PKG_ID=? AND PRIVACY_ID=? AND USE_DATE>=? AND USE_DATE<=?");
728 if(m_bDBOpen == false) {
731 TryCatchResLogReturn(m_bDBOpen == true, m_dbMutex.unlock(), PRIV_GUARD_ERROR_IO_ERROR, "openSqliteDB : %d", res);
734 int cnt_privacy = sizeof(privacy_list) / sizeof(privacy_list[0]);
736 for (i = 0; i < cnt_privacy; i++) {
738 res = sqlite3_prepare_v2(m_sqlHandler, PRIVACY_SELECT.c_str(), -1, &m_stmt, NULL);
739 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
742 res = sqlite3_bind_int(m_stmt, 1, userId);
743 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
745 res = sqlite3_bind_text(m_stmt, 2, packageId.c_str(), -1, SQLITE_TRANSIENT);
746 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
748 res = sqlite3_bind_text(m_stmt, 3, privacy_list[i], -1, SQLITE_TRANSIENT);
749 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
751 res = sqlite3_bind_int(m_stmt, 4, startDate);
752 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
754 res = sqlite3_bind_int(m_stmt, 5, endDate);
755 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
757 if ((res = sqlite3_step(m_stmt)) == SQLITE_ROW) {
758 int count = sqlite3_column_int(m_stmt, 0);
762 const char* privacyId = privacy_list[i];
763 privacyInfoList.push_back(std::pair <std::string, int> (std::string(privacyId), count));
765 sqlite3_reset(m_stmt);
770 return PRIV_GUARD_ERROR_SUCCESS;
774 PrivacyGuardDb::PgGetMonitorPolicy(const int userId, const std::string packageId, const std::string privacyId, int& monitorPolicy)
778 static const std::string query = std::string("SELECT MONITOR_POLICY FROM MonitorPolicy WHERE USER_ID=? AND PKG_ID=? AND PRIVACY_ID=?");
782 if(m_bDBOpen == false) {
785 TryCatchResLogReturn(m_bDBOpen == true, m_dbMutex.unlock(), PRIV_GUARD_ERROR_IO_ERROR, "openSqliteDB : %d", res);
788 res = sqlite3_prepare_v2(m_sqlHandler, query.c_str(), -1, &m_stmt, NULL);
789 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
792 res = sqlite3_bind_int(m_stmt, 1, userId);
793 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
795 res = sqlite3_bind_text(m_stmt, 2, packageId.c_str(), -1, SQLITE_TRANSIENT);
796 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
798 res = sqlite3_bind_text(m_stmt, 3, privacyId.c_str(), -1, SQLITE_TRANSIENT);
799 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
803 if ((res = sqlite3_step(m_stmt)) == SQLITE_ROW) {
804 monitorPolicy = sqlite3_column_int(m_stmt, 0);
808 return PRIV_GUARD_ERROR_SUCCESS;
812 PrivacyGuardDb::PgGetAllMonitorPolicy(std::list < std::pair < std::string, int > >& monitorPolicyList)
816 static const std::string MONITOR_POLICY_SELECT = std::string("SELECT * FROM MonitorPolicy");
820 if(m_bDBOpen == false) {
823 TryCatchResLogReturn(m_bDBOpen == true, m_dbMutex.unlock(), PRIV_GUARD_ERROR_IO_ERROR, "openSqliteDB : %d", res);
826 res = sqlite3_prepare_v2(m_sqlHandler, MONITOR_POLICY_SELECT.c_str(), -1, &m_stmt, NULL);
827 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
830 int monitorPolicy = 0;
831 while ((res = sqlite3_step(m_stmt)) == SQLITE_ROW) {
832 int userId = sqlite3_column_int(m_stmt, 0);
833 char* tmpPkgId = (char*)sqlite3_column_text(m_stmt, 1);
834 char* tmpPrivacyId = (char*)sqlite3_column_text(m_stmt, 2);
835 if(tmpPkgId == NULL || tmpPrivacyId == NULL) {
838 std::string userPkgIdPrivacyId = std::to_string(userId);
839 userPkgIdPrivacyId.append("|").append(std::string(tmpPkgId));
840 userPkgIdPrivacyId.append("|").append(std::string(tmpPrivacyId));
841 monitorPolicy = sqlite3_column_int(m_stmt, 3);
842 monitorPolicyList.push_back(std::pair < std::string, int > (userPkgIdPrivacyId, monitorPolicy));
846 if(monitorPolicyList.size() > 0) {
847 res = PRIV_GUARD_ERROR_SUCCESS;
850 res = PRIV_GUARD_ERROR_NO_DATA;
857 PrivacyGuardDb::PgForeachMonitorPolicyByPackageId(const int userId, const std::string packageId, std::list <privacy_data_s>& privacyInfoList)
860 static const std::string query = std::string("SELECT DISTINCT PRIVACY_ID, MONITOR_POLICY FROM MonitorPolicy WHERE USER_ID=? AND PKG_ID=?");
864 if(m_bDBOpen == false) {
867 TryCatchResLogReturn(m_bDBOpen == true, m_dbMutex.unlock(), PRIV_GUARD_ERROR_IO_ERROR, "openSqliteDB : %d", res);
870 res = sqlite3_prepare_v2(m_sqlHandler, query.c_str(), -1, &m_stmt, NULL);
871 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock();, PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
874 res = sqlite3_bind_int(m_stmt, 1, userId);
875 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
877 res = sqlite3_bind_text(m_stmt, 2, packageId.c_str(), -1, SQLITE_TRANSIENT);
878 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
881 while ((res = sqlite3_step(m_stmt)) == SQLITE_ROW) {
883 char* tmp_data = (char*)sqlite3_column_text(m_stmt, 0);
884 if(tmp_data == NULL) {
887 privacy_data_s p_data;
888 p_data.privacy_id = strdup(tmp_data);
889 p_data.monitor_policy= sqlite3_column_int(m_stmt, 1);
891 privacyInfoList.push_back(p_data);
895 return PRIV_GUARD_ERROR_SUCCESS;
899 PrivacyGuardDb::PgForeachPrivacyPackageId(const int userId, std::list < std::string > &packageList)
902 static const std::string query = std::string("SELECT DISTINCT PKG_ID FROM MonitorPolicy WHERE USER_ID=?");
906 if(m_bDBOpen == false) {
909 TryCatchResLogReturn(m_bDBOpen == true, m_dbMutex.unlock(), PRIV_GUARD_ERROR_IO_ERROR, "openSqliteDB : %d", res);
912 res = sqlite3_prepare_v2(m_sqlHandler, query.c_str(), -1, &m_stmt, NULL);
913 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock();, PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
916 res = sqlite3_bind_int(m_stmt, 1, userId);
917 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
920 while ((res = sqlite3_step(m_stmt)) == SQLITE_ROW) {
921 char* p_data = (char*)sqlite3_column_text(m_stmt, 0);
925 packageList.push_back(std::string(p_data));
929 return PRIV_GUARD_ERROR_SUCCESS;
933 PrivacyGuardDb::PgForeachPackageByPrivacyId(const int userId, const std::string privacyId, std::list < std::string > &packageList)
936 static const std::string query = std::string("SELECT DISTINCT PKG_ID FROM MonitorPolicy WHERE USER_ID=? AND PRIVACY_ID=?");
940 if(m_bDBOpen == false) {
943 TryCatchResLogReturn(m_bDBOpen == true, m_dbMutex.unlock(), PRIV_GUARD_ERROR_IO_ERROR, "openSqliteDB : %d", res);
946 res = sqlite3_prepare_v2(m_sqlHandler, query.c_str(), -1, &m_stmt, NULL);
947 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock();, PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
950 res = sqlite3_bind_int(m_stmt, 1, userId);
951 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
953 res = sqlite3_bind_text(m_stmt, 2, privacyId.c_str(), -1, SQLITE_TRANSIENT);
954 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
957 while ((res = sqlite3_step(m_stmt)) == SQLITE_ROW) {
958 char* p_data = (char*)sqlite3_column_text(m_stmt, 0);
962 packageList.push_back(std::string(p_data));
966 return PRIV_GUARD_ERROR_SUCCESS;
970 PrivacyGuardDb::PgUpdateMonitorPolicy(const int userId, const std::string packageId, const std::string privacyId, const int monitorPolicy)
973 static const std::string query = std::string("UPDATE MonitorPolicy SET MONITOR_POLICY=? WHERE USER_ID=? AND PKG_ID=? AND PRIVACY_ID=?");
977 if(m_bDBOpen == false) {
980 TryCatchResLogReturn(m_bDBOpen == true, m_dbMutex.unlock(), PRIV_GUARD_ERROR_IO_ERROR, "openSqliteDB : %d", res);
983 res = sqlite3_prepare_v2(m_sqlHandler, query.c_str(), -1, &m_stmt, NULL);
984 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
987 res = sqlite3_bind_int(m_stmt, 1, monitorPolicy);
988 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
990 res = sqlite3_bind_int(m_stmt, 2, userId);
991 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
993 res = sqlite3_bind_text(m_stmt, 3, packageId.c_str(), -1, SQLITE_TRANSIENT);
994 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
996 res = sqlite3_bind_text(m_stmt, 4, privacyId.c_str(), -1, SQLITE_TRANSIENT);
997 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
1000 res = sqlite3_step(m_stmt);
1001 TryCatchResLogReturn(res == SQLITE_DONE, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_step : %d", res);
1005 return PRIV_GUARD_ERROR_SUCCESS;
1009 PrivacyGuardDb::PgAddMainMonitorPolicy(const int userId)
1013 static const std::string QUERY_INSERT = std::string("INSERT INTO MainMonitorPolicy(USER_ID) VALUES(?)");
1017 if(m_bDBOpen == false) {
1020 TryCatchResLogReturn(m_bDBOpen == true, m_dbMutex.unlock(), PRIV_GUARD_ERROR_IO_ERROR, "openSqliteDB : %d", res);
1022 PG_LOGD("addlogToDb m_sqlHandler : %p", m_sqlHandler);
1025 res = sqlite3_prepare_v2(m_sqlHandler, QUERY_INSERT.c_str(), -1, &m_stmt, NULL);
1026 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
1029 res = sqlite3_bind_int(m_stmt, 1, userId);
1030 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
1033 res = sqlite3_step(m_stmt);
1034 TryCatchResLogReturn(res == SQLITE_DONE, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_step : %d", res);
1038 return PRIV_GUARD_ERROR_SUCCESS;
1042 PrivacyGuardDb::PgUpdateMainMonitorPolicy(const int userId, const bool mainMonitorPolicy)
1045 static const std::string query = std::string("UPDATE MainMonitorPolicy SET MAIN_MONITOR_POLICY=? WHERE USER_ID=?");
1049 if(m_bDBOpen == false) {
1052 TryCatchResLogReturn(m_bDBOpen == true, m_dbMutex.unlock(), PRIV_GUARD_ERROR_IO_ERROR, "openSqliteDB : %d", res);
1055 res = sqlite3_prepare_v2(m_sqlHandler, query.c_str(), -1, &m_stmt, NULL);
1056 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
1059 res = sqlite3_bind_int(m_stmt, 1, mainMonitorPolicy);
1060 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
1062 res = sqlite3_bind_int(m_stmt, 2, userId);
1063 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
1066 res = sqlite3_step(m_stmt);
1067 TryCatchResLogReturn(res == SQLITE_DONE, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_step : %d", res);
1072 // [CYNARA] Set Filter
1073 cynara_monitor_configuration_set_filter();
1076 return PRIV_GUARD_ERROR_SUCCESS;
1080 PrivacyGuardDb::PgGetMainMonitorPolicy(const int userId, bool &mainMonitorPolicy)
1084 static const std::string query = std::string("SELECT MAIN_MONITOR_POLICY FROM MainMonitorPolicy WHERE USER_ID=?");
1088 if(m_bDBOpen == false) {
1091 TryCatchResLogReturn(m_bDBOpen == true, m_dbMutex.unlock(), PRIV_GUARD_ERROR_IO_ERROR, "openSqliteDB : %d", res);
1094 res = sqlite3_prepare_v2(m_sqlHandler, query.c_str(), -1, &m_stmt, NULL);
1095 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
1098 res = sqlite3_bind_int(m_stmt, 1, userId);
1099 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
1102 mainMonitorPolicy = false;
1103 if ((res = sqlite3_step(m_stmt)) == SQLITE_ROW) {
1104 mainMonitorPolicy = sqlite3_column_int(m_stmt, 0);
1109 res = PgAddMainMonitorPolicy(userId);
1110 TryReturn(res == PRIV_GUARD_ERROR_SUCCESS, res, , "PgAddMainMonitorPolicy failed : %d", res);
1113 return PRIV_GUARD_ERROR_SUCCESS;
1117 PrivacyGuardDb::PgDeleteMainMonitorPolicyByUserId(const int userId)
1121 static const std::string QUERY_DELETE = std::string("DELETE FROM MainMonitorPolicy WHERE USER_ID=?");
1125 if(m_bDBOpen == false) {
1128 TryCatchResLogReturn(m_bDBOpen == true, m_dbMutex.unlock(), PRIV_GUARD_ERROR_IO_ERROR, "openSqliteDB : %d", res);
1131 res = sqlite3_prepare_v2(m_sqlHandler, QUERY_DELETE.c_str(), -1, &m_stmt, NULL);
1132 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
1135 res = sqlite3_bind_int(m_stmt, 1, userId);
1136 TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
1139 res = sqlite3_step(m_stmt);
1140 TryCatchResLogReturn(res == SQLITE_DONE, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_step : %d", res);
1144 return PRIV_GUARD_ERROR_SUCCESS;
1147 PrivacyGuardDb::PrivacyGuardDb(void)
1152 m_sqlHandler = NULL;
1159 PrivacyGuardDb::~PrivacyGuardDb(void)
1162 if(m_bDBOpen == true) {
1164 sqlite3_finalize(m_stmt);
1165 sqlite3_close(m_sqlHandler);
1172 PrivacyGuardDb::getInstance(void)
1174 std::lock_guard < std::mutex > guard(m_singletonMutex);
1176 if (m_pInstance == NULL)
1178 m_pInstance = new PrivacyGuardDb();