2 * Copyright (c) 2012 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 "PrivacyGuardClient.h"
21 #include "SocketClient.h"
22 #include "PrivacyIdInfo.h"
26 #undef __READ_DB_IPC__
28 std::mutex PrivacyGuardClient::m_singletonMutex;
29 PrivacyGuardClient* PrivacyGuardClient::m_pInstance = NULL;
30 const std::string PrivacyGuardClient::INTERFACE_NAME("PrivacyInfoService");
32 PrivacyGuardClient::PrivacyGuardClient(void)
34 std::unique_ptr<SocketClient> pSocketClient(new SocketClient(INTERFACE_NAME));
35 m_pSocketClient = std::move(pSocketClient);
39 PrivacyGuardClient::getInstance(void)
41 std::lock_guard<std::mutex> guard(m_singletonMutex);
42 if (m_pInstance == NULL)
43 m_pInstance = new PrivacyGuardClient();
48 PrivacyGuardClient::PgAddPrivacyAccessLog(const int userId, const std::string packageId, const std::string privacyId)
50 int result = PRIV_FLTR_ERROR_SUCCESS;
51 logInfoList.push_back(std::pair <std::string, std::string> (packageId, privacyId));
52 PF_LOGD("PrivacyGuardClient userId : %d, PgAddPrivacyAccessLog logInfoList.size() : %d", userId, logInfoList.size());
54 if(logInfoList.size() >= COUNT) {
55 int res = m_pSocketClient->connect();
56 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
58 res = m_pSocketClient->call("PgAddPrivacyAccessLog", userId, logInfoList, &result);
59 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);
61 res = m_pSocketClient->disconnect();
62 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "disconnect : %d", res);
70 PrivacyGuardClient::PgAddPrivacyAccessLogTest(const int userId, const std::string packageId, const std::string privacyId)
72 int result = PRIV_FLTR_ERROR_SUCCESS;
74 int res = m_pSocketClient->connect();
75 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
77 res = m_pSocketClient->call("PgAddPrivacyAccessLogTest", userId, packageId, privacyId, &result);
78 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);
80 res = m_pSocketClient->disconnect();
81 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "disconnect : %d", res);
87 PrivacyGuardClient::PgAddPrivacyAccessLogBeforeTerminate(void)
89 int result = PRIV_FLTR_ERROR_SUCCESS;
90 PF_LOGD("PgAddPrivacyAccessLogBeforeTerminate, logInfoList.size() : %d", logInfoList.size());
92 if(logInfoList.size() > 0) {
93 int res = m_pSocketClient->connect();
94 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
96 res = m_pSocketClient->call("PgAddPrivacyAccessLog", logInfoList, &result);
97 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);
99 res = m_pSocketClient->disconnect();
100 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "disconnect : %d", res);
108 PrivacyGuardClient::PgAddMonitorPolicy(const int userId, const std::string pkgId, const std::list < std::string >& list, int monitorPolicy)
111 std::list < std::string > privacyList;
113 int res = PrivacyIdInfo::getPrivacyIdListFromPrivilegeList(list, privacyList);
114 if (res != PRIV_FLTR_ERROR_SUCCESS )
117 if (privacyList.size() == 0)
118 return PRIV_FLTR_ERROR_SUCCESS;
120 int result = PRIV_FLTR_ERROR_SUCCESS;
122 res = m_pSocketClient->connect();
123 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
125 res = m_pSocketClient->call("PgAddMonitorPolicy", userId, pkgId, privacyList, monitorPolicy, &result);
126 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);
128 res = m_pSocketClient->disconnect();
129 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "disconnect : %d", res);
135 PrivacyGuardClient::PgDeleteAllLogsAndMonitorPolicy(void)
137 int result = PRIV_FLTR_ERROR_SUCCESS;
139 int res = m_pSocketClient->connect();
140 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
142 res = m_pSocketClient->call("PgDeleteAllLogsAndMonitorPolicy", &result);
143 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);
145 res = m_pSocketClient->disconnect();
146 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "disconnect : %d", res);
152 PrivacyGuardClient::PgDeleteLogsByPackageId(const std::string packageId)
154 int result = PRIV_FLTR_ERROR_SUCCESS;
156 int res = m_pSocketClient->connect();
157 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
159 res = m_pSocketClient->call("PgDeleteLogsByPackageId", packageId, &result);
160 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);
162 res = m_pSocketClient->disconnect();
163 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "disconnect : %d", res);
169 PrivacyGuardClient::PgDeleteMonitorPolicyByPackageId(const std::string packageId)
171 int result = PRIV_FLTR_ERROR_SUCCESS;
173 int res = m_pSocketClient->connect();
174 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
176 res = m_pSocketClient->call("PgDeleteMonitorPolicyByPackageId", packageId, &result);
177 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);
179 res = m_pSocketClient->disconnect();
180 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "disconnect : %d", res);
186 PrivacyGuardClient::PgForeachTotalPrivacyCountOfPackage(const int userId, const int startDate, const int endDate, std::list < std::pair <std::string, int > > & packageInfoList) const
188 int result = PRIV_FLTR_ERROR_SUCCESS;
190 int res = m_pSocketClient->connect();
191 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
193 res = m_pSocketClient->call("PgForeachTotalPrivacyCountOfPackage", userId, startDate, endDate, &result, &packageInfoList);
194 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);
196 res = m_pSocketClient->disconnect();
197 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "disconnect : %d", res);
203 PrivacyGuardClient::PgForeachTotalPrivacyCountOfPrivacy(const int userId, const int startDate, const int endDate, std::list < std::pair <std::string, int > > & privacyInfoList) const
205 int result = PRIV_FLTR_ERROR_SUCCESS;
207 int res = m_pSocketClient->connect();
208 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
210 res = m_pSocketClient->call("PgForeachTotalPrivacyCountOfPrivacy", userId, startDate, endDate, &result, &privacyInfoList);
211 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);
213 res = m_pSocketClient->disconnect();
214 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "disconnect : %d", res);
220 PrivacyGuardClient::PgForeachPrivacyCountByPrivacyId(const int userId, const int startDate, const int endDate, const std::string privacyId, std::list < std::pair <std::string, int > > & packageInfoList) const
222 int result = PRIV_FLTR_ERROR_SUCCESS;
224 bool isValid = PrivacyIdInfo::isValidPrivacyId(privacyId);
227 return PRIV_FLTR_ERROR_INVALID_PARAMETER;
229 int res = m_pSocketClient->connect();
230 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
232 res = m_pSocketClient->call("PgForeachPrivacyCountByPrivacyId", userId, startDate, endDate, privacyId, &result, &packageInfoList);
233 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);
235 res = m_pSocketClient->disconnect();
236 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "disconnect : %d", res);
242 PrivacyGuardClient::PgForeachPrivacyCountByPackageId(const int userId, const int startDate, const int endDate, const std::string packageId, std::list < std::pair <std::string, int > > & privacyInfoList) const
244 int result = PRIV_FLTR_ERROR_SUCCESS;
246 int res = m_pSocketClient->connect();
247 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
249 res = m_pSocketClient->call("PgForeachPrivacyCountByPackageId", userId, startDate, endDate, packageId, &result, &privacyInfoList);
250 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);
252 res = m_pSocketClient->disconnect();
253 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "disconnect : %d", res);
259 PrivacyGuardClient::PgForeachPrivacyPackageId(const int userId, std::list < std::string > & packageList) const
261 int result = PRIV_FLTR_ERROR_SUCCESS;
263 int res = m_pSocketClient->connect();
264 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
266 res = m_pSocketClient->call("PgForeachPrivacyPackageId", userId, &result, &packageList);
267 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);
269 res = m_pSocketClient->disconnect();
270 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
276 PrivacyGuardClient::PgForeachPackageByPrivacyId(const int userId, const std::string privacyId, std::list < std::string > & packageList) const
278 int result = PRIV_FLTR_ERROR_SUCCESS;
280 bool isValid = PrivacyIdInfo::isValidPrivacyId(privacyId);
283 return PRIV_FLTR_ERROR_INVALID_PARAMETER;
285 int res = m_pSocketClient->connect();
286 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
288 res = m_pSocketClient->call("PgForeachPackageByPrivacyId", userId, privacyId, &result, &packageList);
289 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);
291 res = m_pSocketClient->disconnect();
292 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
298 PrivacyGuardClient::PgForeachMonitorPolicyByPackageId(const int userId, const std::string packageId,
299 std::list <privacy_data_s> & privacyInfoList) const
301 int result = PRIV_FLTR_ERROR_SUCCESS;
303 int res = m_pSocketClient->connect();
304 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
306 res = m_pSocketClient->call("PgForeachMonitorPolicyByPackageId", userId, packageId, &result, &privacyInfoList);
307 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);
309 res = m_pSocketClient->disconnect();
310 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "disconnect : %d", res);
316 PrivacyGuardClient::PgGetMonitorPolicy(const int userId, const std::string packageId,
317 const std::string privacyId, int &monitorPolicy) const
319 int result = PRIV_FLTR_ERROR_SUCCESS;
321 bool isValid = PrivacyIdInfo::isValidPrivacyId(privacyId);
324 return PRIV_FLTR_ERROR_INVALID_PARAMETER;
326 int res = m_pSocketClient->connect();
327 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
329 res = m_pSocketClient->call("PgGetMonitorPolicy", userId, packageId, privacyId, &result, &monitorPolicy);
330 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);
332 res = m_pSocketClient->disconnect();
333 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
339 PrivacyGuardClient::PgGetAllMonitorPolicy(std::list < std::pair < std::string, int > > & monitorPolicyList) const
341 int result = PRIV_FLTR_ERROR_SUCCESS;
343 int res = m_pSocketClient->connect();
344 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
346 res = m_pSocketClient->call("PgGetAllMonitorPolicy", &result, &monitorPolicyList);
347 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);
349 res = m_pSocketClient->disconnect();
350 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
356 PrivacyGuardClient::PgCheckPrivacyPackage(const int userId, const std::string packageId, bool &isPrivacyPackage)
358 int result = PRIV_FLTR_ERROR_SUCCESS;
360 int res = m_pSocketClient->connect();
361 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
363 res = m_pSocketClient->call("PgCheckPrivacyPackage", userId, packageId, &result, &isPrivacyPackage);
364 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);
366 res = m_pSocketClient->disconnect();
367 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
373 PrivacyGuardClient::PgUpdateMonitorPolicy(const int userId, const std::string packageId,
374 const std::string privacyId, const int monitorPolicy)
376 int result = PRIV_FLTR_ERROR_SUCCESS;
378 bool isValid = PrivacyIdInfo::isValidPrivacyId(privacyId);
381 return PRIV_FLTR_ERROR_INVALID_PARAMETER;
383 int res = m_pSocketClient->connect();
384 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
386 res = m_pSocketClient->call("PgUpdateMonitorPolicy", userId, packageId, privacyId, monitorPolicy, &result);
387 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);
389 res = m_pSocketClient->disconnect();
390 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
396 PrivacyGuardClient::PgGetMainMonitorPolicy(const int userId, bool &mainMonitorPolicy) const
398 int result = PRIV_FLTR_ERROR_SUCCESS;
400 int res = m_pSocketClient->connect();
401 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
403 res = m_pSocketClient->call("PgGetMainMonitorPolicy", userId, &result, &mainMonitorPolicy);
404 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);
406 res = m_pSocketClient->disconnect();
407 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
413 PrivacyGuardClient::PgUpdateMainMonitorPolicy(const int userId, const bool mainMonitorPolicy)
415 int result = PRIV_FLTR_ERROR_SUCCESS;
417 int res = m_pSocketClient->connect();
418 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
420 res = m_pSocketClient->call("PgUpdateMainMonitorPolicy", userId, mainMonitorPolicy, &result);
421 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);
423 res = m_pSocketClient->disconnect();
424 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
430 PrivacyGuardClient::PgDeleteMainMonitorPolicyByUserId(const int userId)
432 int result = PRIV_FLTR_ERROR_SUCCESS;
434 int res = m_pSocketClient->connect();
435 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "connect : %d", res);
437 res = m_pSocketClient->call("PgDeleteMainMonitorPolicyByUserId", userId, &result);
438 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);
440 res = m_pSocketClient->disconnect();
441 TryReturn(res == PRIV_FLTR_ERROR_SUCCESS, res, , "disconnect : %d", res);