#! /usr/bin/python -u
import sys
import os
import traceback
import Cookie
import string
import time
import cgi
import re
import types
import config
import db_access
import auth
import website
import tools
def main(environ=os.environ):
start = time.time()
pard = {}
pard['ERROR'] = ''
pard['HOSTNAME'] = ''
pard['html'] = ''
pard['file_upload'] = []
html = ''
error_log = ''
error_sid = ''
cmd = ''
id_utente = ''
sys.stderr = sys.stdout
#sys.stdout.write(pard['header'])
#sys.stdout.write(repr(pard['tok']))
pard['header'] = 'Content-type: text/html\n\n'
try:
pard = config.global_parameters(pard)
for k in environ.keys():
if not k in pard.keys():
pard[k] = environ[k]
pard['HTTP_REFERER'] = pard.get('HTTP_REFERER', '')
form = cgi.FieldStorage(keep_blank_values=1)
for k in form.keys():
if not k in pard.keys():
if (k[0:12] == 'file_upload_') and (form[k].filename != ''):
pard['file_upload'].append({'filename': form[k].filename, 'content': form.getvalue(k, ''), 'form_id': k})
else:
pard[k] = form.getvalue(k, '')
pard['tok'] = pard.get('tok', 'start')
pard['sid'] = pard.get('sid', '')
pard['sid_auth'] = pard.get('sid_auth', 'N')
if pard.has_key('HTTP_COOKIE'):
cookie = Cookie.SimpleCookie(pard['HTTP_COOKIE'])
try:
pard['sid'] = cookie['sid'].value
pard['sid_auth'] = cookie['sid_auth'].value
except:
pass
if (pard['sid'] == '') or (auth.check_sid(pard) == 'SID_ERROR'):
pard = auth.sid_new(pard)
pard['sid_auth'] = 'N'
# if 'www.facebook.com' in pard['HTTP_USER_AGENT']:
# pard['tok'] = pard['tok']
# else:
# pard['tok'] = 'start'
pard['tok'] = pard['tok']
else:
pard = auth.load_sid_data(pard)
flag = 'STOP'
#tools.dump3(pard, pard['TOKEN'][pard['tok']]['auth'])
#tools.dump3(pard, pard['sid_auth'])
if (pard['TOKEN'][pard['tok']]['auth'] == 'N'):
flag = 'GO'
elif (pard['TOKEN'][pard['tok']]['auth'] == 'Y') and (pard['sid_auth'] == 'Y'):
flag = 'GO'
elif pard['tok'] == 'img':
flag = 'GO'
elif pard['tok'] == 'smenu':
flag = 'GO'
#tools.dump3(pard, flag)
if flag == 'GO':
module = pard['TOKEN'][pard['tok']]['module']
program = pard['TOKEN'][pard['tok']]['program']
cmd = module + '.' + program + '(pard)'
if os.path.isfile(pard['BIN_DIR'] + '/' + module + '.py') or os.path.isfile(pard['BIN_DIR'] + '/' + module + '.pyc'):
if __import__(module).__dict__.has_key(program):
pard = __import__(module).__dict__[program](pard)
else:
pard['tok'] = 'login'
pard = website.website(pard)
stop = time.time()
except:
stop = time.time()
pard['ERROR'] = build_exception()
tools.dump3(pard, pard['ERROR'])
#pard = website.render_error(pard)
pard['html'] = website.render_home(pard)
sys.stdout.write(pard['header'])
sys.stdout.write(pard['html'])
pard['sid_id_utente'] = pard.get('sid_id_utente', '')
error_log = log_hit(start, stop, pard['REMOTE_ADDR'], pard['sid_id_utente'], cmd, len(pard['html']), pard['ERROR'], pard)
error_sid = log_sid(start, stop, len(html), pard)
if error_log:
sys.stdout.write(error_log)
if error_sid:
sys.stdout.write(error_sid)
#exec_time = repr(stop - start)[0:5]
#print '
%s%s" % (escape("".join(list[:-1])), escape(list[-1])) del tb return buf def escape(s, quote=None): s = s.replace("&", "&") # Must be done first! s = s.replace("<", "<") s = s.replace(">", ">") if quote: s = s.replace('"', """) return s def log_hit(start, stop, ip, id_utente, cmd, bytes, error, pard): try: action = pard.get('tok', '') id_utente = pard.get('sid_id_utente', '') h = pard.get('html', '') bytes = len(h) exec_time = repr(stop - start)[0:5] log_file = open(pard['APPLICATION_LOG_FILE'], 'a') log_date = time.asctime(time.localtime(time.time())) error_id = '' if error != '': error_id = string.split(repr(stop), '.')[0] #error = string.replace(error[0], '\n', '\040') error = error + '