initializing logger is also done by ticketfrei now
This commit is contained in:
parent
32e86a3c0e
commit
a3b74dcfff
26
mailbot.py
26
mailbot.py
|
@ -6,12 +6,10 @@ import time
|
||||||
import trigger
|
import trigger
|
||||||
import datetime
|
import datetime
|
||||||
import email
|
import email
|
||||||
import logging
|
import ticketfrei
|
||||||
import imaplib
|
import imaplib
|
||||||
import report
|
import report
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class Mailbot(object):
|
class Mailbot(object):
|
||||||
"""
|
"""
|
||||||
|
@ -27,6 +25,7 @@ class Mailbot(object):
|
||||||
:param config: (dictionary) config.toml as a dictionary of dictionaries
|
:param config: (dictionary) config.toml as a dictionary of dictionaries
|
||||||
"""
|
"""
|
||||||
self.config = config
|
self.config = config
|
||||||
|
self.logger = ticketfrei.get_logger(config)
|
||||||
|
|
||||||
self.history_path = history_path
|
self.history_path = history_path
|
||||||
self.last_mail = self.get_history(self.history_path)
|
self.last_mail = self.get_history(self.history_path)
|
||||||
|
@ -41,18 +40,18 @@ class Mailbot(object):
|
||||||
try:
|
try:
|
||||||
self.mailbox.starttls(ssl_context=context)
|
self.mailbox.starttls(ssl_context=context)
|
||||||
except:
|
except:
|
||||||
logger.error('StartTLS failed', exc_info=True)
|
self.logger.error('StartTLS failed', exc_info=True)
|
||||||
try:
|
try:
|
||||||
self.mailbox.login(self.config["mail"]["user"], self.config["mail"]["passphrase"])
|
self.mailbox.login(self.config["mail"]["user"], self.config["mail"]["passphrase"])
|
||||||
except imaplib.IMAP4.error:
|
except imaplib.IMAP4.error:
|
||||||
logger.error("Login to mail server failed", exc_info=True)
|
self.logger.error("Login to mail server failed", exc_info=True)
|
||||||
try:
|
try:
|
||||||
mailer = sendmail.Mailer(config)
|
mailer = sendmail.Mailer(config)
|
||||||
mailer.send('', config['mail']['contact'],
|
mailer.send('', config['mail']['contact'],
|
||||||
'Ticketfrei Crash Report',
|
'Ticketfrei Crash Report',
|
||||||
attachment=config['logging']['logpath'])
|
attachment=config['logging']['logpath'])
|
||||||
except:
|
except:
|
||||||
logger.error('Mail sending failed', exc_info=True)
|
self.logger.error('Mail sending failed', exc_info=True)
|
||||||
|
|
||||||
def repost(self, status):
|
def repost(self, status):
|
||||||
"""
|
"""
|
||||||
|
@ -72,7 +71,7 @@ class Mailbot(object):
|
||||||
try:
|
try:
|
||||||
rv, data = self.mailbox.select("Inbox")
|
rv, data = self.mailbox.select("Inbox")
|
||||||
except imaplib.IMAP4.abort:
|
except imaplib.IMAP4.abort:
|
||||||
logger.error("Crawling Mail failed", exc_info=True)
|
self.logger.error("Crawling Mail failed", exc_info=True)
|
||||||
rv = False
|
rv = False
|
||||||
msgs = []
|
msgs = []
|
||||||
if rv == 'OK':
|
if rv == 'OK':
|
||||||
|
@ -83,7 +82,7 @@ class Mailbot(object):
|
||||||
for num in data[0].split():
|
for num in data[0].split():
|
||||||
rv, data = self.mailbox.fetch(num, '(RFC822)')
|
rv, data = self.mailbox.fetch(num, '(RFC822)')
|
||||||
if rv != 'OK':
|
if rv != 'OK':
|
||||||
logger.error("Couldn't fetch mail %s %s" % (rv, str(data)))
|
self.logger.error("Couldn't fetch mail %s %s" % (rv, str(data)))
|
||||||
return msgs
|
return msgs
|
||||||
msg = email.message_from_bytes(data[0][1])
|
msg = email.message_from_bytes(data[0][1])
|
||||||
|
|
||||||
|
@ -172,15 +171,8 @@ class Mailbot(object):
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
import ticketfrei
|
|
||||||
config = ticketfrei.get_config()
|
config = ticketfrei.get_config()
|
||||||
|
|
||||||
# set log file
|
|
||||||
logger = logging.getLogger()
|
|
||||||
fh = logging.FileHandler(config['logging']['logpath'])
|
|
||||||
fh.setLevel(logging.DEBUG)
|
|
||||||
logger.addHandler(fh)
|
|
||||||
|
|
||||||
# initialise trigger
|
# initialise trigger
|
||||||
trigger = trigger.Trigger(config)
|
trigger = trigger.Trigger(config)
|
||||||
|
|
||||||
|
@ -195,7 +187,7 @@ if __name__ == "__main__":
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
print("Good bye. Remember to restart the bot!")
|
print("Good bye. Remember to restart the bot!")
|
||||||
except:
|
except:
|
||||||
logger.error('Shutdown', exc_info=True)
|
m.logger.error('Shutdown', exc_info=True)
|
||||||
m.save_last()
|
m.save_last()
|
||||||
try:
|
try:
|
||||||
mailer = sendmail.Mailer(config)
|
mailer = sendmail.Mailer(config)
|
||||||
|
@ -203,4 +195,4 @@ if __name__ == "__main__":
|
||||||
'Ticketfrei Crash Report',
|
'Ticketfrei Crash Report',
|
||||||
attachment=config['logging']['logpath'])
|
attachment=config['logging']['logpath'])
|
||||||
except:
|
except:
|
||||||
logger.error('Mail sending failed', exc_info=True)
|
m.logger.error('Mail sending failed', exc_info=True)
|
||||||
|
|
19
retootbot.py
19
retootbot.py
|
@ -6,16 +6,14 @@ import pickle
|
||||||
import re
|
import re
|
||||||
import time
|
import time
|
||||||
import trigger
|
import trigger
|
||||||
import logging
|
|
||||||
import sendmail
|
import sendmail
|
||||||
import report
|
import report
|
||||||
|
import ticketfrei
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class RetootBot(object):
|
class RetootBot(object):
|
||||||
def __init__(self, config):
|
def __init__(self, config):
|
||||||
self.config = config
|
self.config = config
|
||||||
|
self.logger = ticketfrei.get_logger(config)
|
||||||
self.client_id = self.register()
|
self.client_id = self.register()
|
||||||
self.m = self.login()
|
self.m = self.login()
|
||||||
|
|
||||||
|
@ -73,7 +71,7 @@ class RetootBot(object):
|
||||||
try:
|
try:
|
||||||
all = self.m.notifications()
|
all = self.m.notifications()
|
||||||
except: # mastodon.Mastodon.MastodonAPIError is unfortunately not in __init__.py
|
except: # mastodon.Mastodon.MastodonAPIError is unfortunately not in __init__.py
|
||||||
logger.error("Unknown Mastodon API Error.", exc_info=True)
|
self.logger.error("Unknown Mastodon API Error.", exc_info=True)
|
||||||
return mentions
|
return mentions
|
||||||
for status in all:
|
for status in all:
|
||||||
if (status['type'] == 'mention' and status['status']['id'] not in self.seen_toots):
|
if (status['type'] == 'mention' and status['status']['id'] not in self.seen_toots):
|
||||||
|
@ -96,7 +94,7 @@ class RetootBot(object):
|
||||||
|
|
||||||
:param mention: (report.Report object)
|
:param mention: (report.Report object)
|
||||||
"""
|
"""
|
||||||
logger.info('Boosting toot from %s' % (
|
self.logger.info('Boosting toot from %s' % (
|
||||||
mention.format()))
|
mention.format()))
|
||||||
self.m.status_reblog(mention.id)
|
self.m.status_reblog(mention.id)
|
||||||
|
|
||||||
|
@ -128,13 +126,8 @@ class RetootBot(object):
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
import ticketfrei
|
|
||||||
config = ticketfrei.get_config()
|
config = ticketfrei.get_config()
|
||||||
|
|
||||||
fh = logging.FileHandler(config['logging']['logpath'])
|
|
||||||
fh.setLevel(logging.DEBUG)
|
|
||||||
logger.addHandler(fh)
|
|
||||||
|
|
||||||
trigger = trigger.Trigger(config)
|
trigger = trigger.Trigger(config)
|
||||||
bot = RetootBot(config)
|
bot = RetootBot(config)
|
||||||
|
|
||||||
|
@ -145,11 +138,11 @@ if __name__ == '__main__':
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
print("Good bye. Remember to restart the bot!")
|
print("Good bye. Remember to restart the bot!")
|
||||||
except:
|
except:
|
||||||
logger.error('Shutdown', exc_info=True)
|
bot.logger.error('Shutdown', exc_info=True)
|
||||||
try:
|
try:
|
||||||
mailer = sendmail.Mailer(config)
|
mailer = sendmail.Mailer(config)
|
||||||
mailer.send('', config['mail']['contact'],
|
mailer.send('', config['mail']['contact'],
|
||||||
'Ticketfrei Crash Report',
|
'Ticketfrei Crash Report',
|
||||||
attachment=config['logging']['logpath'])
|
attachment=config['logging']['logpath'])
|
||||||
except:
|
except:
|
||||||
logger.error('Mail sending failed', exc_info=True)
|
bot.logger.error('Mail sending failed', exc_info=True)
|
||||||
|
|
|
@ -6,12 +6,9 @@ import requests
|
||||||
import trigger
|
import trigger
|
||||||
from time import sleep
|
from time import sleep
|
||||||
import report
|
import report
|
||||||
import logging
|
import ticketfrei
|
||||||
import sendmail
|
import sendmail
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class RetweetBot(object):
|
class RetweetBot(object):
|
||||||
"""
|
"""
|
||||||
This bot retweets all tweets which
|
This bot retweets all tweets which
|
||||||
|
@ -32,6 +29,7 @@ class RetweetBot(object):
|
||||||
Tweet
|
Tweet
|
||||||
"""
|
"""
|
||||||
self.config = config
|
self.config = config
|
||||||
|
self.logger = ticketfrei.get_logger(config)
|
||||||
|
|
||||||
# initialize API access
|
# initialize API access
|
||||||
keys = self.get_api_keys()
|
keys = self.get_api_keys()
|
||||||
|
@ -120,13 +118,13 @@ class RetweetBot(object):
|
||||||
self.save_last()
|
self.save_last()
|
||||||
return reports
|
return reports
|
||||||
except tweepy.RateLimitError:
|
except tweepy.RateLimitError:
|
||||||
logger.error("Twitter API Error: Rate Limit Exceeded", exc_info=True)
|
self.logger.error("Twitter API Error: Rate Limit Exceeded", exc_info=True)
|
||||||
self.waitcounter += 60*15 + 1
|
self.waitcounter += 60*15 + 1
|
||||||
except requests.exceptions.ConnectionError:
|
except requests.exceptions.ConnectionError:
|
||||||
logger.error("Twitter API Error: Bad Connection", exc_info=True)
|
self.logger.error("Twitter API Error: Bad Connection", exc_info=True)
|
||||||
self.waitcounter += 10
|
self.waitcounter += 10
|
||||||
except tweepy.TweepError:
|
except tweepy.TweepError:
|
||||||
logger.error("Twitter API Error: General Error", exc_info=True)
|
self.logger.error("Twitter API Error: General Error", exc_info=True)
|
||||||
return []
|
return []
|
||||||
|
|
||||||
def repost(self, status):
|
def repost(self, status):
|
||||||
|
@ -139,17 +137,17 @@ class RetweetBot(object):
|
||||||
while 1:
|
while 1:
|
||||||
try:
|
try:
|
||||||
self.api.retweet(status.id)
|
self.api.retweet(status.id)
|
||||||
logger.info("Retweeted: " + status.format())
|
self.logger.info("Retweeted: " + status.format())
|
||||||
if status.id > self.last_mention:
|
if status.id > self.last_mention:
|
||||||
self.last_mention = status.id
|
self.last_mention = status.id
|
||||||
self.save_last()
|
self.save_last()
|
||||||
return status.format()
|
return status.format()
|
||||||
except requests.exceptions.ConnectionError:
|
except requests.exceptions.ConnectionError:
|
||||||
logger.error("Twitter API Error: Bad Connection", exc_info=True)
|
self.logger.error("Twitter API Error: Bad Connection", exc_info=True)
|
||||||
sleep(10)
|
sleep(10)
|
||||||
# maybe one day we get rid of this error:
|
# maybe one day we get rid of this error:
|
||||||
except tweepy.TweepError:
|
except tweepy.TweepError:
|
||||||
logger.error("Twitter Error", exc_info=True)
|
self.logger.error("Twitter Error", exc_info=True)
|
||||||
if status.id > self.last_mention:
|
if status.id > self.last_mention:
|
||||||
self.last_mention = status.id
|
self.last_mention = status.id
|
||||||
self.save_last()
|
self.save_last()
|
||||||
|
@ -169,7 +167,7 @@ class RetweetBot(object):
|
||||||
self.api.update_status(status=text)
|
self.api.update_status(status=text)
|
||||||
return
|
return
|
||||||
except requests.exceptions.ConnectionError:
|
except requests.exceptions.ConnectionError:
|
||||||
logger.error("Twitter API Error: Bad Connection", exc_info=True)
|
self.logger.error("Twitter API Error: Bad Connection", exc_info=True)
|
||||||
sleep(10)
|
sleep(10)
|
||||||
|
|
||||||
def flow(self, trigger, to_tweet=()):
|
def flow(self, trigger, to_tweet=()):
|
||||||
|
@ -202,14 +200,8 @@ class RetweetBot(object):
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
import ticketfrei
|
|
||||||
config = ticketfrei.get_config()
|
config = ticketfrei.get_config()
|
||||||
|
|
||||||
# set log file
|
|
||||||
fh = logging.FileHandler(config['logging']['logpath'])
|
|
||||||
fh.setLevel(logging.DEBUG)
|
|
||||||
logger.addHandler(fh)
|
|
||||||
|
|
||||||
# initialise trigger
|
# initialise trigger
|
||||||
trigger = trigger.Trigger(config)
|
trigger = trigger.Trigger(config)
|
||||||
|
|
||||||
|
@ -224,7 +216,7 @@ if __name__ == "__main__":
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
print("Good bye. Remember to restart the bot!")
|
print("Good bye. Remember to restart the bot!")
|
||||||
except:
|
except:
|
||||||
logger.error('Shutdown', exc_info=True)
|
bot.logger.error('Shutdown', exc_info=True)
|
||||||
bot.save_last()
|
bot.save_last()
|
||||||
try:
|
try:
|
||||||
mailer = sendmail.Mailer(config)
|
mailer = sendmail.Mailer(config)
|
||||||
|
@ -232,4 +224,4 @@ if __name__ == "__main__":
|
||||||
'Ticketfrei Crash Report',
|
'Ticketfrei Crash Report',
|
||||||
attachment=config['logging']['logpath'])
|
attachment=config['logging']['logpath'])
|
||||||
except:
|
except:
|
||||||
logger.error('Mail sending failed', exc_info=True)
|
bot.logger.error('Mail sending failed', exc_info=True)
|
||||||
|
|
|
@ -10,10 +10,10 @@ from retweetbot import RetweetBot
|
||||||
from mailbot import Mailbot
|
from mailbot import Mailbot
|
||||||
from trigger import Trigger
|
from trigger import Trigger
|
||||||
|
|
||||||
def set_logfile(config):
|
def get_logger(config):
|
||||||
logfile = config['logging']['logpath']
|
logpath = config['logging']['logpath']
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
fh = logging.FileHandler(logfile)
|
fh = logging.FileHandler(logpath)
|
||||||
fh.setLevel(logging.DEBUG)
|
fh.setLevel(logging.DEBUG)
|
||||||
logger.addHandler(fh)
|
logger.addHandler(fh)
|
||||||
return logger
|
return logger
|
||||||
|
@ -25,11 +25,8 @@ def get_config():
|
||||||
return config
|
return config
|
||||||
|
|
||||||
def run():
|
def run():
|
||||||
# get config
|
|
||||||
config = get_config()
|
config = get_config()
|
||||||
|
logger = get_logger(config)
|
||||||
# set log file
|
|
||||||
logger = set_logfile(config)
|
|
||||||
|
|
||||||
# set trigger
|
# set trigger
|
||||||
trigger = Trigger(config)
|
trigger = Trigger(config)
|
||||||
|
@ -63,8 +60,8 @@ def run():
|
||||||
logger.error('Shutdown', exc_info=True)
|
logger.error('Shutdown', exc_info=True)
|
||||||
for bot in bots:
|
for bot in bots:
|
||||||
bot.save_last()
|
bot.save_last()
|
||||||
|
mailer = sendmail.Mailer(config)
|
||||||
try:
|
try:
|
||||||
mailer = sendmail.Mailer(config)
|
|
||||||
mailer.send('', config['mail']['contact'],
|
mailer.send('', config['mail']['contact'],
|
||||||
'Ticketfrei Crash Report',
|
'Ticketfrei Crash Report',
|
||||||
attachment=config['logging']['logpath'])
|
attachment=config['logging']['logpath'])
|
||||||
|
|
Loading…
Reference in a new issue