#!/bin/bash
#
# filename: Claims_DB_listen.sh
#
# CGI Script to act as a listening socket for Claims_DB
# Allows the Claims_DB system to be on a seperate server to the front end.
#
# Copyright Ben Tasker 2009
# Released under the GNU GPL
# See http://benscomputer.no-ip.org/LICENSE


# Variables

# Where is Claims_DB
CLAIMS_PROGS="/home/ben/programs/Claims_DB/"



# Dynamic Variables
# Don't tinker with these unless you have to

# What is the remote_hostname?
REMOTE_HOST=$( /bin/env | grep "REMOTE_HOST" | sed -n 's/^.*REMOTE_HOST=\([^&]*\).*$/\1/p' )

# What is the remote hosts IP?
REMOTE_ADDRESS=$( /bin/env | grep "REMOTE_ADDR" | sed -n 's/^.*REMOTE_ADDR=\([^&]*\).*$/\1/p' )

# The two variables we just defined will be used to ensure the filename of any tempfiles we create is unique.

# This defines where we get our info from



REQUEST_METHOD=$( /bin/env | grep "REQUEST_METHOD" | sed -n 's/^.*REQUEST_METHOD=\([^&]*\).*$/\1/p' )

if [ "$REQUEST_METHOD" == "POST" ]
then
REQUEST_URI=$(</dev/stdin)

else

REQUEST_URI=$(/bin/env | grep "REQUEST_URI")

fi


#Now we know the Request type, the functions can process the info either way

# Functions Go Here
run_db_backup ()
{
source /etc/claims_db.conf

if [ "$BACKUP_DOWNLOADS" == "Y" ]
then

# Stream a backup to the user. This needs a config based control adding to it.
DATE=$( date +'%d-%m-%Y' )


# We are sending it to the user
cd /tmp
nice -19 tar -cf Claims_DB_backup_$$_$DATE.tar "$CLAIMS_PROGS"
nice -19 gzip Claims_DB_backup_$$_$DATE.tar
cat Claims_DB_backup_$$_$DATE.tar.gz
rm -f Claims_DB_backup_$$_$DATE.tar.gz
exit


else

# Downloading of backups is not explicitly enabled. Exit.

echo "INHIBITED"
exit
fi

}

Clear_Temporary_files ()
{
"$CLAIMS_PROGS"/bin/read_records_claims.sh --tmp-cleanup

exit
}


DB_line_Count ()
{

DBROOT="$DBNAME" "$CLAIMS_PROGS"/bin/read_records_claims.sh --Database-size

exit
}

Table_line_count ()
{

DBROOT="$DBNAME" TABLE="$TABLE" "$CLAIMS_PROGS"/bin/read_records_claims.sh -Table-size

exit
}

read_records ()
{
# Read full table

DBROOT="$DBNAME" TABLE="$TABLE" "$CLAIMS_PROGS"/bin/read_records_claims.sh -read

exit_function
}

read_table_headers ()
{
# Return only the tables header row

DBROOT="$DBNAME" TABLE="$TABLE" "$CLAIMS_PROGS"/bin/read_records_claims.sh -headers
exit_function
}

