#!/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
    . /usr/local/bin/telem/functions
    findSDp1             || { /usr/bin/logger -s -p "user.info" -t "$0" "COMTRADE: error: no storage device" ; exit 1; }
    isSDp1Mounted "/mnt" || { /usr/bin/logger -s -p "user.info" -t "$0" "COMTRADE: error: device not mounted"; exit 1; }
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"
