#! /bin/sh nl=' ' for arg do case "$arg" in -lynx) exec 3<&0 arg=`sed -e 's/^[ ]*//' -e 's/[ ]*$//' -e '/^$/d' 0<&3 | sed -e '1s/^URL://' -e '1s/^ *//' -e '1s/^[0-9][0-9]*[.][ ]*//' | tr -d \\\n` ;; esac i="${arg#http://}" # Comment out this next line and sh coredumps. Wish I knew why. (: echo 1; : echo 2; : echo 3; : echo 4; : echo 5; : echo 6; : echo 7; : echo 8)>/dev/null case "$i" in */*) ;; *) i="$i/" ;; esac pref=: keepalive= cookies= verbose=cat outfile= strip=cat hostoverridden=false method=GET rqdata= extrahdrs= dbg=n while $pref do case "$i" in KA:*) i="${i#KA:}" keepalive=-ka ;; DBG:*) i="${i#DBG:}" dbg=y ;; TO:*) i="${i#TO:}" outfile="${i%%;*}" i="${i#*;}" ;; HOST:*) i="${i#HOST:}" hostoverride="${i%%;*}" hostoverridden=true i="${i#*;}" ;; STRIP:*) i="${i#STRIP:}" strip=stripheader ;; HEADER:*) i="${i#HEADER:}" ii="${i#?}" c="${i%$ii}" extrahdrs="$extrahdrs${ii%%$c*}$nl" i="${ii#*$c}" ;; VERBOSE:*) verbose="tee /dev/tty" i="${i#VERBOSE:}" ;; COOKIE:*) cookiesep="Cookie:" i="${i#COOKIE:}" while : do nextcook="${i%%;*}" i="${i#*;}" case "$nextcook" in "") break;; esac cookies="$cookies$cookiesep $nextcook" cookiesep=";" done ;; POST:*) method=POST i="${i#POST:}" while : do nextdata="${i%%;*}" i="${i#*;}" case "$nextdata" in "") break;; esac rqdata="$rqdata&$nextdata" done ;; *) pref=false ;; esac done host="${i%%/*}" path="${i#*/}" auth= port=http fn="`echo \"\$path\" | tr / %`" pref=: case "$host" in *@*) auth="${host%@*}" host="${host##*@}" ;; esac case "$host" in *:*) port="${host#*:}" host="${host%%:*}" ;; esac case "$outfile" in "") outfile="${host}%$fn" ;; esac ( echo $method /"$path" HTTP/1.0 echo -n "$extrahdrs" case "$auth" in "") ;; *) echo -n "Authorization: Basic " echo -n "$auth" | base64 -e | sed -e '2,$s/^/ /' ;; esac if $hostoverridden; then case "$hostoverride" in "") ;; *) echo "Host: $hostoverride" ;; esac else echo "Host: $host" fi case "$cookies" in "") ;; *) echo "$cookies" ;; esac case "$rqdata" in "") echo "" ;; *) rqdata="${rqdata#&}" echo Content-type: application/x-www-form-urlencoded echo -n "Content-length: " echo -n "$rqdata" | wc -c | tr -dc 0-9\\012 echo "" echo "$rqdata" ;; esac ) | $verbose | sed -e 's/$/ /' | case $dbg in y) echo nc -holdstdin "$host" "$port" \| "$strip" \> "$outfile" cat ;; n) nc -holdstdin "$host" "$port" | $strip > "$outfile" ;; esac done