insert_record ()
{
# Insert a record into the specified table

# Grab Column Information
COL1A=$( echo "$REQUEST_URI" | sed -n 's/^.*COL1=\([^&]*\).*$/\1/p' )
COL2A=$( echo "$REQUEST_URI" | sed -n 's/^.*COL2=\([^&]*\).*$/\1/p' )
COL3A=$( echo "$REQUEST_URI" | sed -n 's/^.*COL3=\([^&]*\).*$/\1/p' )
COL4A=$( echo "$REQUEST_URI" | sed -n 's/^.*COL4=\([^&]*\).*$/\1/p' )
COL5A=$( echo "$REQUEST_URI" | sed -n 's/^.*COL5=\([^&]*\).*$/\1/p' )
COL6A=$( echo "$REQUEST_URI" | sed -n 's/^.*COL6=\([^&]*\).*$/\1/p' )
COL7A=$( echo "$REQUEST_URI" | sed -n 's/^.*COL7=\([^&]*\).*$/\1/p' )
COL8A=$( echo "$REQUEST_URI" | sed -n 's/^.*COL8=\([^&]*\).*$/\1/p' )
COL9A=$( echo "$REQUEST_URI" | sed -n 's/^.*COL9=\([^&]*\).*$/\1/p' )
COL10A=$( echo "$REQUEST_URI" | sed -n 's/^.*COL10=\([^&]*\).*$/\1/p' )
COL11A=$( echo "$REQUEST_URI" | sed -n 's/^.*COL11=\([^&]*\).*$/\1/p' )
COL12A=$( echo "$REQUEST_URI" | sed -n 's/^.*COL12=\([^&]*\).*$/\1/p' )
COL13A=$( echo "$REQUEST_URI" | sed -n 's/^.*COL13=\([^&]*\).*$/\1/p' )
COL14A=$( echo "$REQUEST_URI" | sed -n 's/^.*COL14=\([^&]*\).*$/\1/p' )
COL15A=$( echo "$REQUEST_URI" | sed -n 's/^.*COL15=\([^&]*\).*$/\1/p' )
COL16A=$( echo "$REQUEST_URI" | sed -n 's/^.*COL16=\([^&]*\).*$/\1/p' )
COL17A=$( echo "$REQUEST_URI" | sed -n 's/^.*COL17=\([^&]*\).*$/\1/p' )
COL18A=$( echo "$REQUEST_URI" | sed -n 's/^.*COL18=\([^&]*\).*$/\1/p' )
COL19A=$( echo "$REQUEST_URI" | sed -n 's/^.*COL19=\([^&]*\).*$/\1/p' )
COL20A=$( echo "$REQUEST_URI" | sed -n 's/^.*COL20=\([^&]*\).*$/\1/p' )

# Now strip out any URL Encoding

COL1=$( echo "$COL1A" | sed "s/%0D%0A/<br>/g" | sed "s/+/ /g" | sed "s/%21/\!/g" | sed "s/%40/@/g" | sed "s/%20/ /g" | sed "s/%26/\&/g" | sed "s/%3B/SEMICOLON/g" | sed "s/%22/DOUBLEQUOTES/g" | sed "s/%2F/\//g" | sed "s/%5C/\\\/g" | sed "s/%24/$/g" | sed "s/%A3/£/g" | sed "s/%27/\'/g" | sed "s/%23/\#/g" | sed "s/%3A/\:/g" | sed "s/%5B/\[/g" | sed "s/%40/@/g" | sed "s/%5D/\]/g" | sed "s/%25/\%/g" | sed "s/%5E/\^/g" | sed "s/%28/(/g" | sed "s/%29/)/g" | sed "s/%2B/+/g" | sed "s/%2C/,/g" )
COL2=$( echo "$COL2A" | sed "s/%0D%0A/<br>/g" | sed "s/+/ /g" | sed "s/%21/\!/g" | sed "s/%40/@/g" | sed "s/%20/ /g" | sed "s/%26/\&/g" | sed "s/%3B/SEMICOLON/g" | sed "s/%22/DOUBLEQUOTES/g" | sed "s/%2F/\//g" | sed "s/%5C/\\\/g" | sed "s/%24/$/g" | sed "s/%A3/£/g" | sed "s/%27/\'/g" | sed "s/%23/\#/g" | sed "s/%3A/\:/g" | sed "s/%5B/\[/g" | sed "s/%40/@/g" | sed "s/%5D/\]/g" | sed "s/%25/\%/g" | sed "s/%5E/\^/g" | sed "s/%28/(/g" | sed "s/%29/)/g" | sed "s/%2B/+/g" | sed "s/%2C/,/g" )
COL3=$( echo "$COL3A" | sed "s/%0D%0A/<br>/g" | sed "s/+/ /g" | sed "s/%21/\!/g" | sed "s/%40/@/g" | sed "s/%20/ /g" | sed "s/%26/\&/g" | sed "s/%3B/SEMICOLON/g" | sed "s/%22/DOUBLEQUOTES/g" | sed "s/%2F/\//g" | sed "s/%5C/\\\/g" | sed "s/%24/$/g" | sed "s/%A3/£/g" | sed "s/%27/\'/g" | sed "s/%23/\#/g" | sed "s/%3A/\:/g" | sed "s/%5B/\[/g" | sed "s/%40/@/g" | sed "s/%5D/\]/g" | sed "s/%25/\%/g" | sed "s/%5E/\^/g" | sed "s/%28/(/g" | sed "s/%29/)/g" | sed "s/%2B/+/g" | sed "s/%2C/,/g" )
COL4=$( echo "$COL4A" | sed "s/%0D%0A/<br>/g" | sed "s/+/ /g" | sed "s/%21/\!/g" | sed "s/%40/@/g" | sed "s/%20/ /g" | sed "s/%26/\&/g" | sed "s/%3B/SEMICOLON/g" | sed "s/%22/DOUBLEQUOTES/g" | sed "s/%2F/\//g" | sed "s/%5C/\\\/g" | sed "s/%24/$/g" | sed "s/%A3/£/g" | sed "s/%27/\'/g" | sed "s/%23/\#/g" | sed "s/%3A/\:/g" | sed "s/%5B/\[/g" | sed "s/%40/@/g" | sed "s/%5D/\]/g" | sed "s/%25/\%/g" | sed "s/%5E/\^/g" | sed "s/%28/(/g" | sed "s/%29/)/g" | sed "s/%2B/+/g" | sed "s/%2C/,/g" )
COL5=$( echo "$COL5A" | sed "s/%0D%0A/<br>/g" | sed "s/+/ /g" | sed "s/%21/\!/g" | sed "s/%40/@/g" | sed "s/%20/ /g" | sed "s/%26/\&/g" | sed "s/%3B/SEMICOLON/g" | sed "s/%22/DOUBLEQUOTES/g" | sed "s/%2F/\//g" | sed "s/%5C/\\\/g" | sed "s/%24/$/g" | sed "s/%A3/£/g" | sed "s/%27/\'/g" | sed "s/%23/\#/g" | sed "s/%3A/\:/g" | sed "s/%5B/\[/g" | sed "s/%40/@/g" | sed "s/%5D/\]/g" | sed "s/%25/\%/g" | sed "s/%5E/\^/g" | sed "s/%28/(/g" | sed "s/%29/)/g" | sed "s/%2B/+/g" | sed "s/%2C/,/g" )
COL6=$( echo "$COL6A" | sed "s/%0D%0A/<br>/g" | sed "s/+/ /g" | sed "s/%21/\!/g" | sed "s/%40/@/g" | sed "s/%20/ /g" | sed "s/%26/\&/g" | sed "s/%3B/SEMICOLON/g" | sed "s/%22/DOUBLEQUOTES/g" | sed "s/%2F/\//g" | sed "s/%5C/\\\/g" | sed "s/%24/$/g" | sed "s/%A3/£/g" | sed "s/%27/\'/g" | sed "s/%23/\#/g" | sed "s/%3A/\:/g" | sed "s/%5B/\[/g" | sed "s/%40/@/g" | sed "s/%5D/\]/g" | sed "s/%25/\%/g" | sed "s/%5E/\^/g" | sed "s/%28/(/g" | sed "s/%29/)/g" | sed "s/%2B/+/g" | sed "s/%2C/,/g" )
COL7=$( echo "$COL7A" | sed "s/%0D%0A/<br>/g" | sed "s/+/ /g" | sed "s/%21/\!/g" | sed "s/%40/@/g" | sed "s/%20/ /g" | sed "s/%26/\&/g" | sed "s/%3B/SEMICOLON/g" | sed "s/%22/DOUBLEQUOTES/g" | sed "s/%2F/\//g" | sed "s/%5C/\\\/g" | sed "s/%24/$/g" | sed "s/%A3/£/g" | sed "s/%27/\'/g" | sed "s/%23/\#/g" | sed "s/%3A/\:/g" | sed "s/%5B/\[/g" | sed "s/%40/@/g" | sed "s/%5D/\]/g" | sed "s/%25/\%/g" | sed "s/%5E/\^/g" | sed "s/%28/(/g" | sed "s/%29/)/g" | sed "s/%2B/+/g" | sed "s/%2C/,/g" )
COL8=$( echo "$COL8A" | sed "s/%0D%0A/<br>/g" | sed "s/+/ /g" | sed "s/%21/\!/g" | sed "s/%40/@/g" | sed "s/%20/ /g" | sed "s/%26/\&/g" | sed "s/%3B/SEMICOLON/g" | sed "s/%22/DOUBLEQUOTES/g" | sed "s/%2F/\//g" | sed "s/%5C/\\\/g" | sed "s/%24/$/g" | sed "s/%A3/£/g" | sed "s/%27/\'/g" | sed "s/%23/\#/g" | sed "s/%3A/\:/g" | sed "s/%5B/\[/g" | sed "s/%40/@/g" | sed "s/%5D/\]/g" | sed "s/%25/\%/g" | sed "s/%5E/\^/g" | sed "s/%28/(/g" | sed "s/%29/)/g" | sed "s/%2B/+/g" | sed "s/%2C/,/g" )
COL9=$( echo "$COL9A" | sed "s/%0D%0A/<br>/g" | sed "s/+/ /g" | sed "s/%21/\!/g" | sed "s/%40/@/g" | sed "s/%20/ /g" | sed "s/%26/\&/g" | sed "s/%3B/SEMICOLON/g" | sed "s/%22/DOUBLEQUOTES/g" | sed "s/%2F/\//g" | sed "s/%5C/\\\/g" | sed "s/%24/$/g" | sed "s/%A3/£/g" | sed "s/%27/\'/g" | sed "s/%23/\#/g" | sed "s/%3A/\:/g" | sed "s/%5B/\[/g" | sed "s/%40/@/g" | sed "s/%5D/\]/g" | sed "s/%25/\%/g" | sed "s/%5E/\^/g" | sed "s/%28/(/g" | sed "s/%29/)/g" | sed "s/%2B/+/g" | sed "s/%2C/,/g" )
COL10=$( echo "$COL10A" | sed "s/%0D%0A/<br>/g" | sed "s/+/ /g" | sed "s/%21/\!/g" | sed "s/%40/@/g" | sed "s/%20/ /g" | sed "s/%26/\&/g" | sed "s/%3B/SEMICOLON/g" | sed "s/%22/DOUBLEQUOTES/g" | sed "s/%2F/\//g" | sed "s/%5C/\\\/g" | sed "s/%24/$/g" | sed "s/%A3/£/g" | sed "s/%27/\'/g" | sed "s/%23/\#/g" | sed "s/%3A/\:/g" | sed "s/%5B/\[/g" | sed "s/%40/@/g" | sed "s/%5D/\]/g" | sed "s/%25/\%/g" | sed "s/%5E/\^/g" | sed "s/%28/(/g" | sed "s/%29/)/g" | sed "s/%2B/+/g" | sed "s/%2C/,/g" )
COL11=$( echo "$COL11A" | sed "s/%0D%0A/<br>/g" | sed "s/+/ /g" | sed "s/%21/\!/g" | sed "s/%40/@/g" | sed "s/%20/ /g" | sed "s/%26/\&/g" | sed "s/%3B/SEMICOLON/g" | sed "s/%22/DOUBLEQUOTES/g" | sed "s/%2F/\//g" | sed "s/%5C/\\\/g" | sed "s/%24/$/g" | sed "s/%A3/£/g" | sed "s/%27/\'/g" | sed "s/%23/\#/g" | sed "s/%3A/\:/g" | sed "s/%5B/\[/g" | sed "s/%40/@/g" | sed "s/%5D/\]/g" | sed "s/%25/\%/g" | sed "s/%5E/\^/g" | sed "s/%28/(/g" | sed "s/%29/)/g" | sed "s/%2B/+/g" | sed "s/%2C/,/g" )
COL12=$( echo "$COL12A" | sed "s/%0D%0A/<br>/g" | sed "s/+/ /g" | sed "s/%21/\!/g" | sed "s/%40/@/g" | sed "s/%20/ /g" | sed "s/%26/\&/g" | sed "s/%3B/SEMICOLON/g" | sed "s/%22/DOUBLEQUOTES/g" | sed "s/%2F/\//g" | sed "s/%5C/\\\/g" | sed "s/%24/$/g" | sed "s/%A3/£/g" | sed "s/%27/\'/g" | sed "s/%23/\#/g" | sed "s/%3A/\:/g" | sed "s/%5B/\[/g" | sed "s/%40/@/g" | sed "s/%5D/\]/g" | sed "s/%25/\%/g" | sed "s/%5E/\^/g" | sed "s/%28/(/g" | sed "s/%29/)/g" | sed "s/%2B/+/g" | sed "s/%2C/,/g" )
COL13=$( echo "$COL13A" | sed "s/%0D%0A/<br>/g" | sed "s/+/ /g" | sed "s/%21/\!/g" | sed "s/%40/@/g" | sed "s/%20/ /g" | sed "s/%26/\&/g" | sed "s/%3B/SEMICOLON/g" | sed "s/%22/DOUBLEQUOTES/g" | sed "s/%2F/\//g" | sed "s/%5C/\\\/g" | sed "s/%24/$/g" | sed "s/%A3/£/g" | sed "s/%27/\'/g" | sed "s/%23/\#/g" | sed "s/%3A/\:/g" | sed "s/%5B/\[/g" | sed "s/%40/@/g" | sed "s/%5D/\]/g" | sed "s/%25/\%/g" | sed "s/%5E/\^/g" | sed "s/%28/(/g" | sed "s/%29/)/g" | sed "s/%2B/+/g" | sed "s/%2C/,/g" )
COL14=$( echo "$COL14A" | sed "s/%0D%0A/<br>/g" | sed "s/+/ /g" | sed "s/%21/\!/g" | sed "s/%40/@/g" | sed "s/%20/ /g" | sed "s/%26/\&/g" | sed "s/%3B/SEMICOLON/g" | sed "s/%22/DOUBLEQUOTES/g" | sed "s/%2F/\//g" | sed "s/%5C/\\\/g" | sed "s/%24/$/g" | sed "s/%A3/£/g" | sed "s/%27/\'/g" | sed "s/%23/\#/g" | sed "s/%3A/\:/g" | sed "s/%5B/\[/g" | sed "s/%40/@/g" | sed "s/%5D/\]/g" | sed "s/%25/\%/g" | sed "s/%5E/\^/g" | sed "s/%28/(/g" | sed "s/%29/)/g" | sed "s/%2B/+/g" | sed "s/%2C/,/g" )
COL15=$( echo "$COL15A" | sed "s/%0D%0A/<br>/g" | sed "s/+/ /g" | sed "s/%21/\!/g" | sed "s/%40/@/g" | sed "s/%20/ /g" | sed "s/%26/\&/g" | sed "s/%3B/SEMICOLON/g" | sed "s/%22/DOUBLEQUOTES/g" | sed "s/%2F/\//g" | sed "s/%5C/\\\/g" | sed "s/%24/$/g" | sed "s/%A3/£/g" | sed "s/%27/\'/g" | sed "s/%23/\#/g" | sed "s/%3A/\:/g" | sed "s/%5B/\[/g" | sed "s/%40/@/g" | sed "s/%5D/\]/g" | sed "s/%25/\%/g" | sed "s/%5E/\^/g" | sed "s/%28/(/g" | sed "s/%29/)/g" | sed "s/%2B/+/g" | sed "s/%2C/,/g" )
COL16=$( echo "$COL16A" | sed "s/%0D%0A/<br>/g" | sed "s/+/ /g" | sed "s/%21/\!/g" | sed "s/%40/@/g" | sed "s/%20/ /g" | sed "s/%26/\&/g" | sed "s/%3B/SEMICOLON/g" | sed "s/%22/DOUBLEQUOTES/g" | sed "s/%2F/\//g" | sed "s/%5C/\\\/g" | sed "s/%24/$/g" | sed "s/%A3/£/g" | sed "s/%27/\'/g" | sed "s/%23/\#/g" | sed "s/%3A/\:/g" | sed "s/%5B/\[/g" | sed "s/%40/@/g" | sed "s/%5D/\]/g" | sed "s/%25/\%/g" | sed "s/%5E/\^/g" | sed "s/%28/(/g" | sed "s/%29/)/g" | sed "s/%2B/+/g" | sed "s/%2C/,/g" )
COL17=$( echo "$COL17A" | sed "s/%0D%0A/<br>/g" | sed "s/+/ /g" | sed "s/%21/\!/g" | sed "s/%40/@/g" | sed "s/%20/ /g" | sed "s/%26/\&/g" | sed "s/%3B/SEMICOLON/g" | sed "s/%22/DOUBLEQUOTES/g" | sed "s/%2F/\//g" | sed "s/%5C/\\\/g" | sed "s/%24/$/g" | sed "s/%A3/£/g" | sed "s/%27/\'/g" | sed "s/%23/\#/g" | sed "s/%3A/\:/g" | sed "s/%5B/\[/g" | sed "s/%40/@/g" | sed "s/%5D/\]/g" | sed "s/%25/\%/g" | sed "s/%5E/\^/g" | sed "s/%28/(/g" | sed "s/%29/)/g" | sed "s/%2B/+/g" | sed "s/%2C/,/g" )
COL18=$( echo "$COL18A" | sed "s/%0D%0A/<br>/g" | sed "s/+/ /g" | sed "s/%21/\!/g" | sed "s/%40/@/g" | sed "s/%20/ /g" | sed "s/%26/\&/g" | sed "s/%3B/SEMICOLON/g" | sed "s/%22/DOUBLEQUOTES/g" | sed "s/%2F/\//g" | sed "s/%5C/\\\/g" | sed "s/%24/$/g" | sed "s/%A3/£/g" | sed "s/%27/\'/g" | sed "s/%23/\#/g" | sed "s/%3A/\:/g" | sed "s/%5B/\[/g" | sed "s/%40/@/g" | sed "s/%5D/\]/g" | sed "s/%25/\%/g" | sed "s/%5E/\^/g" | sed "s/%28/(/g" | sed "s/%29/)/g" | sed "s/%2B/+/g" | sed "s/%2C/,/g" )
COL19=$( echo "$COL19A" | sed "s/%0D%0A/<br>/g" | sed "s/+/ /g" | sed "s/%21/\!/g" | sed "s/%40/@/g" | sed "s/%20/ /g" | sed "s/%26/\&/g" | sed "s/%3B/SEMICOLON/g" | sed "s/%22/DOUBLEQUOTES/g" | sed "s/%2F/\//g" | sed "s/%5C/\\\/g" | sed "s/%24/$/g" | sed "s/%A3/£/g" | sed "s/%27/\'/g" | sed "s/%23/\#/g" | sed "s/%3A/\:/g" | sed "s/%5B/\[/g" | sed "s/%40/@/g" | sed "s/%5D/\]/g" | sed "s/%25/\%/g" | sed "s/%5E/\^/g" | sed "s/%28/(/g" | sed "s/%29/)/g" | sed "s/%2B/+/g" | sed "s/%2C/,/g" )
COL20=$( echo "$COL20A" | sed "s/%0D%0A/<br>/g" | sed "s/+/ /g" | sed "s/%21/\!/g" | sed "s/%40/@/g" | sed "s/%20/ /g" | sed "s/%26/\&/g" | sed "s/%3B/SEMICOLON/g" | sed "s/%22/DOUBLEQUOTES/g" | sed "s/%2F/\//g" | sed "s/%5C/\\\/g" | sed "s/%24/$/g" | sed "s/%A3/£/g" | sed "s/%27/\'/g" | sed "s/%23/\#/g" | sed "s/%3A/\:/g" | sed "s/%5B/\[/g" | sed "s/%40/@/g" | sed "s/%5D/\]/g" | sed "s/%25/\%/g" | sed "s/%5E/\^/g" | sed "s/%28/(/g" | sed "s/%29/)/g" | sed "s/%2B/+/g" | sed "s/%2C/,/g" )

# Now insert the record

COL1="$COL1" COL2="$COL2" COL3="$COL3" COL4="$COL4" COL5="$COL5" COL6="$COL6" COL7="$COL7" COL8="$COL8" COL9="$COL9" COL10="$COL10" COL11="$COL11" COL12="$COL12" COL13="$COL13" COL14="$COL14" COL15="$COL15" COL16="$COL16" COL17="$COL17" COL18="$COL18" COL19="$COL19" COL20="$COL20" DBROOT="$DBNAME" TABLE="$TABLE" "$CLAIMS_PROGS"/bin/insert_record_claims.sh -insert

exit_function
}


