#!/usr/bin/env python

import os
import sys
import cgi
import cgitb
import json
cgitb.enable(display=0, logdir="/home/heng890331/exception.txt")

import hashlib
import logging
import traceback

logging.basicConfig(filename="/home/heng890331/log.txt", level=logging.DEBUG)
logging.debug("wechat")
form = cgi.FieldStorage()
formok = 1
try:
    keys = form.keys()
    logging.debug(','.join(str(e) for e in keys))
except:
    logging.debug(traceback.format_exc())
    logging.debug("Form error")
    formok = 0
returnStr = ""


logging.debug("start reading payload")
dataStr = sys.stdin.read()
logging.debug("input payload: " + dataStr)
try:
    data = json.loads(dataStr)
    logging.debug("json parse successfully")
except:
    data = {}
    logging.debug("json parse failed")

if formok == 1:
    signature = form.getvalue("signature", "error")
    logging.debug("Signature: " + signature)
    
    timestamp = form.getvalue("timestamp", "error")
    logging.debug("Timestamp: " + timestamp)
    
    nonce = form.getvalue("nonce", "error")
    logging.debug("Nonce: " + nonce)
    
    
    echostr = form.getvalue("echostr", "error")
    logging.debug("EchoStr: " + echostr)
    
    token = "gentosflowmeter"
    
    list = [token, timestamp, nonce]
    list.sort()
    
    sha1 = hashlib.sha1()
    
    map(sha1.update, list)
    hashcode = sha1.hexdigest()
    logging.debug("hashcode: " + hashcode)
    if hashcode == signature:
        returnStr = echostr
        logging.debug("Verified")
        

print "Content-type:text/html\r\n"
print returnStr

logging.debug("wechat end")
