Remove hardcoded path for multiuser support 71/16871/5
authorSabera Djelti (sdi2) <sabera.djelti@open.eurogiciel.org>
Tue, 25 Feb 2014 14:17:24 +0000 (15:17 +0100)
committerSabera Djelti (sdi2) <sabera.djelti@open.eurogiciel.org>
Wed, 19 Mar 2014 09:45:04 +0000 (10:45 +0100)
Change-Id: I40fbc04ea408f7e044ada515b6c0b17c6ad2ee41
Bug-Tizen: PTREL-725
Signed-off-by: Sabera Djelti (sdi2) <sabera.djelti@open.eurogiciel.org>
CMakeLists.txt
packaging/sdbd.spec
script/sdk_launch
src/commandline.c
src/file_sync_service.c
src/file_sync_service.h
src/sdb.c
src/sdb.h
src/sdktools.c
src/sdktools.h
src/services.c

index c112d31d5fbd717d3e451b5c23e2a3a0d6af2730..192802340bf26c29103be0eec051741c30543bbe 100644 (file)
@@ -81,7 +81,7 @@ endif()
 include(FindPkgConfig)
 
 # Get capi-system-info
-pkg_check_modules(CAPI_SYSTEM_INFO REQUIRED capi-system-info)
+pkg_check_modules(CAPI_SYSTEM_INFO REQUIRED capi-system-info libtzplatform-config)
 include_directories(${CAPI_SYSTEM_INFO_INCLUDE_DIRS})
 
 # Get pthreads
index 2ae0f51fcfb922fe097e646dbed8d50c507168e4..d193ec560f3b641f026f103fa73ec8b0b46ea8a7 100644 (file)
@@ -12,8 +12,10 @@ Source1003:    %{name}.manifest
 
 BuildRequires: capi-system-info-devel >= 0.2.0
 BuildRequires: cmake >= 2.8.3
+BuildRequires:  pkgconfig(libtzplatform-config)
 Requires: dbus
-
+Requires: debug-launchpad
+Requires(post): /usr/bin/debug_launchpad_preloading_preinitializing_daemon
 %description
 Description: SDB daemon.
 
@@ -48,7 +50,7 @@ install -m 755 script/sdk_launch %{buildroot}%{_prefix}/sbin/
 %defattr(-,root,root,-)
 %{_prefix}/sbin/sdbd
 %{_prefix}/sbin/sdk_launch
-%{_sysconfdir}/init.d/sdbd
+%attr(0755, root, root) %{_sysconfdir}/init.d/sdbd
 %{_libdir}/systemd/system/sdbd.service
 %if 0%{?simulator}
 %{_libdir}/systemd/system/emulator.target.wants/sdbd.service
index 2166781c161d3991a8cbd874eef4ba42ab84202a..0c01f1bf226578b0a8eb90dbd1fbadcdcf9fe4d3 100755 (executable)
@@ -4,9 +4,10 @@
 #      Kangho Kim <kh5325.kim@samsung.com>, Yoonki Park <yoonki.park@samsung.com>
 #
 # Description: front hand of app launcher
+source /etc/tizen-platform.conf
 