run_query_next_PK ()
{
# Ask Claims_DB what the next Primary key for a given table will be.
# At time of writing this function does not currently exist in Claims_DB but will be in next release

COLUMNNUMBER=$( echo "$REQUEST_URI" | sed -n 's/^.*QCOL=\([^&]*\).*$/\1/p' )

DBROOT="$DBNAME" TABLE="$TABLE" "$CLAIMS_PROGS"/bin/read_records_claims.sh -query-PK "$COLUMNNUMBER"

exit_function
}

run_query ()
{
# Run a query and return the data


PRIMARYKEY=$( echo "$REQUEST_URI" | sed -n 's/^.*PRIMKEY=\([^&]*\).*$/\1/p' )
QUERYSTRING1=$( echo "$REQUEST_URI" | sed -n 's/^.*QSTRING=\([^&]*\).*$/\1/p' )
COLUMNNUMBER=$( echo "$REQUEST_URI" | sed -n 's/^.*QCOL=\([^&]*\).*$/\1/p' )

# Remove URL encoding from the Query string
QUERYSTRING=$( echo "$QUERYSTRING1" | sed "s/%0D%0A/<br>/g" | sed "s/+/ /g" | sed "s/%21/\!/g" | sed "s/%40/@/g" | sed "s/%20/ /g" | sed "s/%26/\&/g" | sed "s/%3B/SEMICOLON/g" | sed "s/%22/DOUBLEQUOTES/g" | sed "s/%2F/\//g" | sed "s/%5C/\\\/g" | sed "s/%24/$/g" | sed "s/%A3/£/g" | sed "s/%27/\'/g" | sed "s/%23/\#/g" | sed "s/%3A/\:/g" | sed "s/%5B/\[/g" | sed "s/%40/@/g" | sed "s/%5D/\]/g" | sed "s/%25/\%/g" | sed "s/%5E/\^/g" | sed "s/%28/(/g" | sed "s/%29/)/g" | sed "s/%2B/+/g" | sed "s/%2C/,/g" )

if [ "$PRIMARYKEY" == "1" ]
then

DBROOT="$DBNAME" TABLE="$TABLE" "$CLAIMS_PROGS"/bin/read_records_claims.sh -query "$QUERYSTRING" "$COLUMNNUMBER" -primkey
else
DBROOT="$DBNAME" TABLE="$TABLE" "$CLAIMS_PROGS"/bin/read_records_claims.sh -query "$QUERYSTRING" "$COLUMNNUMBER"
fi

exit_function

}
run_query_line ()
{
# Run a query and return line numbers of matching data
PRIMARYKEY=$( echo "$REQUEST_URI" | sed -n 's/^.*PRIMKEY=\([^&]*\).*$/\1/p' )
QUERYSTRING1=$( echo "$REQUEST_URI" | sed -n 's/^.*QSTRING=\([^&]*\).*$/\1/p' )
COLUMNNUMBER=$( echo "$REQUEST_URI" | sed -n 's/^.*QCOL=\([^&]*\).*$/\1/p' )

# Remove URL encoding from the Query string
QUERYSTRING=$( echo "$QUERYSTRING1" | sed "s/%0D%0A/<br>/g" | sed "s/+/ /g" | sed "s/%21/\!/g" | sed "s/%40/@/g" | sed "s/%20/ /g" | sed "s/%26/\&/g" | sed "s/%3B/SEMICOLON/g" | sed "s/%22/DOUBLEQUOTES/g" | sed "s/%2F/\//g" | sed "s/%5C/\\\/g" | sed "s/%24/$/g" | sed "s/%A3/£/g" | sed "s/%27/\'/g" | sed "s/%23/\#/g" | sed "s/%3A/\:/g" | sed "s/%5B/\[/g" | sed "s/%40/@/g" | sed "s/%5D/\]/g" | sed "s/%25/\%/g" | sed "s/%5E/\^/g" | sed "s/%28/(/g" | sed "s/%29/)/g" | sed "s/%2B/+/g" | sed "s/%2C/,/g" )

if [ "$PRIMARYKEY" == "1" ]
then
DBROOT="$DBNAME" TABLE="$TABLE" "$CLAIMS_PROGS"/bin/read_records_claims.sh -query-line "$QUERYSTRING" "$COLUMNNUMBER" -primkey
else
DBROOT="$DBNAME" TABLE="$TABLE" "$CLAIMS_PROGS"/bin/read_records_claims.sh -query-line "$QUERYSTRING" "$COLUMNNUMBER"
fi

exit_function

}

