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)
|