#!/bin/bash

#this script is triggered when ipn:23.0 receives a specially crafted bundle
#from a client without a working ION configuration

#set variable values from extracted ip address of new client node from netfilter log 
ADDRESS=$(tail -n 1 /home/scott/udp.log | egrep -m 1 -o 'SRC=[[:digit:]]+.[[:digit:]]+.[[:digit:]]+.[[:digit:]]+ ' | egrep -m 1 -o '[[:digit:]]+.[[:digit:]]+.[[:digit:]]+.[[:digit:]]+') 
DERIVED=$(tail -n 1 /home/scott/udp.log | egrep -m 1 -o 'SRC=[[:digit:]]+.[[:digit:]]+.[[:digit:]]+.[[:digit:]]+ ' | egrep -m 1 -o '[[:digit:]]+.[[:digit:]]+.[[:digit:]]+.[[:digit:]]+' | sed s/[.]// | sed s/[.]// | sed s/[.]//)


#temporarily write out to verify contents
echo "${ADDRESS}" > /home/scott/test2

#publish config to https

echo "## begin ionadmin" > /var/www/html/ionconfig/$DERIVED
echo "1 $DERIVED ''" >> /var/www/html/ionconfig/$DERIVED
echo "s" >>  /var/www/html/ionconfig/$DERIVED
echo "a contact +1 +360000 $DERIVED $DERIVED 100000000" >> /var/www/html/ionconfig/$DERIVED
echo "a contact +1 +360000 $DERIVED 2323 100000000" >> /var/www/html/ionconfig/$DERIVED 
echo "a contact +1 +360000 2323 $DERIVED 100000000" >> /var/www/html/ionconfig/$DERIVED 
echo "a range +1 +360000 $DERIVED $DERIVED 1" >> /var/www/html/ionconfig/$DERIVED
echo "a range +1 +360000 2323 $DERIVED 1" >> /var/www/html/ionconfig/$DERIVED
echo "a range +1 +360000 $DERIVED 2323 1" >> /var/www/html/ionconfig/$DERIVED
echo "## end ionadmin" >> /var/www/html/ionconfig/$DERIVED
echo "## begin ionsecadmin" >> /var/www/html/ionconfig/$DERIVED
echo "1" >> /var/www/html/ionconfig/$DERIVED
echo "## end ionsecadmin" >> /var/www/html/ionconfig/$DERIVED
echo "## begin ltpadmin" >> /var/www/html/ionconfig/$DERIVED
echo "1 32" >> /var/www/html/ionconfig/$DERIVED
echo "a span 2323 32 32 1200 10000 1 'udplso 23.130.80.23:1113' 300" >> /var/www/html/ionconfig/$DERIVED
echo "a span $DERIVED 32 32 1200 10000 1 'udplso $ADDRESS:1113' 300" >> /var/www/html/ionconfig/$DERIVED
echo "s 'udplsi $ADDRESS:1113'" >> /var/www/html/ionconfig/$DERIVED
echo "## end ltpadmin" >> /var/www/html/ionconfig/$DERIVED
echo "## begin bpadmin" >> /var/www/html/ionconfig/$DERIVED
echo "1" >> /var/www/html/ionconfig/$DERIVED
echo "a scheme ipn 'ipnfw' 'ipnadminep'" >> /var/www/html/ionconfig/$DERIVED
echo "a endpoint ipn:$DERIVED.0 q" >> /var/www/html/ionconfig/$DERIVED
echo "a endpoint ipn:$DERIVED.1 q" >> /var/www/html/ionconfig/$DERIVED
echo "a endpoint ipn:$DERIVED.2 q" >> /var/www/html/ionconfig/$DERIVED
echo "a protocol ltp 1200 100" >> /var/www/html/ionconfig/$DERIVED
echo "a induct ltp $DERIVED ltpcli" >> /var/www/html/ionconfig/$DERIVED
echo "a outduct ltp $DERIVED ltpclo" >> /var/www/html/ionconfig/$DERIVED
echo "a outduct ltp 2323 ltpclo" >> /var/www/html/ionconfig/$DERIVED
echo "s" >> /var/www/html/ionconfig/$DERIVED
echo "## end bpadmin" >> /var/www/html/ionconfig/$DERIVED
echo "## begin ipnadmin" >> /var/www/html/ionconfig/$DERIVED
echo "a plan $DERIVED ltp/$DERIVED" >> /var/www/html/ionconfig/$DERIVED
echo "a plan 2323 ltp/2323" >> /var/www/html/ionconfig/$DERIVED
echo "## end ipnadmin" >> /var/www/html/ionconfig/$DERIVED

#add client to local config

echo "a contact +1 +360000 $DERIVED 2323 100000000" > /home/scott/ionrc
echo "a contact +1 +360000 2323 $DERIVED 100000000" >> /home/scott/ionrc
echo "a range +1 +360000 $DERIVED 2323 1" >> /home/scott/ionrc
echo "a range +1 +360000 2323 $DERIVED 1" >> /home/scott/ionrc
ionadmin /home/scott/ionrc
echo "a span $DERIVED 32 32 1200 10000 1 'udplso $ADDRESS:1113' 300" > /home/scott/ltprc
ltpadmin /home/scott/ltprc
echo "a outduct ltp $DERIVED ltpclo" > /home/scott/bprc
echo "s" >> /home/scott/bprc
bpadmin /home/scott/bprc
echo "a plan $DERIVED ltp/$DERIVED" > /home/scott/ipnrc
ipnadmin /home/scott/ipnrc

