#!/bin/bash

if [ -f /etc/default/fired ]; then
  source /etc/default/fired
fi

export IPTABLES_RULES=/etc/fire/rules
if [ ! -z ${RULES+x} ]; then
  export IPTABLES_RULES=$RULES
fi

if [ -z ${IP4TABLES_BINARY+x} ]; then
  export IP4TABLES_BINARY=/sbin/iptables
fi

if [ -z ${IP6TABLES_BINARY+x} ]; then
  export IP6TABLES_BINARY=/sbin/ip6tables
fi

export FIRE_HEADER=/usr/lib/fire/fire-header
export FIRE_FUNCTIONS=/usr/lib/fire/fire-functions

if [ -z ${FIRE_FAILSAFE+x} ]; then
  export FIRE_FAILSAFE=/usr/lib/fire/fire-failsafe
fi

if [ -z ${BACKUP_DIR+x} ]; then
  export BACKUP_DIR=/var/lib/fire
fi

export LAST_OK_RULES="$BACKUP_DIR/last_ok_rules"

flag_verbose=no
flag_flush=no
flag_help=no
flag_failsafe=no

if [ "$QUICK" = "True" ]; then
  flag_quick=yes
fi

source $FIRE_FUNCTIONS


args=`getopt fhsvq "$@"`
if test $? != 0 ;then
    print_help
exit 1
fi
set -- $args
                     
while [ $# -gt 0 ]
do
    case "$1" in
    (-v) flag_verbose=yes;;
    (-f) flag_flush=yes;;
    (-h) flag_help=yes;;
    (-s) flag_failsafe=yes;;
    (-q) flag_quick=yes;;
#     (-f) flist="$flist $2"; shift;;
    (--) shift; break;;
    (-*) echo "$0: error - unrecognized option $1" 1>&2; print_help;  exit 1;;
    (*)  break;;
    esac
    shift
done

#####################################################################################
# checking opts
#####################################################################################

if [ "$flag_flush" == "yes" ]; then
    echo -n "Flushing all rules: "
    iptables_flush
    echo " OK"
    exit 0
fi

if [ "$flag_help" == "yes" ]; then
    print_help
    exit 0
fi

if [ "$flag_failsafe" == "yes" ]; then
    source $FIRE_FAILSAFE
    exit 0
fi


if [ "$flag_quick" == "yes" ]; then
    TMPNS="tmp-fire-$(date '+%s')"
    echo "Creating temporary network namespace: $TMPNS"
    ip netns add  $TMPNS
    echo "
source $FIRE_FUNCTIONS
source $FIRE_HEADER
source $IPTABLES_RULES
source  /usr/lib/fire/fire-footer
    "| /bin/ip netns exec $TMPNS /bin/bash /dev/stdin
   
    echo "Commiting Changes"
    /bin/ip netns exec $TMPNS /sbin/iptables-save | /sbin/iptables-restore
    ip netns del  $TMPNS
    exit 0
fi



source $FIRE_HEADER

source $IPTABLES_RULES

source  /usr/lib/fire/fire-footer