schedule_DB_backup ()
{
#Create a database backup
"$CLAIMS_PROGS"/bin/db_backup.sh
exit_function
}

run_query_next_PK ()
{
# Query Claims_DB for the next PK value for the given Column
COLUMNNUMBER=$( echo "$REQUEST_URI" | sed -n 's/^.*QCOL=\([^&]*\).*$/\1/p' )

DBROOT="$DBNAME" TABLE="$TABLE" "$CLAIMS_PROGS"/bin/read_records_claims.sh -gen-PK "$COLUMNNUMBER"
exit

}


record_deletion_function ()
{
# Query Claims_DB for the next PK value for the given Column
COLUMNNUMBER=$( echo "$REQUEST_URI" | sed -n 's/^.*LINENO=\([^&]*\).*$/\1/p' )

DBROOT="$DBNAME" TABLE="$TABLE" "$CLAIMS_PROGS"/bin/insert_record_claims.sh -delete "$COLUMNNUMBER"
exit

}

run_select_distinct ()

{
# Query Claims_DB for the next PK value for the given Column

COLUMNNUMBER=$( echo "$REQUEST_URI" | sed -n 's/^.*QCOL=\([^&]*\).*$/\1/p' )
DBROOT="$DBNAME" TABLE="$TABLE" "$CLAIMS_PROGS"/bin/read_records_claims.sh -select-distinct "$COLUMNNUMBER"
exit

}

