izmjene u postinstu
[monit-cn.git] / debian / postinst
index 8afacff..0d32437 100755 (executable)
@@ -30,11 +30,10 @@ esac
 # import CN-functions
 . /usr/share/carnet-tools/functions.sh
 
-# check if monitrc is an empty template
+# check if monitrc is ours
 installfile=1
 if [ -e /etc/monit/monitrc ]; then
-    lines=$(grep -v '^#' /etc/monit/monitrc | wc -l)
-    if [ $lines -lt 4 ]; then
+    if ! grep -q "CARNet package monit-cn" /etc/monit/monitrc; then
         installfile=1
         mv -f /etc/monit/monitrc /etc/monit/monitrc.dpkg-old
     else
@@ -56,67 +55,84 @@ if grep -q '@localhost' /etc/monit/monitrc; then
         /etc/monit/monitrc || true
 fi
 
-# fix "but not on { changed } bug in monitrc
-cp_check_and_sed '^set alert [^[:space:]]*@[^[:space:]]* (but )?not on { changed }$' \
-    's/^set alert \([^[:space:]]*@[^[:space:]]*\) .*$/set alert \1 only on { uid, gid, size, nonexist, data, icmp, instance, invalid, exec, timeout, resource, checksum, match, timestamp, connection, permission }/g' \
+# migrate to "but not on { instance }" alerting style
+cp_check_and_sed '^set alert [^[:space:]]*@[^[:space:]]* ' \
+    's/^set alert \([^[:space:]]*@[^[:space:]]*\) .*$/set alert \1 but not on { instance }/g' \
     /etc/monit/monitrc || true
 
-# if alert for "changed" is enabled, disable it ASAP
-# we're waiting for "but not on { changed }" to enter in official
-# package...
-cp_check_and_sed '^set alert [^[:space:]]*@[^[:space:]]*$' \
-    's/^set alert \([^[:space:]]*@[^[:space:]]*\)$/set alert \1 only on { uid, gid, size, nonexist, data, icmp, instance, invalid, exec, timeout, resource, checksum, match, timestamp, connection, permission }/g' \
-    /etc/monit/monitrc || true
+# migrate from old hierarchy
+if [ -d /etc/monit.d ]; then
+    find /etc/monit.d -type f -print0 | xargs -0r -I% mv % /etc/monit/conf.d || true
+    rmdir /etc/monit.d >/dev/null 2>&1 || true
+fi
 
 # (re)generate monit.d files
 update-monit.d || true
 
 # disable monit startup
-cp_check_and_sed '^startup[[:space:]]*=[[:space:]]*1' \
-    's/^startup[[:space:]]*=.*/startup=0/g' /etc/default/monit || true
-
-# systemv part
-if ! grep -q 'CARNet package monit-cn' /etc/init.d/monit; then
-    echo "CN: Disabling monit SystemV script"
-    if [ -x "/etc/init.d/monit" ]; then
-        update-rc.d -f monit remove >/dev/null 2>&1
-        if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
-            invoke-rc.d monit stop || true
-        else
-            /etc/init.d/monit stop || true
-        fi
-    fi
-    if [ -e "/etc/init.d/monit" ]; then
-        # shebang
-        head -n1 /etc/init.d/monit > /etc/init.d/monit.$$
-        # middle part
-        cp-update monit-cn /etc/init.d/monit.$$ <<EOF
-echo "CN: Monit SystemV init script disabled -- inittab is in use"
-echo "CN: Exiting now..."
-exit 0
-EOF
-        # rest of init script
-        tail -n+2 /etc/init.d/monit >> /etc/init.d/monit.$$
-        mv -f /etc/init.d/monit.$$ /etc/init.d/monit
-        chmod +x /etc/init.d/monit
-    fi
+cp_check_and_sed '^startup[[:space:]]*=[[:space:]]*0' \
+    's/^startup[[:space:]]*=.*/startup=1/g' /etc/default/monit || true
+cp_check_and_sed '^START[[:space:]]*=[[:space:]]*no' \
+    's/^START[[:space:]]*=.*/START=yes/g' /etc/default/monit || true
+
+# remove us from systemv monit script
+if grep -q 'CARNet package monit-cn' /etc/init.d/monit; then
+  echo "CN: Removing monit workaround from /etc/init.d/monit -- systemd is in use"
+  cp-update -r monit-cn /etc/init.d/monit
+  chmod +x /etc/init.d/monit
 fi
 
-# install as inittab service
-if ! grep -q '/usr/sbin/monit' /etc/inittab; then
-    echo "CN: Installing monit service in /etc/inittab"
-    cp -a /etc/inittab /etc/inittab.$$
-    cp-update monit-cn /etc/inittab.$$ <<EOF
-mo:2345:respawn:/usr/sbin/monit -Ic /etc/monit/monitrc
-m0:06:wait:/usr/sbin/monit -Ic /etc/monit/monitrc stop myprocess
-EOF
-    cp_mv /etc/inittab.$$ /etc/inittab
-fi
-
-# reload init, since we have new configuration
-echo "CN: (Re)starting monit service, please check /var/log/daemon.log"
-pkill -9 -f '/usr/sbin/monit$' || true
-kill -HUP 1
+service monit restart
+
+## systemv part
+#if ! grep -q 'CARNet package monit-cn' /etc/init.d/monit; then
+#    echo "CN: Disabling monit SystemV script"
+#    if [ -x "/etc/init.d/monit" ]; then
+#        update-rc.d -f monit remove >/dev/null 2>&1
+#        if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
+#            invoke-rc.d monit stop || true
+#        else
+#            /etc/init.d/monit stop || true
+#        fi
+#    fi
+#    if [ -e "/etc/init.d/monit" ]; then
+#        # shebang
+#        head -n1 /etc/init.d/monit > /etc/init.d/monit.$$
+#        # middle part
+#        cp-update monit-cn /etc/init.d/monit.$$ <<EOF
+#echo "CN: Monit SystemV init script disabled -- inittab is in use"
+#echo "CN: Exiting now..."
+#exit 0
+#EOF
+#        # rest of init script
+#        tail -n+2 /etc/init.d/monit >> /etc/init.d/monit.$$
+#        mv -f /etc/init.d/monit.$$ /etc/init.d/monit
+#        chmod +x /etc/init.d/monit
+#    fi
+#fi
+#
+## if old inittab is referencing sbin, fix it
+#if grep -q '/usr/sbin/monit' /etc/inittab; then
+#    cp_check_and_sed '/usr/sbin/monit' \
+#      's:/usr/sbin/monit:/usr/bin/monit:g' \
+#      /etc/inittab || true
+#fi
+#
+## install as inittab service
+#if ! grep -q '/usr/bin/monit' /etc/inittab; then
+#    echo "CN: Installing monit service in /etc/inittab"
+#    cp -a /etc/inittab /etc/inittab.$$
+#    cp-update monit-cn /etc/inittab.$$ <<EOF
+#mo:2345:respawn:/usr/bin/monit -Ic /etc/monit/monitrc
+#m0:06:wait:/usr/bin/monit -Ic /etc/monit/monitrc stop myprocess
+#EOF
+#    cp_mv /etc/inittab.$$ /etc/inittab
+#fi
+#
+## reload init, since we have new configuration
+#echo "CN: (Re)starting monit service, please check /var/log/daemon.log"
+#pkill -9 -f '/usr/bin/monit$' || true
+#telinit q
 
 # dh_installdeb will replace this with shell code automatically
 # generated by other debhelper scripts.