Run key-manager-listener by systemd instead key-manager.
authorBartlomiej Grzelewski <b.grzelewski@samsung.com>
Thu, 21 Aug 2014 15:32:36 +0000 (17:32 +0200)
committerBartlomiej Grzelewski <b.grzelewski@samsung.com>
Fri, 12 Sep 2014 12:59:28 +0000 (14:59 +0200)
Change-Id: Ifca5fc4d8ed8d17a1da80677d3acf2b2260243d6

packaging/key-manager.spec
src/listener/CMakeLists.txt
src/listener/listener-daemon.cpp
src/manager/main/key-manager-main.cpp
systemd/CMakeLists.txt
systemd/central-key-manager-listener.service [new file with mode: 0644]

index b146c5f..f9834f1 100755 (executable)
@@ -91,6 +91,7 @@ mkdir -p %{buildroot}/etc/security/
 mkdir -p %{buildroot}/usr/lib/systemd/system/multi-user.target.wants
 mkdir -p %{buildroot}/usr/lib/systemd/system/sockets.target.wants
 ln -s ../central-key-manager.service %{buildroot}/usr/lib/systemd/system/multi-user.target.wants/central-key-manager.service
+ln -s ../central-key-manager-listener.service %{buildroot}/usr/lib/systemd/system/multi-user.target.wants/central-key-manager-listener.service
 ln -s ../central-key-manager-api-control.socket %{buildroot}/usr/lib/systemd/system/sockets.target.wants/central-key-manager-api-control.socket
 ln -s ../central-key-manager-api-storage.socket %{buildroot}/usr/lib/systemd/system/sockets.target.wants/central-key-manager-api-storage.socket
 ln -s ../central-key-manager-api-ocsp.socket %{buildroot}/usr/lib/systemd/system/sockets.target.wants/central-key-manager-api-ocsp.socket
@@ -131,6 +132,29 @@ fi
 
 %postun -n libkey-manager-client -p /sbin/ldconfig
 
+%post -n key-manager-listener
+systemctl daemon-reload
+if [ $1 = 1 ]; then
+    # installation
+    systemctl start central-key-manager-listener.service
+fi
+if [ $1 = 2 ]; then
+    # update
+    systemctl restart central-key-manager-listener.service
+fi
+
+%preun -n key-manager-listener
+if [ $1 = 0 ]; then
+    # unistall
+    systemctl stop central-key-manager-listener.service
+fi
+
+%postun -n key-manager-listener
+if [ $1 = 0 ]; then
+    # unistall
+    systemctl daemon-reload
+fi
+
 %files -n key-manager
 %manifest %{_datadir}/key-manager.manifest
 %attr(755,root,root) /usr/bin/key-manager
@@ -150,6 +174,8 @@ fi
 %files -n key-manager-listener
 %manifest %{_datadir}/key-manager-listener.manifest
 %attr(755,root,root) /usr/bin/key-manager-listener
+%attr(-,root,root) /usr/lib/systemd/system/multi-user.target.wants/central-key-manager-listener.service
+%attr(-,root,root) /usr/lib/systemd/system/central-key-manager-listener.service
 
 %files -n libkey-manager-client
 %manifest %{_datadir}/libkey-manager-client.manifest
index b3e1328..912eac1 100644 (file)
@@ -3,6 +3,7 @@ PKG_CHECK_MODULES(LISTENER_DEP
     dlog
     glib-2.0
     capi-appfw-package-manager
+    libsystemd-daemon
     )
 
 SET(LISTENER_SOURCES ${PROJECT_SOURCE_DIR}/src/listener/listener-daemon.cpp)
index bf5ea95..294612f 100644 (file)
@@ -7,6 +7,7 @@
 #include <string.h>
 #include <sys/types.h>
 #include <sys/stat.h>
+#include <systemd/sd-daemon.h>
 
 #include <glib.h>
 #include <package_manager.h>
@@ -66,9 +67,19 @@ int main(void) {
 //    for (result = getdtablesize(); result>=0; --result)
 //        close(result);
 
-//    result = open("/dev/null", O_RDWR); // open stdin
-//    dup(result); // stdout
-//    dup(result); // stderr
+    close(0);
+    close(1);
+    close(2);
+
+    result = open("/dev/null", O_RDWR); // open stdin
+
+    int fd_stdout = 0;
+    int fd_stderr = 0;
+    fd_stdout = dup(result); // stdout
+    fd_stderr = dup(result); // stderr
+    SLOG(LOG_DEBUG, CKM_TAG, "%d : %s", fd_stdout, "stdout file descriptor");
+    SLOG(LOG_DEBUG, CKM_TAG, "%d : %s", fd_stderr, "stderr file descriptor");
+
 
     umask(027);
 
index 86f1fb7..a2d43b0 100644 (file)
@@ -68,11 +68,6 @@ void registerSocketService(CKM::SocketManager &manager, const std::string& servi
 }
 
 int main(void) {
-
-    int ret;
-    ret = system("/usr/bin/key-manager-listener");
-    LogInfo("system return val : " << ret);
-
     UNHANDLED_EXCEPTION_HANDLER_BEGIN
     {
         CKM::Singleton<CKM::Log::LogSystem>::Instance().SetTag("CKM");
index ac331a5..cb3080c 100644 (file)
@@ -1,6 +1,7 @@
 INSTALL(FILES
     ${CMAKE_SOURCE_DIR}/systemd/central-key-manager.service
     ${CMAKE_SOURCE_DIR}/systemd/central-key-manager.target
+    ${CMAKE_SOURCE_DIR}/systemd/central-key-manager-listener.service
     ${CMAKE_SOURCE_DIR}/systemd/central-key-manager-api-control.socket
     ${CMAKE_SOURCE_DIR}/systemd/central-key-manager-api-storage.socket
     ${CMAKE_SOURCE_DIR}/systemd/central-key-manager-api-ocsp.socket
diff --git a/systemd/central-key-manager-listener.service b/systemd/central-key-manager-listener.service
new file mode 100644 (file)
index 0000000..1d482d9
--- /dev/null
@@ -0,0 +1,11 @@
+[Unit]
+Description=Start the Central Key Manager Listener
+Require=dbus.service
+
+[Service]
+Type=forking
+ExecStart=/usr/bin/key-manager-listener
+
+[Install]
+WantedBy=multi-user.target
+