From d3f0f38ca49525accbd42648c10711a6615d6201 Mon Sep 17 00:00:00 2001 From: Andy Spencer Date: Mon, 18 Oct 2010 05:22:21 +0000 Subject: [PATCH] Update for Vim 73 and add better spam checking --- 2html.patch | 119 +++++++++++++++++++++++++++++----------------------- index.cgi | 56 ++++++++++++++++--------- vimrc | 10 +++-- vpaste | 4 +- 4 files changed, 111 insertions(+), 78 deletions(-) diff --git a/2html.patch b/2html.patch index f1181ba..0eaf9c5 100644 --- a/2html.patch +++ b/2html.patch @@ -1,8 +1,8 @@ ---- /usr/share/vim/vim72/syntax/2html.vim 2009-12-03 18:45:27.000000000 +0000 -+++ /home/andy/.vim/syntax/2html.vim 2009-11-23 04:52:46.000000000 +0000 -@@ -22,6 +22,13 @@ - let s:htmlfont = "monospace" - endif +--- /usr/share/vim/vim73/syntax/2html.vim 2010-08-28 18:59:26.000000000 +0000 ++++ /home/andy/.vim/syntax/2html.vim 2010-08-31 04:34:00.000000000 +0000 +@@ -33,6 +33,13 @@ + + let s:settings = tohtml#GetUserSettings() +" Whitespace +if &wrap @@ -14,66 +14,68 @@ " When not in gui we can only guess the colors. if has("gui_running") let s:whatterm = "gui" -@@ -192,7 +199,6 @@ - let s:old_report = &report +@@ -211,7 +218,6 @@ let s:old_search = @/ + let s:old_more = &more set notitle noicon -setlocal et + set nomore set report=1000000 - - " Split window to create a buffer with the HTML file. -@@ -245,7 +251,7 @@ - " HTML header, with the title and generator ;-). Left free space for the CSS, - " to be filled at the end. - exe "normal! a\n\e" --exe "normal! a\n" . expand("%:p:~") . "\n\e" -+exe "normal! a\n" . &titlestring . "\n\e" - exe "normal! a\n\n\e" + setlocal noscrollbind +@@ -298,7 +304,7 @@ + call add(s:lines, "".expand("%:p:~").""), ++ \ ("".&titlestring.""), + \ ("", ""]) else -- exe "normal! a\n\n
\n\e"
-+  exe "normal! a\n
\n\e"
+-  call extend(s:lines, ["", "", "
"])
++  call extend(s:lines, ["", "
"])
  endif
  
  exe s:orgwin . "wincmd w"
-@@ -393,12 +399,16 @@
- 
-       " Expand tabs
-       let s:expandedtab = strpart(s:line, s:startcol - 1, s:col - s:startcol)
--      let idx = stridx(s:expandedtab, "\t")
--      while idx >= 0
--	let i = &ts - ((idx + s:startcol - 1) % &ts)
--	let s:expandedtab = substitute(s:expandedtab, '\t', repeat(' ', i), '')
--	let idx = stridx(s:expandedtab, "\t")
--      endwhile
-+      if &et
-+        let idx = stridx(s:expandedtab, "\t")
-+        while idx >= 0
-+          let i = &ts - ((idx + s:startcol - 1) % &ts)
-+          let s:expandedtab = substitute(s:expandedtab, '\t', repeat(' ', i), '')
-+          let idx = stridx(s:expandedtab, "\t")
-+        endwhile
-+      else
-+        setlocal isprint+=9
-+      endif
+@@ -873,6 +879,7 @@
+       if s:settings.ignore_conceal || !s:concealinfo[0]
+ 	" Expand tabs
+ 	let s:expandedtab = strpart(s:line, s:startcol - 1, s:col - s:startcol)
++	if &expandtab
+ 	let s:offset = 0
+ 	let s:idx = stridx(s:expandedtab, "\t")
+ 	while s:idx >= 0
+@@ -895,6 +902,9 @@
+ 	  let s:expandedtab = substitute(s:expandedtab, '\t', repeat(' ', s:i), '')
+ 	  let s:idx = stridx(s:expandedtab, "\t")
+ 	endwhile
++	else
++	  setlocal isprint+=9
++	end
  
-       " Output the text with the same synID, with class set to {s:id_name}
-       let s:id = synIDtrans(s:id)
-@@ -423,7 +433,7 @@
- if exists("html_no_pre")
-   exe "normal! a\n\e"
+ 	" get the highlight group name to use
+ 	let s:id = synIDtrans(s:id)
+@@ -945,12 +955,12 @@
+ if s:settings.no_pre
+   if !s:settings.use_css
+     " Close off the font tag that encapsulates the whole 
+-    call extend(s:lines, ["", "", ""])
++    call extend(s:lines, [""])
+   else
+-    call extend(s:lines, ["", ""])
++    call extend(s:lines, [""])
+   endif
  else
--  exe "normal! a
\n\n\e" -+ exe "normal! a
\n\e" +- call extend(s:lines, ["
", "", ""]) ++ call extend(s:lines, ["
"]) endif - -@@ -449,7 +459,7 @@ - if exists("html_no_pre") + exe s:newwin . "wincmd w" +@@ -979,7 +989,7 @@ + if s:settings.no_pre execute "normal! A\nbody { color: " . s:fgc . "; background-color: " . s:bgc . "; font-family: ". s:htmlfont ."; }\e" else - execute "normal! A\npre { font-family: ". s:htmlfont ."; color: " . s:fgc . "; background-color: " . s:bgc . "; }\e" @@ -81,3 +83,14 @@ yank put execute "normal! ^cwbody\e" +@@ -1077,8 +1087,8 @@ + exec 'resize' s:old_winheight + let &l:winfixheight = s:old_winfixheight + +-call setwinvar(s:orgwin,'&stl', s:origwin_stl) +-call setwinvar(s:newwin,'&stl', s:newwin_stl) ++"call setwinvar(s:orgwin,'&stl', s:origwin_stl) ++"call setwinvar(s:newwin,'&stl', s:newwin_stl) + let &ls=s:ls + + " Save a little bit of memory (worth doing?) diff --git a/index.cgi b/index.cgi index 295f031..7b2478a 100755 --- a/index.cgi +++ b/index.cgi @@ -23,16 +23,25 @@ function get_modeline { } # Extract an uploaded file from standard input -# $1 is the boundary delimiter for the file +# $2 is the name of the input to extract function cut_file { - awk -v "bnd=$1" '{ - if ($0 == "--"bnd"\r") { st=1; } - if ($0 == "--"bnd"--\r") { st=0; } - if (st == 2) { print $0; } - if ($0 == "\r" && st == 1) { st=2; } - }' | head -c -2 | head -c $((128*1024)) - # Remove trailing ^M's that come with CGI - # Limit size to 128K + bnd="${CONTENT_TYPE/*boundary\=/}" + awk -v "want=$1" -v "bnd=$bnd" ' + BEGIN { RS="\r\n" } + + # reset based on boundaries + $0 == "--"bnd"" { st=1; next; } + $0 == "--"bnd"--" { st=0; next; } + $0 == "--"bnd"--\r" { st=0; next; } + + # search for wanted file + st == 1 && $0 ~ "^Content-Disposition:.* name=\""want"\"" { st=2; next; } + st == 1 && $0 == "" { st=9; next; } + + # wait for newline, then start printing + st == 2 && $0 == "" { st=3; next; } + st == 3 { print $0 } + ' | head -c $((128*1024)) # Limit size to 128K } # Print out a generic header @@ -86,13 +95,13 @@ function do_print { # term=xterm-256color in vimrc HOME=/home/andy \ 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" \ - '+set noml' \ - '+2d|'$trim \ - '+%s/\r//g' \ - '+TOhtml' \ + '+sil! set fde= fdt= fex= inde= inex= key= pa= pexpr=' \ + '+sil! set iconstring= ruf= stl= tal=' \ + "+sil! set titlestring=$1\ -\ vpaste.net" \ + '+sil! set noml' \ + '+sil! 2d|'$trim \ + '+sil! %s/\r//g' \ + '+sil! TOhtml' \ "+sav! $output" \ '+qall!' \ "$tmp" @@ -109,7 +118,14 @@ function do_print { # Upload handler function do_upload { - text=$(cut_file "$1") + body=$(cat -) + spam=$(echo -n "$body" | cut_file "ignoreme") + text=$(echo -n "$body" | cut_file "(text|x)") + if [ ! -z "$spam" ]; then + header text/plain + echo "Spam check.." + exit + fi if [ -z "$text" ]; then header text/plain echo "No text pasted" @@ -143,7 +159,6 @@ function do_upload { header text/plain echo "$uri" fi - } # Default index page @@ -178,6 +193,7 @@ cat - <
+