Remove harcoded path for multi-user architecture 04/20904/2 tizen_3.0.m14.2_ivi accepted/tizen/common/20140521.164720 accepted/tizen/mobile/20140602.132847 submit/tizen/20140521.102600 submit/tizen_common/20140521.163740 submit/tizen_common/20140522.130648 submit/tizen_common/20140522.135644 submit/tizen_ivi/20140618.000000 submit/tizen_ivi/20140618.000001 submit/tizen_ivi/20140619.000000 submit/tizen_ivi/20140622.000000 submit/tizen_ivi/20140623.000000 submit/tizen_ivi/20140624.064036 submit/tizen_ivi/20140626.125712 submit/tizen_ivi/20140626.130032 submit/tizen_ivi/20140626.144348 tizen_3.0.m14.2_ivi_release
authorJean-Benoit MARTIN <jean-benoit.martin@open.eurogiciel.org>
Tue, 13 May 2014 12:40:36 +0000 (14:40 +0200)
committerJean-Benoit MARTIN <jean-benoit.martin@open.eurogiciel.org>
Thu, 15 May 2014 10:17:07 +0000 (12:17 +0200)
Bug-Tizen: PTREL-260

Change-Id: Ib30d3d49b50f607dc4b06c7b7c05acad27c34df5
Signed-off-by: Jean-Benoit MARTIN <jean-benoit.martin@open.eurogiciel.org>
CMakeLists.txt
db/updater.sh
include/rules-db.h
packaging/libprivilege-control.manifest
packaging/libprivilege-control.spec
smack-rules.service [deleted file]
smack-rules.service.in [new file with mode: 0644]
src/access-db.c
src/privilege-control.c

index 373f0bb..fff4b67 100644 (file)
@@ -5,7 +5,7 @@ SET(TARGET_PRIVILEGE_CONTROL "privilege-control")
 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)
@@ -14,7 +14,7 @@ SET(VERSION "${VERSION_MAJOR}.0.2")
 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}")
@@ -71,12 +71,14 @@ SET_TARGET_PROPERTIES(rules-db-sql-udf PROPERTIES COMPILE_FLAGS "${rules-db-sql-
 
 
 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)
index cddd73f..95c7477 100755 (executable)
@@ -2,6 +2,8 @@
 
 #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"
@@ -19,7 +21,7 @@ else
 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"
 
index 542f670..7a5a3ef 100644 (file)
 #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.
index bf5a33d..5eb820f 100644 (file)
@@ -3,6 +3,6 @@
     <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>
index ee72f99..b1e5657 100644 (file)
@@ -12,6 +12,7 @@ BuildRequires: pkgconfig(libsmack)
 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
@@ -44,7 +45,9 @@ export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE"
 
 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}
 
@@ -54,13 +57,15 @@ mkdir -p %{buildroot}/usr/share/privilege-control/
 
 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
 
@@ -85,11 +90,11 @@ api_feature_loader --verbose --dir=/usr/share/privilege-control/
 /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
diff --git a/smack-rules.service b/smack-rules.service
deleted file mode 100644 (file)
index 67487e1..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-[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
diff --git a/smack-rules.service.in b/smack-rules.service.in
new file mode 100644 (file)
index 0000000..f40af2b
--- /dev/null
@@ -0,0 +1,10 @@
+[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
index b1e2430..de8bb1b 100644 (file)
@@ -27,6 +27,7 @@
 #include <sys/smack.h>
 #include <dlog.h>
 #include <ctype.h>
+#include <tzplatform_config.h>
 
 #include "access-db.h"
 #include "privilege-control.h"
@@ -37,15 +38,29 @@ typedef enum {
        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",
@@ -96,7 +111,7 @@ static int add_id_to_database_internal(const char * id, db_app_type_t app_type)
                                __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");
@@ -120,7 +135,7 @@ static int get_all_ids_internal (char *** ids, int * len, db_app_type_t app_type
 
        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;
 
index ab70296..39cf437 100644 (file)
 #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"