-APP_PATH_PREFIX=/opt/apps
-SDK_TOOLS_PATH=/home/developer/sdk_tools
+APP_PATH_PREFIX=${TZ_SYS_RW_APP}
+SDK_TOOLS_PATH=${TZ_SDK_TOOLS}
 
 print_usage()
 {
@@ -115,7 +116,7 @@ then
     if [ "" != "$attach_id" ]
     #debug attach
     then
-        cmd="$COV_TEST_PREFIX /home/developer/sdk_tools/gdbserver/gdbserver :$port --attach $attach_id"
+        cmd="$COV_TEST_PREFIX ${TZ_SDK_TOOLS}/gdbserver/gdbserver :$port --attach $attach_id"
     #debug
     else
         if [ "" != "$result_mode" ]
@@ -125,7 +126,7 @@ then
             result_mode="DEBUG"
         fi
         cmd="/usr/bin/launch_app $pkgid.$exe __AUL_SDK__ $result_mode __DLP_DEBUG_ARG__ :$port $launch_app_mode"
-#       cmd="$COV_TEST_PREFIX /home/developer/sdk_tools/gdbserver/gdbserver :$port /opt/apps/$pkgid/bin/$exe"
+#       cmd="$COV_TEST_PREFIX ${TZ_SDK_TOOLS}/gdbserver/gdbserver :$port ${TZ_SYS_RW_APP}/$pkgid/bin/$exe"
     fi
 else
     if [ "$mode" = "run" ]
index 7b6f7a93630e13070bec35d093bd6cfce7d33157..cbc616456873b348663d2e96e87ace3a348b5b70 100644 (file)
@@ -36,6 +36,7 @@
 #include "sdb.h"
 #include "sdb_client.h"
 #include "file_sync_service.h"
+#include <tzplatform_config.h>
 
 static int do_cmd(transport_type ttype, char* serial, char *cmd, ...);
 
@@ -1465,7 +1466,7 @@ int sdb_command2(const char* cmd) {
 
 int install_app_sdb(const char *srcpath) {
     D("Install start\n");
-    const char * APP_DEST = "/opt/apps/PKGS/%s";
+    const char * APP_DEST = tzplatform_mkpath(TZ_SYS_RW_APP,"PKGS/%s");
     const char* filename = sdb_dirstop(srcpath);
     char destination[PATH_MAX];
 
index 1c953cd8af3186d9a489470c429dbe68eca1aaf6..64a482dd1499d92ccb1aa4047af8e3001269099d 100644 (file)
@@ -28,6 +28,7 @@
 #include <sys/select.h>
 #include "sysdeps.h"
 #include "smack.h"
+#include <tzplatform_config.h>
 
 #define TRACE_TAG  TRACE_SYNC
 #include "sdb.h"
@@ -36,6 +37,9 @@
 
 #define SYNC_TIMEOUT 15
 
+#define APP_INSTALL_PATH_PREFIX1                tzplatform_getenv(TZ_SYS_RW_APP)
+#define APP_INSTALL_PATH_PREFIX2                tzplatform_getenv(TZ_USER_APP)
+
 struct sync_permit_rule
 {
     const char *name;
@@ -56,6 +60,13 @@ struct sync_permit_rule sdk_sync_permit_rule[] = {
  */
 #define DIR_PERMISSION 0777
 
+void init_sdk_sync_permit_rule_regx(void)
+{
+    asprintf(&sdk_sync_permit_rule[0].regx, "^((/tmp)|(%s)|(%s))/[a-zA-Z0-9]{10}/data/[a-zA-Z0-9_\\-]{1,50}\\.xml$", APP_INSTALL_PATH_PREFIX1, APP_INSTALL_PATH_PREFIX2);
+    asprintf(&sdk_sync_permit_rule[1].regx, "^((/tmp)|(%s)|(%s))/[a-zA-Z0-9]{10}/data/+(.)*\\.gcda$", APP_INSTALL_PATH_PREFIX1, APP_INSTALL_PATH_PREFIX2);
+    asprintf(&sdk_sync_permit_rule[2].regx, "da", "^(/tmp/da/)*+[a-zA-Z0-9_\\-\\.]{1,50}\\.png$");
+
+}
 
 static void set_syncfile_smack_label(char *src) {
     char *label_transmuted = NULL;
@@ -486,6 +497,7 @@ static int verify_sync_rule(const char* path) {
     char buf[PATH_MAX];
     int i=0;
 
+    init_sdk_sync_permit_rule_regx();
     for (i=0; sdk_sync_permit_rule[i].regx != NULL; i++) {
         ret = regcomp(&regex, sdk_sync_permit_rule[i].regx, REG_EXTENDED);
         if(ret){
@@ -505,6 +517,9 @@ static int verify_sync_rule(const char* path) {
         }
     }
     regfree(&regex);
+    for (i = 0; i <= 3; i++){
+       free(sdk_sync_permit_rule[i].regx);
+    }
     return 0;
 }
 
index 68059da67866510dad4c2a1075ccf65b0a1965be..61b462a41f8451db0c103d7fc2faa85037dd0736 100644 (file)
@@ -75,7 +75,7 @@ typedef union {
     } status;    
 } syncmsg;
 
-
+void init_sdk_sync_permit_rule_regx(void);
 void file_sync_service(int fd, void *cookie);
 void file_sync_subproc(int fd, void *cookie);
 int do_sync_ls(const char *path);
index d61cdc0e6b4841ed9c1afc981e2e322eaab84e44..9029619fe958c5dba08fb2be3e68bc7ae26eb7e5 100644 (file)
--- a/src/sdb.c
+++ b/src/sdb.c
@@ -27,7 +27,7 @@
 #include <signal.h>
 #include <grp.h>
 #include <netdb.h>
-
+#include <tzplatform_config.h>
 
 #include "sysdeps.h"
 #include "sdb.h"
@@ -49,7 +49,8 @@ SDB_MUTEX_DEFINE( D_lock );
 #endif
 
 int HOST = 0;
-
+#define HOME_DEV_PATH tzplatform_getenv(TZ_SDK_HOME)
+#define DEV_NAME tzplatform_getenv(TZ_SDK_USER_NAME)
 #if !SDB_HOST
 SdbdCommandlineArgs sdbd_commandline_args;
 #endif
@@ -1110,19 +1111,21 @@ int set_developer_privileges() {
         return -1;
     }
 
-    if (chdir("/home/developer") < 0) {
-        D("sdbd: unable to change working directory to /home/developer\n");
+    if (chdir(HOME_DEV_PATH) < 0) {
+        D("sdbd: unable to change working directory to %s\n", HOME_DEV_PATH);
     } else {
         if (chdir("/") < 0) {
             D("sdbd: unable to change working directory to /\n");
         }
     }
     // TODO: use pam later
-    putenv("HOME=/home/developer");
+    char * env = "HOME=";
+    strcat(env, HOME_DEV_PATH);
+    putenv(env);
 
     return 1;
 }
-#define ONDEMAND_ROOT_PATH "/home/developer"
+#define ONDEMAND_ROOT_PATH tzplatform_getenv(TZ_SDK_HOME)
 
 static void execute_required_process() {
 
@@ -1166,7 +1169,7 @@ static void init_sdk_requirements() {
     }
     if (st.st_uid != SID_DEVELOPER || st.st_gid != SID_DEVELOPER) {
         char cmd[128];
-        snprintf(cmd, sizeof(cmd), "chown developer:developer %s -R", ONDEMAND_ROOT_PATH);
+        snprintf(cmd, sizeof(cmd), "chown %s:%s %s -R", DEV_NAME, DEV_NAME, ONDEMAND_ROOT_PATH);
         if (system(cmd) < 0) {
             D("failed to change ownership to developer to %s\n", ONDEMAND_ROOT_PATH);
         }
index 8075d601f6fe7e86e06356eb7f99b45eb623f030..ccee5039f8ebf87a612053db78d3ea9ea1566cf8 100644 (file)
--- a/src/sdb.h
+++ b/src/sdb.h
@@ -25,6 +25,7 @@
 #if !SDB_HOST
 #include "commandline_sdbd.h"
 #endif
+#include <tzplatform_config.h>
 
 #define MAX_PAYLOAD 4096
 
@@ -331,8 +332,8 @@ int rootshell_mode;// 0: developer, 1: root
 
 #define SID_ROOT        0    /* traditional unix root user */
 #define SID_TTY         5    /* group for /dev/ptmx */
-#define SID_APP         5000 /* application */
-#define SID_DEVELOPER   5100 /* developer with SDK */
+#define SID_APP         tzplatform_getuid(TZ_USER_NAME) /* application */
+#define SID_DEVELOPER   tzplatform_getuid(TZ_SDK_USER_NAME) /* developer with SDK */
 #define SID_APP_LOGGING 6509
 #define SID_SYS_LOGGING 6527
 #define SID_INPUT       1004
index c2888319d28e69b4e960cd0ba26d8f43ed7a4c75..e9b3ba63c351f5018acfcdbf1782b7a37110e4d0 100644 (file)
@@ -36,6 +36,17 @@ struct arg_permit_rule sdk_arg_permit_rule[] = {
     /* end */ {NULL, NULL, 0}
 };
 
+void init_sdk_arg_permit_rule_pattern(void)
+{
+    asprintf(&sdk_arg_permit_rule[0].pattern, "^GCOV_PREFIX=((%s)|(%s))/[a-zA-Z0-9]{10}/data$", APP_INSTALL_PATH_PREFIX1, APP_INSTALL_PATH_PREFIX2);
+    asprintf(&sdk_arg_permit_rule[1].pattern, "GCOV_PREFIX_STRIP=0");
+    asprintf(&sdk_arg_permit_rule[2].pattern, "LD_LIBRARY_PATH=%s/gtest/usr/lib:$LD_LIBRARY_PATH", DEV_INSTALL_PATH_PREFIX, APP_INSTALL_PATH_PREFIX2);
+    asprintf(&sdk_arg_permit_rule[3].pattern, "TIZEN_LAUNCH_MODE=debug");
+    asprintf(&sdk_arg_permit_rule[4].pattern, "LD_PRELOAD=/usr/lib/da_probe_osp.so", DEV_INSTALL_PATH_PREFIX, APP_INSTALL_PATH_PREFIX2);
+    asprintf(&sdk_arg_permit_rule[5].pattern, "^\\-\\-gtest_output=xml:((%s)|(%s))/[a-zA-Z0-9]{10}/data/[a-zA-Z0-9_\\-]{1,30}\\.xml$", APP_INSTALL_PATH_PREFIX1, APP_INSTALL_PATH_PREFIX2);
+}
+
+
 int verify_commands(const char *arg1) {
     if (arg1 != NULL) {
         if (verify_root_commands(arg1)) {
@@ -170,6 +181,7 @@ int regcmp(const char* pattern, const char* str) {
 
 int env_verify(const char* arg) {
     int i;
+    init_sdk_arg_permit_rule_pattern();
     for (i=0; sdk_arg_permit_rule[i].name != NULL; i++) {
         if (sdk_arg_permit_rule[i].expression == 0) {
             if (!strcmp(sdk_arg_permit_rule[i].pattern, arg)) {
@@ -184,6 +196,9 @@ int env_verify(const char* arg) {
         }
     }
     D("failed to set %s\n", arg);
+    for (i = 0; i <= 6; i++){
+       free(sdk_arg_permit_rule[i].pattern);
+    }
     return 0;
 }
 
index 58f1208cc927f1e76e823f407f30306db570dc0e..de805af4669bd5cea9d539d50124921c95fba18f 100644 (file)
@@ -4,6 +4,7 @@
 #ifdef __cplusplus
 extern "C" {
 #endif
+#include <tzplatform_config.h>
 
 struct sudo_command
 {
@@ -23,10 +24,11 @@ struct arg_permit_rule
 };
 
 #define SDK_LAUNCH_PATH                         "/usr/sbin/sdk_launch"
-#define APP_INSTALL_PATH_PREFIX1                "/opt/apps"
-#define APP_INSTALL_PATH_PREFIX2                "/opt/usr/apps"
-#define GDBSERVER_PATH                          "/home/developer/sdk_tools/gdbserver/gdbserver"
-#define GDBSERVER_PLATFORM_PATH                 "/home/developer/sdk_tools/gdbserver-platform/gdbserver"
+#define APP_INSTALL_PATH_PREFIX1                tzplatform_getenv(TZ_SYS_RW_APP)
+#define APP_INSTALL_PATH_PREFIX2                tzplatform_getenv(TZ_USER_APP)
+#define DEV_INSTALL_PATH_PREFIX                 tzplatform_getenv(TZ_SDK_TOOLS)
+#define GDBSERVER_PATH                          tzplatform_mkpath(TZ_SDK_TOOLS,"gdbserver/gdbserver")
+#define GDBSERVER_PLATFORM_PATH                 tzplatform_mkpath(TZ_SDK_TOOLS,"gdbserver-platform/gdbserver")
 #define SMACK_LEBEL_SUBJECT_PATH                "/proc/self/attr/current"
 #define SMACK_SYNC_FILE_LABEL                   "*"
 #define APP_GROUPS_MAX                          100
@@ -35,6 +37,7 @@ struct arg_permit_rule
 #define SDBD_LABEL_NAME                         "sdbd"
 #define SDK_HOME_LABEL_NAME                     "sdbd::home"
 
+void init_sdk_arg_permit_rule_pattern(void);
 int verify_commands(const char *arg1);
 int verify_root_commands(const char *arg1);
 int verify_app_path(const char* path);
index 4af9982e85535d844fec18dc121430325b84f8bd..b5d8eab46059fb7c86ca9d7ee8a7ebd5ac2d3d39 100644 (file)
@@ -40,7 +40,7 @@
 
 #include "strutils.h"
 #include <system_info.h>
-
+#include <tzplatform_config.h>
 typedef struct stinfo stinfo;
 
 struct stinfo {
@@ -238,7 +238,7 @@ void reboot_service(int fd, void *arg)
 #if !SDB_HOST
 #define EVENT_SIZE  ( sizeof (struct inotify_event) )
 #define BUF_LEN     ( 1024 * ( EVENT_SIZE + 16 ) )
-#define CS_PATH     "/opt/usr/share/crash/report"
+#define CS_PATH     tzplatform_mkpath(TZ_USER_SHARE,"crash/report")
 
 void inoti_service(int fd, void *arg)
 {