X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=index.cgi;h=295f031c0f0c6f93a8c45b2a0d68d069e2999428;hb=6a9662553e44676020a634fb15625cc068b642f5;hp=c6aed7c77d55ce25f518004b59ff0b2136651795;hpb=7bea4fdb1cd207bd1d72cd39db0d5342ad8c6e5c;p=vpaste diff --git a/index.cgi b/index.cgi index c6aed7c..295f031 100755 --- a/index.cgi +++ b/index.cgi @@ -41,6 +41,24 @@ function header { echo } +# List previous pastes +function do_cmd { +header text/plain +case "$1" in +head) + for i in $(ls -t db/*); do + basename $i + basename $i | sed 's/./-/g' + sed '1,/^$/d; /^\s*$/d' $i | sed -n '1,5s/\(.\{0,60\}\).*/\1/p' + echo + done + ;; +ls) + ls -t db | column + ;; +esac +} + # Format a file for viewing function do_print { if [ -f "./$1" ]; then @@ -63,11 +81,11 @@ function do_print { sed "1a$(get_modeline)" "$input" > "$tmp" # - I have some plugins in ~/.vim - # - Run ex in a pty to trick it into thinking that it + # - Run ex in screen to trick it into thinking that it # has a real terminal, note that we also have to set # term=xterm-256color in vimrc HOME=/home/andy \ - /home/andy/bin/pty ex -nXZ -i NONE -u vimrc \ + screen -D -m ex -nXZ -i NONE -u vimrc \ '+set bexpr= fde= fdt= fex= inde= inex= key= pa= pexpr' \ '+set iconstring= ruf= stl= tal=' \ "+set titlestring=$1\ -\ vpaste.net" \ @@ -77,7 +95,7 @@ function do_print { '+TOhtml' \ "+sav! $output" \ '+qall!' \ - "$tmp" /dev/null 2>&1 + "$tmp" header text/html cat "$output" @@ -99,15 +117,33 @@ function do_upload { fi output="$(mktemp db/XXXXX)" uri="$url$(basename "$output")${QUERY_STRING:+"?"}" - (get_modeline - echo "Date: $(date -R)" - echo "From: $REMOTE_ADDR" - echo - echo "$text") > "$output" - echo "Status: 302 Found" - echo "Location: $uri" - header text/plain - echo "$uri" + + # Format, spam check, and save message + ( + get_modeline + echo "Date: $(date -R)" + echo "From: $REMOTE_ADDR" + echo + echo "$text" + ) | HOME=/home/vpaste spamc -E > "$output" + + # Test for spam + if [ "$?" -ne 0 ]; then + # Report spam + header text/plain + echo "Your post has been marked as spam!" + echo "Spam test results are as folllows.. " + echo + cat "$output" + mv "$output" spam + else + # Redirect user + echo "Status: 302 Found" + echo "Location: $uri" + header text/plain + echo "$uri" + fi + } # Default index page @@ -212,7 +248,10 @@ cat - <text " echo -n "rainbow" echo "" - done) + done) + +

list all

+

sample all

EOF @@ -223,7 +262,11 @@ url="http://$HTTP_HOST${REQUEST_URI/\?*}" pathinfo="${REQUEST_URI/*\/}" pathinfo="${pathinfo/\?*}" -if [ "$pathinfo" ]; then +if [ "$pathinfo" = ls ]; then + do_cmd ls +elif [ "$pathinfo" = head ]; then + do_cmd head +elif [ "$pathinfo" ]; then do_print "$pathinfo" elif [ "$CONTENT_TYPE" ]; then do_upload "${CONTENT_TYPE/*boundary\=/}"