SET(PREFIX ${CMAKE_INSTALL_PREFIX})
SET(EXEC_PREFIX "\${prefix}")
SET(SHAREDIR "${PREFIX}/share/privilege-control")
-SET(HOMEDIR "/opt/home")
+SET(HOMEDIR "${TZ_SYS_HOME}")
SET(VERSION 1.0)
SET(VERSION_MAJOR 0)
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
INCLUDE(FindPkgConfig)
-pkg_check_modules(pkgs REQUIRED libsmack libiri dlog sqlite3)
+pkg_check_modules(pkgs REQUIRED libsmack libiri dlog sqlite3 libtzplatform-config)
FOREACH(flag ${pkgs_CFLAGS})
SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
CONFIGURE_FILE(libprivilege-control.pc.in libprivilege-control.pc @ONLY)
+CONFIGURE_FILE(smack-rules.service.in smack-rules.service)
+
INSTALL(TARGETS ${TARGET_PRIVILEGE_CONTROL} DESTINATION ${LIB_INSTALL_DIR} COMPONENT RuntimeLibraries)
INSTALL(TARGETS rules-db-sql-udf DESTINATION ${LIB_INSTALL_DIR} COMPONENT RuntimeLibraries)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libprivilege-control.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/privilege-control.h DESTINATION ${INCLUDE_INSTALL_DIR})
-INSTALL(FILES .privilege_control_app_gids.db DESTINATION /opt/dbspace)
+INSTALL(FILES .privilege_control_app_gids.db DESTINATION ${TZ_SYS_DB})
#INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/udev/ DESTINATION lib/udev)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/db/rules-db.sql DESTINATION /usr/share/privilege-control/db)
#database updater requires making proper sql scripts
+source /etc/tizen-platform.conf
+
if [ $# -eq 2 -a "$1" = "--check-files" ]
then
echo "Checking sql update files"
fi
-database="$dir/opt/dbspace/.rules-db.db3"
+database="$dir$TZ_SYS_DB/.rules-db.db3"
scripts_dir="$dir/usr/share/privilege-control/db"
updates_dir="$dir/usr/share/privilege-control/db/updates"
#ifndef _RULES_DB_H_
#define _RULES_DB_H_
+#include <tzplatform_config.h>
#include "privilege-control.h" // For error codes
#include "common.h"
-#define RDB_PATH "/opt/dbspace/.rules-db.db3"
+#define RDB_PATH tzplatform_mkpath(TZ_SYS_DB,".rules-db.db3")
/**
* Starts a session with the database.
<domain name="_"/>
</request>
<assign>
- <filesystem path="/opt/dbspace/.privilege_control_app_gids.db*" label="System" />
+ <filesystem path="TZ_SYS_DB/.privilege_control_app_gids.db*" label="System" />
</assign>
</manifest>
BuildRequires: pkgconfig(dlog)
BuildRequires: pkgconfig(libiri)
BuildRequires: pkgconfig(sqlite3)
+BuildRequires: pkgconfig(libtzplatform-config)
%description
development package of library to control privilege of in-house application
export CFLAGS="${CFLAGS} -Wno-implicit-function-declaration"
%cmake . -DCMAKE_BUILD_TYPE=%{?build_type:%build_type}%{!?build_type:RELEASE} \
- -DCMAKE_VERBOSE_MAKEFILE=ON
+ -DCMAKE_VERBOSE_MAKEFILE=ON \
+ -DTZ_SYS_DB=%TZ_SYS_DB \
+ -DTZ_SYS_HOME=%TZ_SYS_HOME
VERBOSE=1 make %{?jobs:-j%jobs}
mkdir -p %{buildroot}/usr/lib/systemd/system/multi-user.target.wants
ln -sf /usr/lib/systemd/system/smack-rules.service %{buildroot}/usr/lib/systemd/system/multi-user.target.wants/smack-rules.service
-mkdir -p %{buildroot}/opt/dbspace
+mkdir -p %{buildroot}%{TZ_SYS_DB}
+
+sed -i 's|TZ_SYS_DB|%{TZ_SYS_DB}|g' %{SOURCE1001}
%post
/sbin/ldconfig
/usr/share/privilege-control/db/updater.sh
-chsmack -a 'System' /opt/dbspace/.rules-db.db3*
+chsmack -a 'System' %{TZ_SYS_DB}/.rules-db.db3*
%postun -p /sbin/ldconfig
/usr/share/privilege-control/db/updates/*
/usr/share/privilege-control/db/load-rules-db.sql
/etc/opt/upgrade/220.libprivilege-updater.patch.sh
-%attr(755, root, root) %dir /opt/dbspace
+%attr(755, root, root) %dir %{TZ_SYS_DB}
%files conf
%manifest %{name}.manifest
-/opt/dbspace/.privilege_control*.db
+%{TZ_SYS_DB}/.privilege_control*.db
%files devel
%manifest %{name}.manifest
+++ /dev/null
-[Unit]
-Description=SMACK rules loading
-Before=starter.service
-
-[Service]
-Type=oneshot
-ExecStart = /bin/bash -c '/usr/bin/sqlite3 /opt/dbspace/.rules-db.db3 < /usr/share/privilege-control/db/load-rules-db.sql | smackload'
-
-[Install]
-WantedBy=multi-user.target
--- /dev/null
+[Unit]
+Description=SMACK rules loading
+Before=starter.service
+
+[Service]
+Type=oneshot
+ExecStart = /bin/bash -c '/usr/bin/sqlite3 @TZ_SYS_DB@/.rules-db.db3 < /usr/share/privilege-control/db/load-rules-db.sql | smackload'
+
+[Install]
+WantedBy=multi-user.target
#include <sys/smack.h>
#include <dlog.h>
#include <ctype.h>
+#include <tzplatform_config.h>
#include "access-db.h"
#include "privilege-control.h"
DB_APP_TYPE_COUNT /* Dummy enum element to get number of elements */
} db_app_type_t;
-const char* db_file_names[DB_APP_TYPE_COUNT] = {
- "/opt/dbspace/.privilege_control_app_gids.db"
-};
+
typedef struct element_s {
struct element_s* next;
char* value;
} element_t;
+static const char* db_file_names(db_app_type_t db_type)
+{
+ const char * db_file = NULL;
+ switch (db_type) {
+ case DB_APP_TYPE_GROUPS:
+ db_file = tzplatform_mkpath(TZ_SYS_DB,".privilege_control_app_gids.db");
+ break;
+ default:
+ /* do nothing */
+ break;
+ }
+
+ return db_file;
+}
+
+
static element_t* add_element (element_t* elem, const char* value)
{
SECURE_C_LOGD("Entering function: %s. Params: value=%s",
__func__, id);
FILE* file_db AUTO_FCLOSE;
- const char* db_file_name = db_file_names[app_type];
+ const char* db_file_name = db_file_names(app_type);
SECURE_C_LOGD("Opening database file %s.", db_file_name);
file_db = fopen(db_file_name, "a");
int ret;
FILE* file_db AUTO_FCLOSE;
- const char* db_file_name = db_file_names[app_type];
+ const char* db_file_name = db_file_names(app_type);
char smack_label[SMACK_LABEL_LEN + 1];
element_t* begin_of_list = NULL;
#include <sys/mman.h>
#include <stdbool.h>
#include <search.h>
+#include <tzplatform_config.h>
#include "privilege-control.h"
#include "access-db.h"
#include "common.h"
#include "rules-db.h"
-#define APP_GID 5000
-#define APP_UID 5000
-#define DEVELOPER_GID 5100
-#define DEVELOPER_UID 5100
+#define APP_GID tzplatform_getgid(TZ_USER_NAME)
+#define APP_UID tzplatform_getuid(TZ_USER_NAME)
+#define DEVELOPER_GID tzplatform_getgid(TZ_SDK_USER_NAME)
+#define DEVELOPER_UID tzplatform_getuid(TZ_SDK_USER_NAME)
-#define APP_USER_NAME "app"
-#define DEV_USER_NAME "developer"
+#define APP_USER_NAME tzplatform_getenv(TZ_USER_NAME)
+#define DEV_USER_NAME tzplatform_getenv(TZ_SDK_USER_NAME)
-#define APP_HOME_DIR TOSTRING(HOMEDIR) "/app"
-#define DEV_HOME_DIR TOSTRING(HOMEDIR) "/developer"
+#define APP_HOME_DIR tzplatform_getenv(TZ_USER_HOME)
+#define DEV_HOME_DIR tzplatform_getenv(TZ_SDK_HOME)
/* Macro defined below is used to label links to executables */
#define XATTR_NAME_TIZENEXEC XATTR_SECURITY_PREFIX "TIZEN_EXEC_LABEL"