2017-12-30 00:15:22 +00:00
|
|
|
#!/usr/bin/env python3
|
2018-03-28 15:36:35 +00:00
|
|
|
from bot import Bot
|
|
|
|
import active_bots
|
|
|
|
from config import config
|
|
|
|
from db import db
|
2018-03-24 15:26:35 +00:00
|
|
|
import logging
|
2018-03-28 23:25:17 +00:00
|
|
|
from sendmail import sendmail
|
2018-03-23 14:51:52 +00:00
|
|
|
|
2018-03-23 10:05:24 +00:00
|
|
|
|
2018-04-15 09:26:48 +00:00
|
|
|
def shutdown():
|
|
|
|
try:
|
|
|
|
sendmail(config['web']['contact'], 'Ticketfrei Shutdown')
|
|
|
|
except Exception:
|
|
|
|
logger.error('Could not inform admin.', exc_info=True)
|
|
|
|
exit(1)
|
|
|
|
|
|
|
|
|
2018-03-24 15:26:35 +00:00
|
|
|
if __name__ == '__main__':
|
|
|
|
logger = logging.getLogger()
|
2018-04-15 09:26:48 +00:00
|
|
|
fh = logging.FileHandler('/var/log/ticketfrei/backend.log')
|
2018-03-24 15:26:35 +00:00
|
|
|
fh.setLevel(logging.DEBUG)
|
|
|
|
logger.addHandler(fh)
|
|
|
|
|
2018-10-05 22:56:12 +00:00
|
|
|
|
2018-03-28 15:36:35 +00:00
|
|
|
bots = []
|
|
|
|
for ActiveBot in active_bots.__dict__.values():
|
|
|
|
if isinstance(ActiveBot, type) and issubclass(ActiveBot, Bot):
|
|
|
|
bots.append(ActiveBot())
|
2018-03-23 14:51:52 +00:00
|
|
|
|
2018-03-28 15:36:35 +00:00
|
|
|
try:
|
|
|
|
while True:
|
|
|
|
for user in db.active_users:
|
|
|
|
for bot in bots:
|
|
|
|
reports = bot.crawl(user)
|
2018-03-23 14:51:52 +00:00
|
|
|
for status in reports:
|
2018-03-28 15:36:35 +00:00
|
|
|
if not user.is_appropriate(status):
|
2018-09-24 17:46:21 +00:00
|
|
|
logger.info("Inaproppriate message: %d %s %s" % (user.uid, status.author, status.text))
|
2018-09-24 17:58:17 +00:00
|
|
|
continue
|
2018-03-28 21:50:55 +00:00
|
|
|
for bot2 in bots:
|
|
|
|
bot2.post(user, status)
|
2018-09-24 17:46:21 +00:00
|
|
|
logger.info("Resent: %d %s %s" % (user.uid, status.author, status.text))
|
2018-03-28 23:25:17 +00:00
|
|
|
except Exception:
|
2018-07-14 14:39:53 +00:00
|
|
|
logger.error("Shutdown.", exc_info=True)
|
2018-04-15 09:26:48 +00:00
|
|
|
shutdown()
|