⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 websrv.sh

📁 UNIX下SH的实现源码
💻 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 + -