Imported from ../bash-2.04.tar.gz.
This commit is contained in:
parent
b72432fdcc
commit
bb70624e96
387 changed files with 28522 additions and 9334 deletions
230
examples/scripts/websrv.sh
Normal file
230
examples/scripts/websrv.sh
Normal file
|
|
@ -0,0 +1,230 @@
|
|||
#!/bin/sh
|
||||
#for instructions or updates go to:
|
||||
#<A HREF="http://math.ucr.edu:8889/">This script's home page</A>
|
||||
#email me questions or comments at:
|
||||
#<A HREF="mailto:insom@math.ucr.edu">insom@math.ucr.edu</A>
|
||||
#copyright chris ulrich; This software may be used or modified
|
||||
#in any way so long as this notice remains intact.
|
||||
#
|
||||
# WWW server in sh
|
||||
# Author: Chris Ulrich <chris@tinker.ucr.edu>
|
||||
#
|
||||
|
||||
INDEX=index.html
|
||||
date=`date`
|
||||
DOCHOME=/home/insom/web-docs
|
||||
BINHOME=/home/insom/web-bin
|
||||
LOGHOME=/home/insom/web-logs
|
||||
LOGFILE=$LOGHOME/access_log
|
||||
#verbose=:
|
||||
verbose=echo
|
||||
exec 2>> $LOGHOME/error_log
|
||||
|
||||
hheader() {
|
||||
echo "HTTP/1.0 200 OK
|
||||
Server: WebSH/2.00
|
||||
Connection: close
|
||||
Date: $date"
|
||||
}
|
||||
|
||||
header() {
|
||||
echo "Content-type: $1
|
||||
"
|
||||
}
|
||||
|
||||
no_url() {
|
||||
header "text/plain"
|
||||
echo "No such url $1"
|
||||
}
|
||||
|
||||
send() {
|
||||
#case "$#" in 2) ;; *) echo eep! | mailx insom@math.ucr.edu ; exit 3 ;; esac
|
||||
if test -f "$DOCHOME/$2"
|
||||
then
|
||||
header "$1"
|
||||
cat "$DOCHOME/$2"
|
||||
else
|
||||
no_url "$2"
|
||||
fi
|
||||
}
|
||||
|
||||
LsToHTML() {
|
||||
if test -f "$DOCHOME/$url/.title"
|
||||
then
|
||||
header "text/html; charset=US-ASCII"
|
||||
echo "<pre>"
|
||||
cat "$DOCHOME/$url/.title"
|
||||
echo "</pre>"
|
||||
elif test -f "$DOCHOME/$url/.title.html"
|
||||
then
|
||||
header "text/html; charset=US-ASCII"
|
||||
cat "$DOCHOME/$url/.title.html"
|
||||
else
|
||||
header "text/html; charset=US-ASCII"
|
||||
fi
|
||||
|
||||
case "$url" in
|
||||
/) ;;
|
||||
*) url="$url/"
|
||||
esac
|
||||
|
||||
while read link
|
||||
do
|
||||
case $link in
|
||||
*.cgi) ;;
|
||||
*)
|
||||
echo "<A HREF=\"$url$link\">$link</A> <BR>"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
read method data
|
||||
|
||||
$verbose "
|
||||
$date access from ${TCPREMOTEINFO:=NO-IDENT}@${TCPREMOTEHOST:=$TCPREMOTEIP}
|
||||
on local machine $TCPLOCALHOST
|
||||
$method $data " >> $LOGFILE
|
||||
|
||||
for hopeurl in $data
|
||||
do
|
||||
url="${url}${url:+ }$second"
|
||||
second="$hopeurl"
|
||||
done
|
||||
|
||||
case "$second" in
|
||||
*[1-9].*)
|
||||
read inheader
|
||||
while
|
||||
case "$inheader" in
|
||||
?|'') false
|
||||
;;
|
||||
*)
|
||||
read inheader
|
||||
;;
|
||||
esac
|
||||
do
|
||||
:
|
||||
done
|
||||
hheader
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$url" in
|
||||
*..*)
|
||||
no_url "$url"
|
||||
exit 1
|
||||
;;
|
||||
*.txt|*.[ch])
|
||||
send "text/plain; charset=US-ASCII" "$url"
|
||||
;;
|
||||
*.html)
|
||||
send "text/html; charset=US-ASCII" "$url"
|
||||
;;
|
||||
*.cgi)
|
||||
if test -x "$DOCHOME/$url"
|
||||
then
|
||||
read message
|
||||
echo "$message" | "$DOCHOME/$url"
|
||||
else
|
||||
no_url "$url"
|
||||
fi
|
||||
;;
|
||||
*".cgi?"*)
|
||||
oIFS="$IFS"
|
||||
echo "$url" | {
|
||||
IFS='?' read url QUERY_STRING
|
||||
if test -x "$DOCHOME/$url"
|
||||
then
|
||||
IFS="$oIFS"
|
||||
export QUERY_STRING
|
||||
"$DOCHOME/$url"
|
||||
else
|
||||
no_url "$url"
|
||||
fi
|
||||
}
|
||||
;;
|
||||
*.[Gg][Ii][Ff])
|
||||
send "image/gif" "$url"
|
||||
;;
|
||||
*.[Jj][Pp][Gg]|*.[Jj][Pp][Ee][Gg])
|
||||
send "image/jpeg" "$url"
|
||||
;;
|
||||
*.tbl)
|
||||
header "text/html; charset=US-ASCII"
|
||||
echo "<pre>"
|
||||
test -f "$DOCHOME/$url" &&
|
||||
tbl < "$DOCHOME/$url" | nroff ||
|
||||
no_url "$url"
|
||||
echo "</pre>"
|
||||
;;
|
||||
*.nroff)
|
||||
header "text/html; charset=US-ASCII"
|
||||
echo "<pre>"
|
||||
test -f "$DOCHOME/$url" &&
|
||||
nroff < "$DOCHOME/$url" ||
|
||||
no_url "$url"
|
||||
echo "</pre>"
|
||||
;;
|
||||
*mp[23])
|
||||
if test -f "$DOCHOME/$url"
|
||||
then
|
||||
header "application/mpstream"
|
||||
echo "+$TCPLOCALIP:${MPSERVPORT:=9001}/$url"
|
||||
else
|
||||
no_url "$url"
|
||||
fi
|
||||
;;
|
||||
*.[0-9]|*.[0-9][a-z])
|
||||
header "text/html; charset=US-ASCII"
|
||||
echo "<pre>"
|
||||
if test -f "$DOCHOME/$url"
|
||||
then
|
||||
#nroff -man "$DOCHOME/$url" | $BINHOME/man2html
|
||||
echo "perl at the moment is broken, so man2html doesn't work. Sorry."
|
||||
echo "</pre>"
|
||||
else
|
||||
no_url "$url"
|
||||
fi
|
||||
;;
|
||||
*.???|*.??)
|
||||
send "unknown/data" "$url"
|
||||
;;
|
||||
*/)
|
||||
if test -d "$DOCHOME/$url"
|
||||
then
|
||||
ls "$DOCHOME/$url" | LsToHTML
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
if test -f "$DOCHOME/$url"
|
||||
then
|
||||
read filetype < "$DOCHOME/$url"
|
||||
case "$filetype" in
|
||||
\#!/*/*|\#!?/*/*)
|
||||
header "text/plain; charset=US-ASCII"
|
||||
cat "$DOCHOME/$url"
|
||||
;;
|
||||
'<!*>')
|
||||
header "text/html; charset=US-ASCII"
|
||||
cat "$DOCHOME/$url"
|
||||
;;
|
||||
*)
|
||||
header "text/html; charset=US-ASCII"
|
||||
echo "<pre>"
|
||||
cat "$DOCHOME/$url"
|
||||
echo "</pre>"
|
||||
;;
|
||||
esac
|
||||
elif test -f "$DOCHOME/$url/$INDEX"
|
||||
then
|
||||
header "text/html; charset=US-ASCII"
|
||||
cat "$DOCHOME/$url/$INDEX"
|
||||
elif test -d "$DOCHOME/$url"
|
||||
then
|
||||
ls "$DOCHOME/$url" | LsToHTML
|
||||
else
|
||||
no_url "$url"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
Loading…
Add table
Add a link
Reference in a new issue