Przeglądaj źródła

%status and pidfile handling, no longer initializes db on installation

Michael van Elst 23 lat temu
rodzic
commit
8400056ae2
2 zmienionych plików z 47 dodań i 6 usunięć
  1. 34 3
      samhain/rc.samhain
  2. 13 3
      samhain/samhain.spec

+ 34 - 3
samhain/rc.samhain

@@ -11,15 +11,46 @@
     samhain_log_minsize="1M"
     samhain_log_minsize="1M"
     samhain_log_complevel="9"
     samhain_log_complevel="9"
 
 
+%common
+    samhain_data="@l_prefix@/var/samhain/samhain.data"
+    samhain_pidfile="@l_prefix@/var/samhain/samhain.pid"
+    samhain_signal () {
+        [ -f $samhain_pidfile ] && kill -$1 `cat $samhain_pidfile`
+    }
+    samhain_wait () {
+        local i=0
+        while [ $i -lt 60 -a -f $samhain_pidfile ]; do
+            sleep 1
+            i=`expr $i + 1`
+        done
+    }
+
+%status -u @l_susr@ -o
+    samhain_usable="no"
+    samhain_active="no"
+    rcService samhain enable yes && \
+        [ -f $samhain_data ] && samhain_usable="yes"
+    rcService samhain enable yes && \
+        rcVarIsYes samhain_usable && \
+        samhain_signal 0 && samhain_active="yes"
+    echo "samhain_enable=\"$samhain_enable\""
+    echo "samhain_usable=\"$samhain_usable\""
+    echo "samhain_active=\"$samhain_active\""
+
 %start -u @l_susr@
 %start -u @l_susr@
     rcService samhain enable yes || exit 0
     rcService samhain enable yes || exit 0
     @l_prefix@/sbin/samhain -t check -D
     @l_prefix@/sbin/samhain -t check -D
 
 
 %stop -u @l_susr@
 %stop -u @l_susr@
     rcService samhain enable yes || exit 0
     rcService samhain enable yes || exit 0
-    if [ -f @l_prefix@/var/samhain/samhain.pid ]; then
-        kill -TERM `cat @l_prefix@/var/samhain/samhain.pid`
-    fi
+    samhain_signal TERM
+    samhain_wait
+
+%restart -u @l_susr@
+    rcService samhain enable yes || exit 0
+    rc samhain stop
+    sleep 2
+    rc samhain start
 
 
 %daily -u @l_susr@
 %daily -u @l_susr@
     rcService samhain enable yes || exit 0
     rcService samhain enable yes || exit 0

+ 13 - 3
samhain/samhain.spec

@@ -138,7 +138,17 @@ AutoReqProv:  no
     rm -rf $RPM_BUILD_ROOT
     rm -rf $RPM_BUILD_ROOT
 
 
 %post
 %post
-    if [ $1 -eq 1 ]; then
-        $RPM_INSTALL_PREFIX/sbin/samhain -t init
-    fi
+    #   after upgrade, restart service
+    [ $1 -eq 2 ] || exit 0
+    eval `%{l_rc} samhain status 2>/dev/null`
+    [ ".$samhain_active" = .yes ] && %{l_rc} samhain restart
+    exit 0
+
+%preun
+    #   before erase, stop service and remove log files and database
+    [ $1 -eq 0 ] || exit 0
+    %{l_rc} samhain stop 2>/dev/null
+    rm -f $RPM_INSTALL_PREFIX/var/samhain/samhain.data 2>/dev/null || true
+    rm -f $RPM_INSTALL_PREFIX/var/samhain/samhain.log* 2>/dev/null || true
+    exit 0