Apply System Daemonize
authorSung-jae Park <nicesj.park@samsung.com>
Tue, 31 Mar 2015 12:42:35 +0000 (21:42 +0900)
committerSung-jae Park <nicesj.park@samsung.com>
Tue, 31 Mar 2015 12:44:56 +0000 (21:44 +0900)
[model] Redwood,Kiran,B3(Wearable)
[binary_type] AP
[customer] Docomo/Orange/ATT/Open
[issue#] N/A
[problem]
[cause]
[solution]
[team] HomeTF
[request]
[horizontal_expansion]

Change-Id: I9aef4ae7c14c295b48194b28be5f0836851dc811

12 files changed:
CMakeLists.txt
data-provider-master.rule [new file with mode: 0644]
data/data-provider-master.service
include/service_common.h
packaging/data-provider-master.spec
src/badge_service.c
src/file_service.c
src/notification_service.c
src/server.c
src/service_common.c
src/shortcut_service.c
src/utility_service.c

index 03a6558..b01aa92 100755 (executable)
@@ -206,6 +206,7 @@ INSTALL(FILES ${CMAKE_SOURCE_DIR}/data/${TARGET}/${PRODUCT}.resolution.ini DESTI
 ENDIF (LIVEBOX)
 INSTALL(FILES ${CMAKE_SOURCE_DIR}/LICENSE DESTINATION /usr/share/license RENAME "${PROJECT_NAME}")
 INSTALL(TARGETS ${PROJECT_NAME} DESTINATION /usr/bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/data-provider-master.rule DESTINATION /etc/smack/accesses.d)
 
 # INCLUDE FOR BUILD & INSTALL .PO FILES
 ADD_SUBDIRECTORY(res)
diff --git a/data-provider-master.rule b/data-provider-master.rule
new file mode 100644 (file)
index 0000000..5b19fab
--- /dev/null
@@ -0,0 +1,16 @@
+data-provider-master::bin system::vconf_system r----- ------
+data-provider-master::bin data-provider-master::data r----- ------
+data-provider-master::bin samsung::vconf::dynamicbox rw---- ------
+data-provider-master::bin xorg rw---- ------
+data-provider-master::bin tizen::vconf::setting::admin rw---- ------
+data-provider-master::bin tizen::vconf::platform::r r----- ------
+data-provider-master::bin device::app_logging -w---- ------
+data-provider-master::bin device::sys_logging -w---- ------
+data-provider-master::bin tizen::vconf::public::r r----l ------
+data-provider-master::bin data-provider-master::share rwx--- ------
+data-provider-master::bin data-provider-master::db rw---- ------
+data-provider-master::bin pkgmgr::db rw----- ------
+data-provider-master::bin _ rw---- ------
+data-provider-master::bin security-server::api-privilege-by-pid rw---- ------
+data-provider-master::bin aul::launch --x--- ------
+data-provider-master::bin device::input rw---- ------
index 4994f4e..283d13f 100644 (file)
@@ -19,6 +19,9 @@ Description=Data Provider daemon
 After=xorg.target
 
 [Service]
+User=system
+Group=system
+SmackProcessLabel=data-provider-master::bin
 Environment=BUFMGR_LOCK_TYPE="once"
 Environment=BUFMGR_MAP_CACHE="true"
 Type=notify
index f0dbf96..93c951b 100644 (file)
@@ -45,7 +45,7 @@ extern int tcb_client_type(struct tcb *tcb);
 extern int tcb_client_type_set(struct tcb *tcb, enum tcb_type type);
 extern int tcb_is_valid(struct service_context *svc_ctx, struct tcb *tcb);
 
-extern struct service_context *service_common_create(const char *addr, int (*service_thread_main)(struct tcb *tcb, struct packet *packet, void *data), void *data);
+extern struct service_context *service_common_create(const char *addr, const char *label, int (*service_thread_main)(struct tcb *tcb, struct packet *packet, void *data), void *data);
 extern int service_common_destroy(struct service_context *svc_ctx);
 
 extern int service_common_multicast_packet(struct tcb *tcb, struct packet *packet, int type);
index ab25011..f57614d 100755 (executable)
@@ -151,9 +151,9 @@ chown 5000:5000 /opt/usr/share/live_magazine/reader
 chmod 750 /opt/usr/share/live_magazine/reader
 chown 5000:5000 /opt/usr/share/live_magazine/always
 chmod 750 /opt/usr/share/live_magazine/always
-chown 0:5000 /opt/dbspace/.widget.db
+chown 200:5000 /opt/dbspace/.widget.db
 chmod 640 /opt/dbspace/.widget.db
-chown 0:5000 /opt/dbspace/.widget.db-journal
+chown 200:5000 /opt/dbspace/.widget.db-journal
 chmod 640 /opt/dbspace/.widget.db-journal
 vconftool set -t bool "memory/data-provider-master/started" 0 -i -u 5000 -f -s system::vconf_system
 vconftool set -t int "memory/private/data-provider-master/restart_count" 0 -i -u 5000 -f -s data-provider-master
@@ -163,7 +163,7 @@ echo "%{_sysconfdir}/init.d/data-provider-master start"
 
 %files -n data-provider-master
 %manifest %{name}.manifest
-%defattr(-,root,root,-)
+%defattr(-,system,system,-)
 %{_bindir}/data-provider-master
 %{_libdir}/systemd/system/multi-user.target.wants/data-provider-master.service
 %{_libdir}/systemd/system/data-provider-master.service
@@ -177,5 +177,6 @@ echo "%{_sysconfdir}/init.d/data-provider-master start"
 /opt/usr/share/live_magazine/*
 /opt/dbspace/.widget.db
 /opt/dbspace/.widget.db-journal
+%{_sysconfdir}/smack/accesses.d/%{name}.rule
 
 # End of a file
index 60eab7f..e287c1d 100644 (file)
@@ -550,30 +550,12 @@ HAPI int badge_service_init(void)
                return WIDGET_ERROR_ALREADY_STARTED;
        }
 
-       s_info.svc_ctx = service_common_create(BADGE_SOCKET, service_thread_main, NULL);
+       s_info.svc_ctx = service_common_create(BADGE_SOCKET, BADGE_SMACK_LABEL, service_thread_main, NULL);
        if (!s_info.svc_ctx) {
                ErrPrint("Unable to activate service thread\n");
                return WIDGET_ERROR_FAULT;
        }
 
-       if (smack_fsetlabel(service_common_fd(s_info.svc_ctx), BADGE_SMACK_LABEL, SMACK_LABEL_IPOUT) != 0) {
-               if (errno != EOPNOTSUPP) {
-                       ErrPrint("Unable to set SMACK label(%d)\n", errno);
-                       service_common_destroy(s_info.svc_ctx);
-                       s_info.svc_ctx = NULL;
-                       return WIDGET_ERROR_FAULT;
-               }
-       }
-
-       if (smack_fsetlabel(service_common_fd(s_info.svc_ctx), BADGE_SMACK_LABEL, SMACK_LABEL_IPIN) != 0) {
-               if (errno != EOPNOTSUPP) {
-                       ErrPrint("Unable to set SMACK label(%d)\n", errno);
-                       service_common_destroy(s_info.svc_ctx);
-                       s_info.svc_ctx = NULL;
-                       return WIDGET_ERROR_FAULT;
-               }
-       }
-
        DbgPrint("Successfully initiated\n");
        return WIDGET_ERROR_NONE;
 }
index e98ac6c..dfb6c5a 100644 (file)
@@ -631,7 +631,7 @@ int file_service_init(void)
                return WIDGET_ERROR_FAULT;
        }
 
-       s_info.svc_ctx = service_common_create(FILE_SERVICE_ADDR, service_thread_main, NULL);
+       s_info.svc_ctx = service_common_create(FILE_SERVICE_ADDR, NULL, service_thread_main, NULL);
        if (!s_info.svc_ctx) {
                ErrPrint("Unable to activate service thread\n");
 
index 56955e5..dcda394 100644 (file)
@@ -767,30 +767,12 @@ HAPI int notification_service_init(void)
 
        _notification_init();
 
-       s_info.svc_ctx = service_common_create(NOTIFICATION_SOCKET, service_thread_main, NULL);
+       s_info.svc_ctx = service_common_create(NOTIFICATION_SOCKET, NOTIFICATION_SMACK_LABEL, service_thread_main, NULL);
        if (!s_info.svc_ctx) {
                ErrPrint("Unable to activate service thread\n");
                return WIDGET_ERROR_FAULT;
        }
 
-       if (smack_fsetlabel(service_common_fd(s_info.svc_ctx), NOTIFICATION_SMACK_LABEL, SMACK_LABEL_IPOUT) != 0) {
-               if (errno != EOPNOTSUPP) {
-                       ErrPrint("Unable to set SMACK label(%d)\n", errno);
-                       service_common_destroy(s_info.svc_ctx);
-                       s_info.svc_ctx = NULL;
-                       return WIDGET_ERROR_FAULT;
-               }
-       }
-
-       if (smack_fsetlabel(service_common_fd(s_info.svc_ctx), NOTIFICATION_SMACK_LABEL, SMACK_LABEL_IPIN) != 0) {
-               if (errno != EOPNOTSUPP) {
-                       ErrPrint("Unable to set SMACK label(%d)\n", errno);
-                       service_common_destroy(s_info.svc_ctx);
-                       s_info.svc_ctx = NULL;
-                       return WIDGET_ERROR_FAULT;
-               }
-       }
-
        DbgPrint("Successfully initiated\n");
        return WIDGET_ERROR_NONE;
 }
index d4d593c..6950fd3 100644 (file)
@@ -941,7 +941,7 @@ static int validate_request(pid_t pid, struct slave_node *slave, const char *pkg
                        inst = package_find_instance_by_id(pkgname, id);
                } else {
                        ErrPrint("slave is not valid (%s)\n", id);
-                       return WIDGET_STATUS_ERROR_INVALID_PARAMETER;
+                       return WIDGET_ERROR_INVALID_PARAMETER;
                }
        } else {
                inst = package_find_instance_by_id(pkgname, id);
@@ -9387,43 +9387,31 @@ HAPI int server_init(void)
                ErrPrint("Failed to create a info socket\n");
        }
 
-       s_info.slave_fd = com_core_packet_server_init(SLAVE_SOCKET, s_slave_table);
+       s_info.slave_fd = com_core_packet_server_init_with_permission(SLAVE_SOCKET, s_slave_table, "data-provider-master::provider");
        if (s_info.slave_fd < 0) {
                ErrPrint("Failed to create a slave socket\n");
        }
 
-       smack_fsetlabel(s_info.slave_fd, "data-provider-master::provider", SMACK_LABEL_IPIN);
-       smack_fsetlabel(s_info.slave_fd, "data-provider-master::provider", SMACK_LABEL_IPOUT);
-
-       s_info.client_fd = com_core_packet_server_init(CLIENT_SOCKET, s_client_table);
+       s_info.client_fd = com_core_packet_server_init_with_permission(CLIENT_SOCKET, s_client_table, "data-provider-master::client");
        if (s_info.client_fd < 0) {
                ErrPrint("Failed to create a client socket\n");
        }
 
-       smack_fsetlabel(s_info.client_fd, "data-provider-master::client", SMACK_LABEL_IPIN);
-       smack_fsetlabel(s_info.client_fd, "data-provider-master::client", SMACK_LABEL_IPOUT);
-
        /*!
         * \note
         * remote://:8208
         * Skip address to use the NULL.
         */
-       s_info.remote_client_fd = com_core_packet_server_init("remote://:"CLIENT_PORT, s_client_table);
+       s_info.remote_client_fd = com_core_packet_server_init_with_permission("remote://:"CLIENT_PORT, s_client_table, "data-provider-master::client");
        if (s_info.client_fd < 0) {
                ErrPrint("Failed to create a remote client socket\n");
        }
 
-       smack_fsetlabel(s_info.remote_client_fd, "data-provider-master::client", SMACK_LABEL_IPIN);
-       smack_fsetlabel(s_info.remote_client_fd, "data-provider-master::client", SMACK_LABEL_IPOUT);
-
-       s_info.service_fd = com_core_packet_server_init(SERVICE_SOCKET, s_service_table);
+       s_info.service_fd = com_core_packet_server_init_with_permission(SERVICE_SOCKET, s_service_table, "data-provider-master");
        if (s_info.service_fd < 0) {
                ErrPrint("Faild to create a service socket\n");
        }
 
-       smack_fsetlabel(s_info.service_fd, "data-provider-master", SMACK_LABEL_IPIN);
-       smack_fsetlabel(s_info.service_fd, "data-provider-master", SMACK_LABEL_IPOUT);
-
        if (chmod(INFO_SOCKET, 0600) < 0) {
                ErrPrint("info socket: %s\n", strerror(errno));
        }
index 28a39dc..2f5758e 100644 (file)
@@ -825,7 +825,7 @@ static void *server_main(void *data)
  * \NOTE
  * MAIN THREAD
  */
-HAPI struct service_context *service_common_create(const char *addr, int (*service_thread_main)(struct tcb *tcb, struct packet *packet, void *data), void *data)
+HAPI struct service_context *service_common_create(const char *addr, const char *label, int (*service_thread_main)(struct tcb *tcb, struct packet *packet, void *data), void *data)
 {
        int status;
        struct service_context *svc_ctx;
@@ -854,7 +854,7 @@ HAPI struct service_context *service_common_create(const char *addr, int (*servi
                return NULL;
        }
 
-       svc_ctx->fd = secure_socket_create_server(addr);
+       svc_ctx->fd = secure_socket_create_server_with_permission(addr, label);
        if (svc_ctx->fd < 0) {
                DbgFree(svc_ctx);
                return NULL;
index e9da127..2276794 100644 (file)
@@ -213,30 +213,12 @@ HAPI int shortcut_service_init(void)
                return WIDGET_ERROR_ALREADY_STARTED;
        }
 
-       s_info.svc_ctx = service_common_create(SHORTCUT_SOCKET, service_thread_main, NULL);
+       s_info.svc_ctx = service_common_create(SHORTCUT_SOCKET, SHORTCUT_SMACK_LABEL, service_thread_main, NULL);
        if (!s_info.svc_ctx) {
                ErrPrint("Unable to activate service thread\n");
                return WIDGET_ERROR_FAULT;
        }
 
-       if (smack_fsetlabel(service_common_fd(s_info.svc_ctx), SHORTCUT_SMACK_LABEL, SMACK_LABEL_IPOUT) != 0) {
-               if (errno != EOPNOTSUPP) {
-                       ErrPrint("Unable to set SMACK label(%d)\n", errno);
-                       service_common_destroy(s_info.svc_ctx);
-                       s_info.svc_ctx = NULL;
-                       return WIDGET_ERROR_FAULT;
-               }
-       }
-
-       if (smack_fsetlabel(service_common_fd(s_info.svc_ctx), SHORTCUT_SMACK_LABEL, SMACK_LABEL_IPIN) != 0) {
-               if (errno != EOPNOTSUPP) {
-                       ErrPrint("Unable to set SMACK label(%d)\n", errno);
-                       service_common_destroy(s_info.svc_ctx);
-                       s_info.svc_ctx = NULL;
-                       return WIDGET_ERROR_FAULT;
-               }
-       }
-
        DbgPrint("Successfully initiated\n");
        return WIDGET_ERROR_NONE;
 }
index ab51439..0b1fd97 100644 (file)
@@ -407,30 +407,12 @@ int utility_service_init(void)
                return WIDGET_ERROR_ALREADY_STARTED;
        }
 
-       s_info.svc_ctx = service_common_create(UTILITY_SOCKET, service_thread_main, NULL);
+       s_info.svc_ctx = service_common_create(UTILITY_SOCKET, UTILITY_SMACK_LABEL, service_thread_main, NULL);
        if (!s_info.svc_ctx) {
                ErrPrint("Unable to activate service thread\n");
                return WIDGET_ERROR_FAULT;
        }
 
-       if (smack_fsetlabel(service_common_fd(s_info.svc_ctx), UTILITY_SMACK_LABEL, SMACK_LABEL_IPOUT) != 0) {
-               if (errno != EOPNOTSUPP) {
-                       ErrPrint("Unable to set SMACK label(%d)\n", errno);
-                       service_common_destroy(s_info.svc_ctx);
-                       s_info.svc_ctx = NULL;
-                       return WIDGET_ERROR_FAULT;
-               }
-       }
-
-       if (smack_fsetlabel(service_common_fd(s_info.svc_ctx), UTILITY_SMACK_LABEL, SMACK_LABEL_IPIN) != 0) {
-               if (errno != EOPNOTSUPP) {
-                       ErrPrint("Unable to set SMACK label(%d)\n", errno);
-                       service_common_destroy(s_info.svc_ctx);
-                       s_info.svc_ctx = NULL;
-                       return WIDGET_ERROR_FAULT;
-               }
-       }
-
        DbgPrint("Successfully initiated\n");
        return WIDGET_ERROR_NONE;
 }