From 31f306a50189a2b9656f0e1966dc406c20402aca Mon Sep 17 00:00:00 2001 From: Vincent Le Gallic Date: Mon, 30 Jul 2012 18:35:49 +0200 Subject: [PATCH] Config reloadable aussi en pubmsg et SIGHUP --- config.py | 1 + saturnin.py | 22 ++++++++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/config.py b/config.py index 654aeff..8aa361c 100644 --- a/config.py +++ b/config.py @@ -13,6 +13,7 @@ stay_channels=["#flood", "#bot"] # liste des chans que le bot ne quitte pas, mê quiet_channels=[] # liste des chans sur lesquels le bot ne parle pas play_channels = ["#flood"] +report_bugs_to = ["[20-100]"] # les logs logfile_template="saturnin.%s.log" # fichier de log (%s est remplacé par le nom du serveur) diff --git a/saturnin.py b/saturnin.py index 87e5baf..7cf5222 100755 --- a/saturnin.py +++ b/saturnin.py @@ -355,8 +355,8 @@ class Saturnin(ircbot.SingleServerIRCBot): notunderstood=True elif cmd=="reload": if auteur in self.ops: - reload(config) - serv.privmsg(auteur,"done") + self.reload(auteur) + log(self.serveur,"priv",auteur," ".join(message)+"[successful]") else: notunderstood=True elif cmd=="score": @@ -467,6 +467,10 @@ class Saturnin(ircbot.SingleServerIRCBot): else: serv.privmsg(channel,("%s: %s"%(auteur,random.choice(config.quit_fail_messages))).encode("utf8")) log(self.serveur,channel,auteur,message+"[failed]") + elif cmd == "reload": + if auteur in self.ops: + log(self.serveur, channel, auteur, message+"[successful]") + self.reload(channel) elif cmd in ["part","leave","dégage","va-t-en","tut'tiresailleurs,c'estmesgalets"]: if auteur in self.ops and (not (channel in self.stay_channels) or auteur in self.overops): @@ -583,6 +587,16 @@ class Saturnin(ircbot.SingleServerIRCBot): return self.serv.get_nickname() nick=property(_getnick) + def reload(self, auteur=None): + reload(config) + if auteur in [None, "SIGHUP"]: + towrite = "Config reloaded" + " (SIGHUP received)"*(auteur == "SIGHUP") + for to in config.report_bugs_to: + self.serv.privmsg(to, towrite) + log(self.serveur, towrite) + else: + self.serv.privmsg(auteur,"Config reloaded") + def start_as_daemon(self, outfile): sys.stderr = Logger(outfile) self.start() @@ -634,6 +648,10 @@ if __name__=="__main__": print "Server Unknown : %s"%(serveur) exit(404) saturnin = Saturnin(serveur,debug) + # Si on reçoit un SIGHUP, on reload la config + def sighup_handler(signum, frame): + saturnin.reload("SIGHUP") + signal.signal(signal.SIGHUP, sighup_handler) if daemon: child_pid = os.fork() if child_pid == 0: -- 2.39.2