summaryrefslogtreecommitdiff
path: root/rc/bin/formpost
diff options
context:
space:
mode:
Diffstat (limited to 'rc/bin/formpost')
-rwxr-xr-xrc/bin/formpost191
1 files changed, 0 insertions, 191 deletions
diff --git a/rc/bin/formpost b/rc/bin/formpost
deleted file mode 100755
index c60e1d002..000000000
--- a/rc/bin/formpost
+++ /dev/null
@@ -1,191 +0,0 @@
-#!/bin/rc
-rfork e
-argv0=$0
-fn usage {
- echo usage: $argv0 '[-d] [-M] [ -u url ] [ -g action | -p action | -m action ] [ name:value | name:@value ]' ... >[1=2]
- exit usage
-}
-d=()
-g=()
-M=()
-m=()
-p=()
-u=()
-while(~ $1 -*){
- switch($1){
- case -d
- d=1
- case -g
- g=1
- a=$2
- shift
- case -M
- M=1
- case -m
- m=1
- a=$2
- shift
- case -p
- p=1
- a=$2
- shift
- case -u
- u=$2
- shift
- case *
- usage
- }
- shift
-}
-if(~ $#M 0 && ~ $#u 0)
- usage
-fn geth{
- hget $u |
- sed 's/ACTION\=/action\=/g;
- s/ENCTYPE\=/enctype\=/g;
- s/FORM/form/g;
- s/INPUT/input/g;
- s/METHOD\=/method\=/g;
- s/NAME\=/name\=/g;
- s/OPTION/option/g;
- s/SELECT/select/g;
- s/TEXTAREA/textarea/g;
- s/TYPE\=/type\=/g' |
- awk '/<([ ]|[ ])*form/,/<\/form>/ {print}' |
- sed 's/<\/form>/&\nHJFORMEND\n/g;
- s/<([ ]|[ ])*/HJBOUNDARY/g;
- s/>(\n)*([ ]|[ ])*HJBOUNDARY/\n/g;
- s/([ ]|[ ])*HJBOUNDARY//g;
- s/^form/HJFORMSTART\n&/g' |
- grep -e '(^HJFORM|^form|^input|^option|^select|^textarea)' >$1
-}
-fn getf{
- a=`{grep -e '^form' $1 | sed 's/^.*action\=//g; s/^(\''|\"|[ ]*)//g; s/(\''|\"|[ ]|>).*$//g'}
- e=`{grep -e '^form' $1 | sed 's/^.*enctype\=//g; s/^(\''|\"|[ ]*)//g; s/(\''|\"|[ ]|>).*$//g'}
- m=`{grep -e '^form' $1 | sed 's/^.*method\=//g; s/^(\''|\"|[ ]*)//g; s/(\''|\"|[ ]|>).*$//g'}
- f=$a
- if(~ $#f 0)
- f=/
- if(~ $e multipart/form-data)
- f=($f m)
- if not if(~ $m post)
- f=($f p)
- if not
- f=($f g)
- ifs='
-' {
- for(j in `{grep -e '(^input|^select|^textarea)' $1}){
- if(~ $d 1)
- echo $"j >>formpost.log #debug
- if(~ $j *name'='*)
- jname=`{echo $"j |
- sed 's/^.*name\=//g;
- s/^(\''|\"|[ ]*)//g;
- s/(\''|\"|[ ]|>).*$//g;
- s/^.*\=.*$//g'}
- if(~ $j *value'='*)
- jvalue=`{echo $"j |
- sed 's/^.*value\=//g;
- s/^(\''|\"|[ ]*)//g;
- s/(\''|\"|[ ]|>).*$//g;
- s/^.*\=.*$//g;
- s/[ ]/HJSPACE/g'}
- ff=`{echo $"jname':'$"jvalue |
- sed 's/^.*\=.*:/:/g;
- s/:.*\=.*$/:/g'}
- if(! ~ $ff :*)
- f=($"f $"ff)
- jname=()
- jvalue=()
- }
-}
- echo $"f
-}
-fn mencode{
- f=()
- cr=`{echo x | tr x \015}
- while(! ~ $#1 0){
- switch($1){
- case *:*
- f=($f $1)
- case *
- usage
- }
- shift
- }
- for(i in $f){
- echo '--HJBOUNDARY'^$"cr
- fname=`{echo $"i | awk -F ':' '{print $1}'}
- fvalue=`{echo $"i | awk -F ':' '{print $2}'}
- if(~ $fvalue @*){
- fvalue=`{echo $"fvalue | sed 's/@//g'}
- echo 'Content-Disposition: form-data; name="'$"fname'"; filename="'^`{basename $fvalue}^'"'$"cr
- echo Content-Type: `{file -m $fvalue}^$"cr
- echo $cr
- cat $fvalue
- echo $cr
- }
- if not{
- echo 'Content-Disposition: form-data; name="'$"fname'"'$"cr
- echo $"cr
- echo $"fvalue^$"cr
- }
- }
- echo '--HJBOUNDARY--'$"cr
-}
-fn uencode{
- f=()
- for(i){
- fname=`{echo $"i | awk -F ':' '{print $1}'}
- fvalue=`{echo $"i | awk -F ':' '{$1=""; print substr($0, 2)}' |
- sed 's/HJSPACE/ /g' |
- urlencode |
- sed 's/%0A$//g'}
- f=$"f^$"fname'='$"fvalue
- if(! ~ $"i $*($#*))
- f=$"f^'&'
- }
- echo $"f
-}
-fn print{
- if(~ $d 1)
- echo $"f >>formpost.log #debug
- a=`{echo $"a | sed 's/^\///g'}
- if(~ $a http*)
- u=$a
- if not
- u=$"u/$"a
- if(~ $M 1)
- mencode `{for(i in $f){echo $"i}}
- if not if(~ $m 1)
- echo formpost -M `{for(i in $f){echo ''''$"i''''}} '| hget -P -r ''Content-Type: multipart/form-data, boundary=HJBOUNDARY''' $"u
- if not if(~ $p 1)
- echo 'hget -p '''^`{uencode $f}^''' '^$"u
- if not
- echo hget ''''$"u^'?'^`{uencode $f}^''''
-}
-if(~ $#M 0 && ~ $#g 0 && ~ $#m 0 && ~ $#p 0){
- file=/tmp/formpost.$pid
- geth $file
- while(grep -s -e '^HJFORMSTART$' $file){
- f=`{getf $file}
- a=$f(1)
- if(~ $f(2) g)
- g=1
- if not if(~ $f(2) m)
- m=1
- if not if(~ $f(2) p)
- p=1
- f=$f(3-)
- print
- { echo /HJFORMSTART/,/HJFORMEND/d
- echo w
- echo q
- } | sam -d $file >[2]/dev/null
- }
- rm -f $file
-}
-if not{
- f=$*
- print
-}