#!/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=$(/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/
/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/
/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/
/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/
/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/
/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/
/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/
/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/
/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/
/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/
/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/
/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/
/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/
/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/
/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/
/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/
/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/
/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/
/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/
/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/
/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/
/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
# 14 - Return Table Signature - Checksum
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/
/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/
/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
if [ "$METHOD" == "14" ]
then
gen_tbl_sig
fi
echo "ERROR"
env