exit_function ()
{

exit

}

# Function main

# Set MIME Type

echo Content-Type: text/plain
echo ""

# Lets find out which method we will be using

METHOD=$( echo "$REQUEST_URI" | sed -n 's/^.*METHOD=\([^&]*\).*$/\1/p' )

# We now have a numerical value stored in METHOD.
# 1 = Insert Record
# 2 = Read full table
# 3 = Read table headers
# 4 = Run Query
# 5 = Run Query but only return line number 
# 6 = Run Database backup
# 7 = Get Next Primary Key 
# 8 = Run Select Distinct style query on named column
# 9 = Delete record on given line number
# 10 = Download Backup
# 11 = Return total number of lines in selected Database
# 12 = Return total number of lines in selected Table
# 13 = Clear Temporary Directory

if [ "$METHOD" == "6" ]
then
# Schedule a backup to be stored locally
schedule_DB_backup
fi

if [ "$METHOD" == "10" ]
then
# Run a backup now, and stream the tarball to the client.
run_db_backup
fi

# For all other functions we need to know Database and table names

DBNAME1=$( echo "$REQUEST_URI" | sed -n 's/^.*DBNAME=\([^&]*\).*$/\1/p' )
TABLE1=$( echo "$REQUEST_URI" | sed -n 's/^.*TABLE=\([^&]*\).*$/\1/p' )

