50 lines
1.1 KiB
Python
50 lines
1.1 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import sys
|
|
import os
|
|
import time
|
|
import stat
|
|
import datetime
|
|
|
|
from gluon.utils import md5_hash
|
|
from gluon.restricted import RestrictedError
|
|
from gluon.tools import Mail
|
|
|
|
|
|
path = os.path.join(request.folder, 'errors')
|
|
hashes = {}
|
|
mail = Mail()
|
|
|
|
### CONFIGURE HERE
|
|
SLEEP_MINUTES = 5
|
|
ALLOW_DUPLICATES = True
|
|
mail.settings.server = 'localhost:25'
|
|
mail.settings.sender = 'you@localhost'
|
|
administrator_email = 'you@localhost'
|
|
### END CONFIGURATION
|
|
|
|
while 1:
|
|
for file in os.listdir(path):
|
|
if not ALLOW_DUPLICATES:
|
|
fileobj = open(file, 'r')
|
|
try:
|
|
file_data = fileobj.read()
|
|
finally:
|
|
fileobj.close()
|
|
key = md5_hash(file_data)
|
|
|
|
if key in hashes:
|
|
continue
|
|
|
|
hashes[key] = 1
|
|
|
|
error = RestrictedError()
|
|
error.load(request, request.application, file)
|
|
|
|
mail.send(to=administrator_email,
|
|
subject='new web2py ticket', message=error.traceback)
|
|
|
|
os.unlink(os.path.join(path, file))
|
|
time.sleep(SLEEP_MINUTES * 60)
|