X-Git-Url: http://gitweb.pimeys.fr/?a=blobdiff_plain;f=saturnin.py;h=f2b432c5f5a9326a9158148e19e7223ce22e83d2;hb=b71142838d23a2e278774665a825e80a11a9bb6f;hp=87e5bafbfb486f0f2b90a1a78edb35b3f5d93528;hpb=5da5a0e80ddf65e5d086fa7918aed11d99cbceff;p=bots%2Fsaturnin.git diff --git a/saturnin.py b/saturnin.py index 87e5baf..f2b432c 100755 --- a/saturnin.py +++ b/saturnin.py @@ -306,6 +306,11 @@ class Saturnin(ircbot.SingleServerIRCBot): log(self.serveur,"priv",auteur," ".join(message)+"[failed]") else: notunderstood=True + elif cmd=="status": + if auteur in self.ops: + serv.privmsg(auteur,"Status : %s" % (self.status, )) + else: + notunderstood=True elif cmd=="spawn": if auteur in self.ops: if len(message)>1: @@ -355,8 +360,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": @@ -445,6 +450,8 @@ class Saturnin(ircbot.SingleServerIRCBot): def on_pubmsg(self, serv, ev): auteur = irclib.nm_to_n(ev.source()) + if re.match(config.ignored_pseudos, auteur): + return channel = ev.target() message = ev.arguments()[0] try: @@ -467,6 +474,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 +594,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() @@ -627,13 +648,18 @@ if __name__=="__main__": if "--quiet" in sys.argv: config.debug_stdout=False serveurs={"a♡":"acoeur.crans.org","acoeur":"acoeur.crans.org","acoeur.crans.org":"acoeur.crans.org", - "irc":"irc.crans.org","crans":"irc.crans.org","irc.crans.org":"irc.crans.org"} + "irc":"irc.crans.org","crans":"irc.crans.org","irc.crans.org":"irc.crans.org", + "local":"localhost"} try: serveur=serveurs[serveur] except KeyError: 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: