#!/bin/bash

CONF="/etc/netflow/nfw.conf"
LOCK="/var/run/nf_imexd"
DIR="/tmp"
MYSQL="mysql"
MYSQLDUMP="mysqldump"


DBHOST=`cat $CONF|grep "^[[:blank:]]*define('PRG_DBHOST'"|sed "s/.*,[[:blank:]]*'//"|sed "s/'.*//"`
DBPORT=`cat $CONF|grep "^[[:blank:]]*define('PRG_DBPORT'"|sed "s/.*,[[:blank:]]*'//"|sed "s/'.*//"`
DBUSER=`cat $CONF|grep "^[[:blank:]]*define('PRG_DBUSER'"|sed "s/.*,[[:blank:]]*'//"|sed "s/'.*//"`
DBPASS=`cat $CONF|grep "^[[:blank:]]*define('PRG_DBPASS'"|sed "s/.*,[[:blank:]]*'//"|sed "s/'.*//"`
DBNAME=`cat $CONF|grep "^[[:blank:]]*define('PRG_DBNAME'"|sed "s/.*,[[:blank:]]*'//"|sed "s/'.*//"`


if [ -n "$DBHOST" ]; then
  DBHOST="-h $DBHOST"
fi

if [ -n "$DBPORT" ]; then
  DBPORT="-P $DBPORT"
fi

if [ -n "$DBUSER" ]; then
  DBUSER="-u $DBUSER"
fi

if [ -n "$DBPASS" ]; then
  DBPASS="--password=$DBPASS"
fi

MYSQLOPT="$DBUSER $DBPASS $DBHOST $DBPORT $DBNAME"

umask 022

# Avoid running more than one at a time
if [ -x /usr/bin/lockfile-create ] ; then
    /usr/bin/lockfile-create $LOCK
    if [ $? -ne 0 ] ; then
      exit 1
    fi

    # Keep lockfile fresh
    /usr/bin/lockfile-touch $LOCK &
    LOCKTOUCHPID="$!"
else
  if [ -f $LOCK ]; then
    exit 0
  fi
  cat /dev/null > $LOCK
fi


while true
do
  TABLE=`echo "SELECT name FROM x_expimp WHERE state='waiting' AND type='export' ORDER BY itime LIMIT 1;" | $MYSQL -s $MYSQLOPT | grep -v "^name"`

  if [ -n "$TABLE" ]; then
    NEW=`echo $TABLE|tr hdwm opqr`
    rm "$DIR/exporttable_$TABLE.gz" &> /dev/null  
  
    echo "UPDATE x_expimp SET state='running' WHERE name='$TABLE' AND type='export'" | $MYSQL -s $MYSQLOPT
    $MYSQLDUMP -e --add-drop-table -q $MYSQLOPT $TABLE|sed "s/$TABLE/$NEW/"|gzip - > "$DIR/exporttable_$TABLE.gz"
    echo "DELETE FROM x_expimp WHERE name='$TABLE' AND type='export'" | $MYSQL -s $MYSQLOPT
  else
    TABLE=`echo "SELECT name FROM x_expimp WHERE state='waiting' AND type='import' ORDER BY itime LIMIT 1;" | $MYSQL $MYSQLOPT | grep -v "^name"`
    if [ -n "$TABLE" ]; then
      echo "UPDATE x_expimp SET state='running' WHERE name='$TABLE' AND type='import'" | $MYSQL -s $MYSQLOPT
      cat "$DIR/$TABLE" | gzip -d | $MYSQL -s $MYSQLOPT &> /dev/null
      echo "DELETE FROM x_expimp WHERE name='$TABLE' AND type='import'" | $MYSQL -s $MYSQLOPT
    else
      if [ -x /usr/bin/lockfile-remove ]; then
        /usr/bin/lockfile-remove $LOCK
        kill $LOCKTOUCHPID
      fi
      if [ -f $LOCK ]; then
        rm $LOCK &> /dev/null
      fi
      exit 0    
    fi
  fi
done
