Reorganized files for packaging.
[carnet-upgrade.git] / src / scripts / check_services
diff --git a/src/scripts/check_services b/src/scripts/check_services
new file mode 100755 (executable)
index 0000000..ee5a9e6
--- /dev/null
@@ -0,0 +1,106 @@
+#!/bin/sh
+# last update: 2004-12-20
+# last update: 2005-01-07 razlicita msg_finished poruka, ovisno o $queuename
+# Zoran 'jelly' Dzelajlija <jelly@srce.hr>
+# Ivan 'ico' Rako <irako@srce.hr>
+
+# Load debconf stuff
+. /usr/share/debconf/confmodule
+
+# Load nase funkcije
+. /usr/share/carnet-upgrade/functions.sh
+. /usr/share/carnet-upgrade/messages.sh
+. /usr/share/carnet-upgrade/data.sh
+
+# provjeri da li su paketi iz prvog polja instalirani i to strpaj u debconf
+cs_preupgrade () {
+  local services i
+
+  for i in $(echo "$services_to_check" | sed 's/               */      /g'| awk -F'    ' '{print $1}')
+  do
+    if pkg $i; then
+      if ! echo $services | grep -q $i; then
+        services="$services $i"
+      fi
+    fi
+  done
+
+  if [ -n "$services" ]; then
+    db_set cn-upgrade/check-services "$services"
+    db_go || true
+  fi
+}
+
+cs_pgrep () {
+    local failed_services
+
+    while read line; do
+        # get service param from stdin
+        user=$(echo "$line" | awk -F ' ' '{print $2}')
+        psname=$(echo "$line" | awk -F '       ' '{print $3}')
+        nicename=$(echo "$line" | awk -F '     ' '{print $4}')
+
+        # check if service is running
+        if ! pgrep -u $user -f "$psname" > /dev/null; then
+            failed_services="$failed_services, $nicename"
+
+        fi
+    done
+
+    echo ${failed_services#, }
+}
+
+# uzmi iz debconfa instalirane servise, i provjeri rade li
+cs_postupgrade () {
+  local services i failed_services msg_header
+
+  case "$queuename" in
+    upgrade) msg_header="$msg_finished_upgrade"
+      ;;
+    *)
+      msg_header="$msg_finished"
+      ;;
+  esac
+
+  db_get cn-upgrade/check-services || true
+  services="${RET// /|}"
+
+  failed_services=$(
+    echo "$services_to_check" \
+    | grep -E "^($services)" \
+    | sed 's/          */      /g' \
+    | cs_pgrep
+  )
+
+  if [ -n "$failed_services" ]; then
+    notice "$msg_header$msg_failed_services$failed_services"
+  else
+    notice "$msg_header"
+  fi
+}
+
+# checkiraj da li je sto zapisano u debconf
+cs_check () {
+  db_get cn-upgrade/check-services || true
+  debconf="$RET"
+
+  if [ -n "$debconf" ]; then
+    exit 0
+  else
+    exit 1
+  fi
+}
+
+case "$1" in
+preupgrade)    cs_preupgrade
+       ;;
+postupgrade)   cs_postupgrade
+        ;;
+check) cs_check
+        ;;
+*)     echo "Usage: $0 (preupgrade|postupgrade|check)"
+        exit 1 
+        ;;
+esac
+exit 0
+