📄 websrv.sh
字号:
#!/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.htmldate=`date`DOCHOME=/home/insom/web-docsBINHOME=/home/insom/web-binLOGHOME=/home/insom/web-logsLOGFILE=$LOGHOME/access_log#verbose=:verbose=echoexec 2>> $LOGHOME/error_loghheader() {echo "HTTP/1.0 200 OKServer: WebSH/2.00Connection: closeDate: $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 " >> $LOGFILEfor hopeurl in $datado url="${url}${url:+ }$second" second="$hopeurl"donecase "$second" in *[1-9].*) read inheader while case "$inheader" in ?|'') false ;; *) read inheader ;; esac do : done hheader ;;esaccase "$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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -