import cgi import urlparse from subprocess import check_output import sys import cgitb cgitb.enable(format='text') def stripall(content, chars): for char in chars: content = content.replace(char, '') return content def latexsanitize(content): # We're certainly not gonna let you execute code on this machine content = stripall(content, "\\{}") content = content.replace("\n", "\\\\") return content latextemplate = open("informationrequest.tex.tmpl").read() # postdata = urlparse.parse_qs(sys.stdin.read()) fromname = latexsanitize(postdata.get("fromname", "")[0]) toaddress = latexsanitize(postdata.get("toaddress", "")[0]) open("letter.tex", "w").write(latextemplate % {'fromname': fromname, 'toaddress': toaddress, 'fromaddress': ""}) check_output("pdflatex letter.tex", shell=True) print 'Content-Type:application/pdf' print 'Content-Disposition:attachment;filename=information-request-letter.pdf' print fl = open("letter.pdf", "rb") print fl.read() fl.close() check_output("srm -v letter.*", shell=True) # We don't keep any of the files and use secure delete check_output("echo win >> wedokeepacounterthough", shell=True) # But yes, we do keep a counter