*/
#include <sstream>
+#include <fstream>
#include <dlog.h>
#include <Utils.h>
#include <PrivacyDb.h>
std::mutex PrivacyDb::m_singletonMutex;
PrivacyDb* PrivacyDb::m_pInstance = NULL;
+#ifdef __FILTER_LISTED_PKG
+const std::string PrivacyDb::PRIVACY_FILTER_LIST_FILE = std::string("/usr/share/privacy-manager/privacy-filter-list.ini");
+const std::string PrivacyDb::FILTER_KEY = std::string("package_id");
+std::map < std::string, bool > PrivacyDb::m_filteredPkgList;
+#endif
void
PrivacyDb::createDB(void)
bool PrivacyDb::isFilteredPackage(const std::string pkgId) const
{
+#ifdef __FILTER_PRELOADED_PKG__
pkgmgrinfo_pkginfo_h handle;
int res = pkgmgrinfo_pkginfo_get_pkginfo(pkgId.c_str(), &handle);
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);
return preloaded;
+#elif __FILTER_LISTED_PKG
+ if (m_filteredPkgList.empty())
+ return false;
+
+ std::map < std::string, bool >::iterator it;
+ if ( (it = m_filteredPkgList.find(pkgId)) != m_filteredPkgList.end())
+ return true;
+
+ return false;
+#else
+ return false;
+#endif
}
int
{
const char* pValue = reinterpret_cast < const char* > (sqlite3_column_text(pStmt.get(), 0));
- LOGD("PkgId found : %s ", pValue);
+ SECURE_LOGD("PkgId found : %s ", pValue);
std::string pkgId = std::string(pValue);
if (isFilteredPackage(pkgId))
{
- LOGD("%s is Filtered", pValue);
+ SECURE_LOGD("%s is Filtered", pValue);
continue;
}
list.push_back(std::string(pValue));
privacyInfoList.push_back( std::pair <std::string, bool> (std::string(privacyId), privacyEnabled) );
- LOGD("Privacy found : %s %d", privacyId, privacyEnabled);
+ SECURE_LOGD("Privacy found : %s %d", privacyId, privacyEnabled);
}
LOGI("leave");
for ( std::list <std::string>::const_iterator iter = privilegeList.begin(); iter != privilegeList.end(); ++iter)
{
- LOGD(" install privacy: %s", iter->c_str());
+ SECURE_LOGD(" install privacy: %s", iter->c_str());
prepareDb(pDbHandler, privacyQuery.c_str(), pPrivacyStmt);
res = sqlite3_bind_text(pPrivacyStmt.get(), 1, pkgId.c_str(), -1, SQLITE_TRANSIENT);
if (isFilteredPackage(pkgId))
{
- LOGD("%s is Filtered", pkgId.c_str());
+ SECURE_LOGD("%s is Filtered", pkgId.c_str());
return 0;
}
}
else
{
- LOGE("The package[%s] can not access privacy", pkgId.c_str());
+ SECURE_LOGE("The package[%s] can not access privacy", pkgId.c_str());
return PRIV_MGR_ERROR_SUCCESS;
}
openDb(PRIVACY_DB_PATH.c_str(), pDbHandler, SQLITE_OPEN_READWRITE);
prepareDb(pDbHandler, sql.c_str(), pStmt);
- LOGD("privacy id : %s", privacyId.c_str());
+ SECURE_LOGD("privacy id : %s", privacyId.c_str());
int res = sqlite3_bind_text(pStmt.get(), 1, privacyId.c_str(), -1, SQLITE_TRANSIENT);
TryReturn( res == SQLITE_OK, PRIV_MGR_ERROR_DB_ERROR, , "sqlite3_bind_text : %d", res);
std::string pkgId = std::string(pPkgId);
if (isFilteredPackage(pkgId))
{
- LOGD("%s is Filtered", pPkgId);
+ SECURE_LOGD("%s is Filtered", pPkgId);
continue;
}
PrivacyDb::PrivacyDb(void)
{
+#ifdef __FILTER_LISTED_PKG
+ SECURE_LOGD("Construct with filter list");
+ std::ifstream inFile;
+ inFile.open(PRIVACY_FILTER_LIST_FILE);
+ TryReturn(inFile.is_open(), , , "Cannot find %s file.", PRIVACY_FILTER_LIST_FILE.c_str());
+
+ char inputLine[256] = {0,};
+ while(inFile.getline(inputLine, 256))
+ {
+ if (inputLine[0] == '#')
+ continue;
+ if (strncmp(FILTER_KEY.c_str(), inputLine, FILTER_KEY.length()) != 0)
+ {
+ SECURE_LOGD("Invalid Key[%s]", inputLine);
+ continue;
+ }
+ std::string pkgId = std::string(inputLine).substr(FILTER_KEY.length() + 1);
+ if (!pkgId.empty())
+ m_filteredPkgList.insert ( std::pair < std::string, bool > (pkgId, true) );
+ SECURE_LOGD("Filter PKG: %s", pkgId.c_str());
+ }
+#endif
+
}
PrivacyDb::~PrivacyDb(void)
Name: privacy-manager-server
Summary: Privacy Management
-Version: 0.0.3
-Release: 5
+Version: 0.0.4
+Release: 0
Group: System/Libraries
License: SAMSUNG
Source0: %{name}-%{version}.tar.gz
-DLIBDIR=%{_libdir} \
-DINCLUDEDIR=%{_includedir} \
-DCMAKE_BUILD_TYPE=%{build_type} \
- -DVERSION=%{version}
+ -DVERSION=%{version} \
+ -DFILTER_LISTED_PKG=ON
cmake . -DPREFIX=%{_prefix} \
-DEXEC_PREFIX=%{_exec_prefix} \
-DLIBDIR=%{_libdir} \
-DINCLUDEDIR=%{_includedir} \
-DCMAKE_BUILD_TYPE=%{build_type} \
- -DVERSION=%{version}
+ -DVERSION=%{version} \
+ -DFILTER_LISTED_PKG=ON
make %{?jobs:-j%jobs}
%install
cp res/usr/bin/* %{buildroot}/usr/bin/
mkdir -p %{buildroot}/opt/dbspace
cp res/opt/dbspace/.privacylist.db /%{buildroot}/opt/dbspace/
+mkdir -p %{buildroot}/usr/share/privacy-manager/
+cp res/usr/share/privacy-manager/privacy-filter-list.ini %{buildroot}/usr/share/privacy-manager/
#mkdir -p %{buildroot}/etc/rc.d/init.d
#cp res/etc/rc.d/init.d/* %{buildroot}/etc/rc.d/init.d/
%manifest packaging/privacy-manager-client.manifest
%{_libdir}/libprivacy-manager-client.so*
/usr/share/license/privacy-manager-client
+/usr/share/privacy-manager/privacy-filter-list.ini
/usr/etc/package-manager/parserlib/libprivileges.so
%files -n privacy-manager-client-devel