r19: * popravljena greska u postinstu vezano uz sed na /etc/default/monit
[monit-cn.git] / update-monit.d
index e5235e6..dee92dc 100755 (executable)
 MONIT_DIR=/etc/monit.d
 TEMPLATES_DIR=/usr/share/monit-cn
 
+
 check_service() {
     RET=0
-
     filename="$1"
+
     if [ ! -r "$filename" ]; then
         RET=1
         return 1
@@ -89,6 +90,35 @@ check_pid() {
     return 0
 }
 
+check_template() {
+    RET=0
+    filename="$1"
+    serviceconf=$(basename $i)
+
+    if [ ! -r "$1" ]; then
+        RET=1
+        return 1
+    fi
+
+    if [ ! -r "${TEMPLATES_DIR}/${serviceconf}" ]; then
+        RET=0
+        return 0
+    fi
+
+    if ! grep -q "^#.*monit-cn template file" "$filename"; then
+        RET=0
+        return 0
+    fi
+
+    if ! cmp -s "$filename" "${TEMPLATES_DIR}/${serviceconf}"; then
+        RET=1
+        return 1
+    fi
+
+    return $RET
+}
+
+
 #####################################################################
 
 changed=0
@@ -97,6 +127,16 @@ if [ ! -d "$MONIT_DIR" ]; then
 fi
 
 for i in $(find "$MONIT_DIR" -name '*.conf'); do
+    check_template $i
+    if [ ! $RET -eq 0 ]; then
+        serviceconf=$(basename $i)
+        echo "CN: Restored default $serviceconf template"
+        cp -a "${TEMPLATES_DIR}/${serviceconf}" "$MONIT_DIR"
+        changed=1
+    fi
+done
+
+for i in $(find "$MONIT_DIR" -name '*.conf'); do
     check_service $i
     if [ ! $RET -eq 0 ]; then
         serviceconf=$(basename $i)
@@ -108,22 +148,22 @@ done
 
 for i in $(find "$TEMPLATES_DIR" -name '*.conf'); do
     serviceconf=$(basename $i)
-    if [ -r "$MONIT_DIR"/$serviceconf.disabled ]; then
-        check_service "$MONIT_DIR"/$serviceconf.disabled
+    if [ -r "${MONIT_DIR}/${serviceconf}.disabled" ]; then
+        check_service "${MONIT_DIR}/${serviceconf}.disabled"
         if [ $RET -eq 0 ]; then
-            if [ ! -r "$MONIT_DIR"/$serviceconf ]; then
+            if [ ! -r "${MONIT_DIR}/${serviceconf}" ]; then
                 echo "CN: Enabled $serviceconf (previously disabled)"
-                mv "$MONIT_DIR"/$serviceconf.disabled \
-                    "$MONIT_DIR"/$serviceconf
+                mv "${MONIT_DIR}/${serviceconf}.disabled" \
+                    "${MONIT_DIR}/${serviceconf}"
                 changed=1
             fi
         fi
     else
         check_service $i
         if [ $RET -eq 0 ]; then
-            if [ ! -r "$MONIT_DIR"/$serviceconf ]; then
+            if [ ! -r "${MONIT_DIR}/${serviceconf}" ]; then
                 echo "CN: Enabled $serviceconf (new service)"
-                cp -a $i "$MONIT_DIR"
+                cp -a $i "${MONIT_DIR}"
                 changed=1
             fi
         fi
@@ -138,3 +178,5 @@ else
 fi
 
 exit 0
+
+# vi:ft=sh