#!/bin/sh
  
CONFIG_FILE="/etc/comtrade.conf"
DAEMON_CONFIG_FILE="/etc/default/comtraded"

if [ -f "$CONFIG_FILE" ]; then
    /usr/bin/logger -s -p "user.info" -t "$0" "COMTRADE: $CONFIG_FILE ok, service needs to be started"
else
    /usr/bin/logger -s -p "user.info" -t "$0" "COMTRADE: no config"
    exit 1
fi

if [ -f "$DAEMON_CONFIG_FILE" ]; then
    /usr/bin/logger -s -p "user.info" -t "$0" "COMTRADE: ok: daemon config"
    . "$DAEMON_CONFIG_FILE"
else
    /usr/bin/logger -s -p "user.info" -t "$0" "COMTRADE: error: daemon config"
    exit 1
fi

# Check if SD Card was mounted ok
if [ "$MOUNT_SD" = "yes" ]; then
    STORAGE_DEV=`ls /dev/mmcblk* | tail -n 1`
    if [ -z "$STORAGE_DEV" ]; then
        /usr/bin/logger -s -p "user.info" -t "$0" "COMTRADE: error: no storage device"
        exit 1
    fi
    MOUNT_POINT=`df -h | grep "/mnt" | awk '{ print $1 }'`
    if [ -z "$MOUNT_POINT" ]; then
        /usr/bin/logger -s -p "user.info" -t "$0" "COMTRADE: error: device not mounted"
        exit 1
    fi
fi

# At this stage sorage device should be mounted and operational
# Creat missing folders if needed
if [ -d "$FILES_PATH" ]; then
    /usr/bin/logger -s -p "user.info" -t "$0" "COMTRADE: ok: $FILES_PATH"
else
    /usr/bin/logger -s -p "user.info" -t "$0" "COMTRADE: creating $FILES_PATH"
    mkdir -p "$FILES_PATH"
    chmod -R a+r "$FILES_PATH"
    chmod -R a+x "$FILES_PATH"
    sync
fi

# Check log file size, assumeimg it is same size as IED folder
LOG_FILES_STORAGE_CAPACITY=`du -ks $FILES_PATH/SHA256SUM.log | awk '{ print $1 }'`
PURGE_LOG_FILES_STORAGE=`echo "$LOG_FILES_STORAGE_CAPACITY $IED_FILES_SIZE_MAX" | awk 'size += $1 * 1024 { if (size < $2 * 1024 * 1024) print "ok"; else  print "error" }'`
if [ "$PURGE_LOG_FILES_STORAGE" = "ok" ]; then
    /usr/bin/logger -s -p "user.info" -t "$0" "COMTRADE: ok: $FILES_PATH/SHA256SUM.log capacity"
elif [ "$PURGE_LOG_FILES_STORAGE" = "error" ]; then
    rm -f "$FILES_PATH/SHA256SUM.log"
    # Yes this is error condition
    /usr/bin/logger -s -p "user.info" -t "$0" "COMTRADE: error: purge $FILES_PATH/SHA256SUM.log"
else
    /usr/bin/logger -s -p "user.info" -t "$0" "COMTRADE: warning: $FILES_PATH/SHA256SUM.log just created, size 0, or awk error"
fi

# Start worker for every IED
while read line; do
    # Get configuration for IED
    providerIp=`echo $line | awk 'BEGIN { FS = "," } ; { print $1 }'`
    providerPort=`echo $line | awk 'BEGIN { FS = "," } ; { print $2 }'`
    iedIp=`echo $line | awk 'BEGIN { FS = "," } ; { print $3 }'`
    localFolder=`echo $line | awk 'BEGIN { FS = "," } ; { print $4 }'`
    
    /usr/local/bin/comtrade/comtradeWorker.sh "$providerIp" "$providerPort" "$iedIp" "$localFolder" &> /dev/null &
done < $CONFIG_FILE

/usr/bin/logger -s -p "user.info" -t "$0" "COMTRADE: ok: all done"
