From 9d9a0fcb7830b29c3f9d645d11fa8a53c3921568 Mon Sep 17 00:00:00 2001
From: Martina Vicinanza <martina.vicinanza@inaf.it>
Date: Wed, 25 Sep 2024 13:56:42 +0000
Subject: [PATCH] Upload New File

---
 script/asiago_checkfits.sh | 209 +++++++++++++++++++++++++++++++++++++
 1 file changed, 209 insertions(+)
 create mode 100644 script/asiago_checkfits.sh

diff --git a/script/asiago_checkfits.sh b/script/asiago_checkfits.sh
new file mode 100644
index 0000000..8e0a6ea
--- /dev/null
+++ b/script/asiago_checkfits.sh
@@ -0,0 +1,209 @@
+#!/bin/bash
+
+#: Title        : checkfits.sh
+#: Date         : 2014/10/28
+#: Author       : "Marco De Marco" <demarco@oats.inaf.it>
+#: Version      : 1.0
+#: Description  : Fits verification and proccessing script
+
+#Tools paths
+VERIFY_TOOL="/usr/local/bin/fitsverify"
+LISTHEAD_TOOL="/usr/local/bin/listhead"
+MODHEAD_TOOL="/usr/local/bin/modhead"
+
+if [ "$1" == "CHECK" ]; then
+
+        #: Section      : CHECK
+        #: Parameter    : none
+        #: Response     : CHECK OK
+        #:              : CHECK FATAL
+        #: Description  : Check availability of script tools
+
+        #Check fitsverify tools
+        CHECK_STRING="conform to the FITS format"
+
+        res=$($VERIFY_TOOL 2>&1)
+
+        check=$(echo $res | grep "$CHECK_STRING" | wc | awk '{print $1}')
+        if [ "$check" -lt "1" ]; then
+                echo "CHECK FATAL"
+                exit 0
+        fi
+
+        #Check listhead tools
+        CHECK_STRING="Usage: listhead filename"
+
+        res=$($LISTHEAD_TOOL 2>&1)
+
+        check=$(echo $res | grep "$CHECK_STRING" | wc | awk '{print $1}')
+        if [ "$check" -lt "1" ]; then
+                echo "CHECK FATAL"
+                exit 0
+        fi
+
+        #Check modhead tools
+        CHECK_STRING="Usage: modhead filename"
+
+        res=$($MODHEAD_TOOL 2>&1)
+
+        check=$(echo $res | grep "$CHECK_STRING" | wc | awk '{print $1}')
+        if [ "$check" -lt "1" ]; then
+                echo "CHECK FATAL"
+                exit 0
+        fi
+
+        echo "CHECK OK"
+        exit 0
+
+elif [ "$1" == "VALID" ]; then
+
+        #: Section      : VALID
+        #: Parameter    : file path
+        #: Response     : VALID OK
+        #:              : VALID IGNORE
+        #: Description  : Check file name compliance
+
+        file=$2
+        file_name=${file##*/}
+
+        #Check regex for rsync temporary file -> ignore
+        if [[ ! "${file_name,,}" =~ ^[^\.].*\.(fits|fit|fts).*$ ]]; then
+                echo "VALID IGNORE: invalid regular expression"
+                exit 0
+        fi
+
+        echo "VALID OK"
+        exit 0
+
+elif [ "$1" == "VERIFY" ]; then
+
+        #: Section      : VERIFY
+        #: Parameter    : file path
+        #: Response     : VERIFY OK
+        #:              : VERIFY WAIT
+        #:              : VERIFY FATAL
+        #: Description  : Check file compliance to fits format
+
+        file=$2
+
+        FATAL_ERROR="Fatal"
+        EOF_ERROR="End-of-file"
+
+        #Change file and permission before processing
+        /usr/bin/sudo -n /bin/chmod go+r $file
+
+        #if fits verify tools exists -> fatal
+        if [ ! -x $VERIFY_TOOL ]; then
+                echo "VERIFY FATAL : verify tools not exists"
+                exit 0
+        fi
+
+        #if fits file not exists -> fatal
+        if [ ! -f $file ]; then
+                echo "VERIFY FATAL : file not exists"
+                exit 0
+        fi
+
+        #Check with fits verify
+        res=$($VERIFY_TOOL $file 2>&1)
+
+        #if fitsverify return fatal error -> wait
+        fatal=$(echo $res | grep "$FATAL_ERROR" | wc | awk '{print $1}')
+        if [ "$fatal" -ge "1" ]; then
+                echo "VERIFY FATAL"
+                exit 0
+        fi
+
+        #if fitsverify return end of file -> wait
+        eof=$(echo $res | grep "$EOF_ERROR" | wc | awk '{print $1}')
+        if [ "$eof" -ge "1" ]; then
+                echo "VERIFY WAIT"
+                exit 0
+        fi
+
+        #else -> ok
+        echo "VERIFY OK"
+        exit 0
+
+elif [ "$1" == "PREPROCESS" ]; then
+
+        #: Section      : PREPROCESS
+        #: Parameter    : file path
+        #:              : ingestion result [OK, WAIT, FATAL]
+        #: Response     : PREPROCESS OK
+        #:              : PREPROCESS FATAL
+        #: Description  : Apply preprocessing before ingestion
+
+        file=$2
+        file_name=${file##*/}
+
+        verified=$3
+
+        #Check verified parameter value
+        if [ "$verified" != "OK" -a "$verified" != "WAIT" -a "$verified" != "FATAL" ]; then
+                echo "PREPROCESS FATAL"
+                exit 0
+        fi
+
+        #Pre processing for verified OK files
+        if [ "$verified" == "OK" ]; then
+
+                #Change file ownership
+                /usr/bin/sudo -n /bin/chown controls:controls $file
+                #Change file and permission before processing
+                /usr/bin/sudo -n /bin/chmod u+rw $file
+
+                #Unpack Schmidt files
+                if [[ "${file_name##*.}" == fz ]]; then
+                        funpack -D $file
+                fi #Schmidt files
+
+
+        fi #verified ok files
+
+        echo "PREPROCESS OK"
+        exit 0
+
+elif [ "$1" == "POSTPROCESS" ]; then
+
+        #: Section      : POSTPROCESS
+        #: Parameter    : file path
+        #:              : ingestion result [OK, WAIT, FATAL]
+        #: Response     : POSTPROCESS OK
+        #:              : POSTPROCESS FATAL
+        #: Description  : Apply postprocessing after ingestion
+
+        file=$2
+        file_name=${file##*/}
+
+        verified=$3
+
+        #Check verified parameter value
+        if [ "$verified" != "OK" -a "$verified" != "WAIT" -a "$verified" != "FATAL" ]; then
+                echo "POSTPROCESS FATAL"
+                exit 0
+        fi
+
+        #Post process verified WAIT files
+        if [ "$verified" == "WAIT" ]; then
+                echo "Warning file: $file_name" | mutt -s "Pre process log" -- demarco@oats.inaf.it
+        fi
+
+        #Post process verified FATAL files
+        if [ "$verified" == "FATAL" ]; then
+                echo "Fatal file: $file_name" | mutt -s "Pre process log" -- demarco@oats.inaf.it
+        fi
+
+        echo "POSTPROCESS OK"
+        exit 0
+
+else
+
+        #: Section      : DEFAULT
+        #: Parameter    : none
+        #: Response     : UNKNOWN
+
+        echo "UNKNOWN"
+        exit 0
+
+fi
\ No newline at end of file
-- 
GitLab