#!/usr/bin/python -B
# this put script is in the public domain
# Sam Watkins, 2012
import cgi
import cgitb
cgitb.enable()
import sys
from os import path, makedirs, rename, environ
import re

app_root = path.dirname(environ['DOCUMENT_ROOT'])
#lib_dir = path.join(app_root, 'lib')
#sys.path.insert(0, lib_dir)

#from l import *

put_dir = path.join(app_root, 'put')

path_allow = r'\w+$'

print "Content-Type: text/plain\r"
print "\r"

path_info = environ.get('PATH_INFO','')

if re.match('/' + path_allow, path_info):
	path_info = path_info[1:]
	file_path = path.normpath(path.join(put_dir, path_info))

	dir, base = path.split(file_path)
	newfile = path.join(dir, "."+base+".new")  # not unique

	# TODO check content length

	block_size = 0x10000
	with open(file_path, "w") as out:
		while True:
			block = sys.stdin.read(block_size)
			if not block:
				break
			out.write(block)

	print file_path

