|
@@ -71,6 +71,8 @@ class ThreadingTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
|
|
|
def setup(bot):
|
|
|
global msgserver, peers_repo, alfred_method
|
|
|
|
|
|
+ bot.memory['ffpb_in_setup'] = True
|
|
|
+
|
|
|
# open highscores file (backed to filesystem)
|
|
|
if 'highscores' in bot.memory and not bot.memory['highscores'] is None:
|
|
|
bot.memory['highscores'].close()
|
|
@@ -83,8 +85,12 @@ def setup(bot):
|
|
|
highscores['clients_ts'] = time.time()
|
|
|
bot.memory['highscores'] = highscores
|
|
|
|
|
|
+ seen_nodes = shelve.open('nodes.seen', writeback=True)
|
|
|
+ bot.memory['seen_nodes'] = seen_nodes
|
|
|
+
|
|
|
# no need to configure anything else if the ffpb config section is missing
|
|
|
if not bot.config.has_section('ffpb'):
|
|
|
+ bot.memory['ffpb_in_setup'] = False
|
|
|
return
|
|
|
|
|
|
# open the git repository containing the peers files
|
|
@@ -112,6 +118,8 @@ def setup(bot):
|
|
|
alfred_method = bot.config.ffpb.alfred_method
|
|
|
ffpb_updatealfred(bot)
|
|
|
|
|
|
+ bot.memory['ffpb_in_setup'] = False
|
|
|
+
|
|
|
def shutdown(bot):
|
|
|
global msgserver
|
|
|
|
|
@@ -121,6 +129,12 @@ def shutdown(bot):
|
|
|
bot.memory['highscores'].close()
|
|
|
del(bot.memory['highscores'])
|
|
|
|
|
|
+ # store seen_nodes
|
|
|
+ if 'seen_nodes' in bot.memory and bot.memory['seen_nodes'] != None:
|
|
|
+ bot.memory['seen_nodes'].close()
|
|
|
+ bot.memory['seen_nodes'] = None
|
|
|
+ del(bot.memory['seen_nodes'])
|
|
|
+
|
|
|
# shut down messaging server
|
|
|
if not msgserver is None:
|
|
|
msgserver.shutdown()
|
|
@@ -320,6 +334,24 @@ def ffpb_updatealfred(bot):
|
|
|
bot.memory['alfred_data'] = alfred_data
|
|
|
bot.memory['alfred_update'] = updated
|
|
|
|
|
|
+ seen_nodes = bot.memory['seen_nodes'] if 'seen_nodes' in bot.memory else None
|
|
|
+ if not seen_nodes is None:
|
|
|
+ new = []
|
|
|
+ for nodeid in alfred_data:
|
|
|
+ nodeid = str(nodeid)
|
|
|
+ if not nodeid in seen_nodes:
|
|
|
+ seen_nodes[nodeid] = updated
|
|
|
+ new.append((nodeid,alfred_data[nodeid]['hostname']))
|
|
|
+ print('First time seen: ' + str(nodeid))
|
|
|
+ if len(new) > 0 and not bot.memory['ffpb_in_setup']:
|
|
|
+ action_msg = 'bemerkt '
|
|
|
+ if len(new) == 1:
|
|
|
+ action_msg += 'den neuen Knoten \'' + str(new[0][1]) + '\''
|
|
|
+ else:
|
|
|
+ action_msg += 'die neuen Knoten \'' + '\', \''.join([ str(x[1]) for x in new[0:-1] ]) + '\' und \'' + str(new[-1][1]) + '\''
|
|
|
+ action_target = bot.config.ffpb.msg_target
|
|
|
+ bot.msg(action_target, '\x01ACTION %s\x01' % action_msg)
|
|
|
+
|
|
|
@willie.module.commands('debug-alfred')
|
|
|
def ffpb_debug_alfred(bot, trigger):
|
|
|
"""Zeige Stand der Alfred-Daten an."""
|