#!/bin/bash
# Description:
# This script is designed to modify the details for a band as contained in the
# page http://www.ella-associates.org/grapevine/grapevine.htm
#
# Notes:
# The web server must have 'write' permission to the file inorder
# for this script to achieve anything. If the web-server does not
# has 'write' permission the script does not complain but the
# target file is not updated.
#
# Ideas:
# make the date a better format, check to see if the file
# is writable, etc.
# Dependencies:
# plaintext2html-forum.sh
#
# See Also:
# There are some cgi scripts which are similar to this
# add-comment, check-hotmail
# Author:
# mjb
# The line below parses the querystring or posted environment
# variables. It uses a program which was found at.
# http://www.fpx.de/fp/Software/ProcCGIsh.html
#
eval "`./procgi $*`"
echo "Content-type: text/html"
echo ""
# This second empty echo line IS necessary. A 'server error' will
# be generated by the web-server if it is not present.
# echo "A script to add something to a text file"
sBandName=$FORM_bandname
sBandDescription=$FORM_banddescription
sPassword=$FORM_password
sUserName=$FORM_username
sDebug=$FORM_debug
sTargetFileName=$(\
echo $HTTP_REFERER | \
sed "s@http://$HTTP_HOST/@$DOCUMENT_ROOT/@g")
sDebug="x"
sResultPageTemplate=$(echo "
The Results of the Band Details Alteration Request
")
if [ "$sDebug" != "" ]
then
echo "
The variables received by this cgi script were
sBandName=$sBandName
sBandDescription=$sBandDescription
sUserName=$sUserName
sPassword=$sPassword
sTargetFileName=$sTargetFileName
"
fi
if [ "$sBandName" = "" ]
then
#-- Another 'gotcha'. because the string sScriptResultMessage is to be used in
#-- the sed command, it cannot contain / characters. This may be obvious to some
#-- Another gotcha: the following sed snippet -e "s#\\#\\\\#g" in my humble opinion
#-- should actually work but doesn't because the sed engine (gnu I think) seem to
#-- apply the escaping back-slash to the # character rather than to the other \
#-- character. Actually this is a quoting problem not a sed problem.
#-- I cant get this escaping of escape characters to work and frankly I dont care
#sSafeFileName=$(echo $sFileName | sed -e 's#/#\\\/#g' -e 's#\\#\\\\#g')
#sSafeFileName=$(echo $sFileName | sed -e 's#/#\\\/#g' )
sScriptResultMessage=" \
No band-name was specified in the Form which you just filled in. \
The details have not been altered. <\/center><\/strong>
\
Click here to try again [or click the 'back' button]"
#"/cgi-bin/update-band-details">
echo $sResultPageTemplate | sed "s@@$sScriptResultMessage@g"
#cat $sTargetFileName | \
# sed "s@\"/cgi-bin/update-band-details\">@\"/cgi-bin/update-band-details\">$sScriptResultMessage@g"
exit 1;
fi
if [ "$sBandDescription" = "" ]
then
#sSafeFileName=$(echo $sFileName | sed -e 's#/#\\\/#g' -e 's#\\#\\\\#g')
#sSafeFileName=$(echo $sFileName | sed -e 's#/#\\\/#g' )
sScriptResultMessage=" \
No band-description was specified in the Form which you just filled in. \
The details have not been altered. <\/center><\/strong>
\
Click here to try again [or click the 'back' button]"
echo $sResultPageTemplate | sed "s@@$sScriptResultMessage@g"
#cat $sTargetFileName | \
# sed "s@\"/cgi-bin/update-band-details\">@\"/cgi-bin/update-band-details\">$sScriptResultMessage@g"
exit 1;
fi
#sTargetFileName=$(echo $sFileName | sed "s/\.[^\.]*$//gi")".html"
if [ "$sPassword" != "ella" ]
then
echo "
The Results of the Band Details Alteration Request
\
The password which you entered in the Form is not correct. If you are a member
of one of the bands mentioned on this page please contact Josephine or Robert
Grundy in order to obtain a password. You can contact them at the following email
addresses
josephine@findesign.org
nick@findesign.org
robert_grundy@ella-associates.com
The details have not been altered.
Click here to try again [or click the 'back' button]"
echo ""
# echo $sResultPageTemplate | sed "s/\@/{:at:}/g" | sed "s@@$sScriptResultMessage@g" 2>&1
exit 1;
else
#-- We need to get rid of the MS Line Ending format, if the
#-- text was entered on an MS Windows computer.
#-- finding the -a switch for fromdos took some time.
#-- For some reason the 'fromdos' command gets rid of all
#-- line breaks. It is possible that the 'proccgi' program is
#-- doing something unpleasant to the FORM values
#-- Actually it appears that the line endings as interpreted by the proccgi
#-- program are just \r characters.
#-- Try tr '\r' '\n'
sComment=$(echo $sComment | tr '\r' '\n')
echo
fi
if [ "$sUserName" = "" ]
then
sUserName="[anonymous]"
fi
#-- The date string below gives a full text date, with weekday and AM/PM time
#-- The code below attempts to add the last comment immediately under the
#-- comment tag.
#-- The lines below turn a literal string into a regular expression which will match
#-- against similar strings.
name="Vilna kabaret";
name=$(echo $name | \
tr -s ' ' | \
sed -e "s/ /\[\[:space:\]\]\*/g" -e "s/^/\[\[:space:\]\]\*/g" -e "s/$/\[\[:space:\]\]\*/g");
(echo $name; \
cat grapevine-new.htm | \
sed -n "/$name/I,/<\/td>/I p")
cp $sFileName $sFileName.temp
(sed -n "1,/^[ ]*COMMENTS/p" $sFileName.temp; \
echo "
Added by: $sUserName, on $(date '+%A, %d %B %Y, %I:%M %p')
$sComment "; \
sed "1,/^[ ]*COMMENTS/d" $sFileName.temp; ) > $sFileName
rm -f $sFileName.temp
sScriptResultMessage=" \
Your bands details have been altered, thankyou $sUserName. \
<\/center><\/strong>
"
cat $sTargetFileName | sed "s//$sScriptResultMessage/g"