# Remove any URL encoding (there shouldn't really be any for these!)

DBNAME=$( echo "$DBNAME1" | sed "s/%0D%0A/<br>/g" | sed "s/+/ /g" | sed "s/%21/\!/g" | sed "s/%40/@/g" | sed "s/%20/ /g" | sed "s/%26/\&/g" | sed "s/%3B/SEMICOLON/g" | sed "s/%22/DOUBLEQUOTES/g" | sed "s/%2F/\//g" | sed "s/%5C/\\\/g" | sed "s/%24/$/g" | sed "s/%A3/£/g" | sed "s/%27/\'/g" | sed "s/%23/\#/g" | sed "s/%3A/\:/g" | sed "s/%5B/\[/g" | sed "s/%40/@/g" | sed "s/%5D/\]/g" | sed "s/%25/\%/g" | sed "s/%5E/\^/g" | sed "s/%28/(/g" | sed "s/%29/)/g" | sed "s/%2B/+/g" | sed "s/%2C/,/g" )

TABLE=$( echo "$TABLE1" | sed "s/%0D%0A/<br>/g" | sed "s/+/ /g" | sed "s/%21/\!/g" | sed "s/%40/@/g" | sed "s/%20/ /g" | sed "s/%26/\&/g" | sed "s/%3B/SEMICOLON/g" | sed "s/%22/DOUBLEQUOTES/g" | sed "s/%2F/\//g" | sed "s/%5C/\\\/g" | sed "s/%24/$/g" | sed "s/%A3/£/g" | sed "s/%27/\'/g" | sed "s/%23/\#/g" | sed "s/%3A/\:/g" | sed "s/%5B/\[/g" | sed "s/%40/@/g" | sed "s/%5D/\]/g" | sed "s/%25/\%/g" | sed "s/%5E/\^/g" | sed "s/%28/(/g" | sed "s/%29/)/g" | sed "s/%2B/+/g" | sed "s/%2C/,/g" )
# Now lets see which function we need to go to

if [ "$METHOD" == "1" ]
then
insert_record
fi
if [ "$METHOD" == "2" ]
then
read_records
fi
if [ "$METHOD" == "3" ]
then
read_table_headers
fi
if [ "$METHOD" == "4" ]
then
run_query
fi
if [ "$METHOD" == "5" ]
then
run_query_line
fi




if [ "$METHOD" == "7" ]
then
run_query_next_PK
fi

if [ "$METHOD" == "8" ]
then
run_select_distinct

fi
if [ "$METHOD" == "9" ]
then
record_deletion_function

fi

if [ "$METHOD" == "11" ]
then
DB_line_Count
fi

if [ "$METHOD" == "12" ]
then
Table_line_Count
fi

if [ "$METHOD" == "13" ]
then
Clear_Temporary_files
fi
echo "ERROR"
env
