Ryan Lane has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/53287


Change subject: Catch disconnected irc server exception
......................................................................

Catch disconnected irc server exception

Change-Id: I508f9f154f21d8ef0eac9017a465933f915037d4
---
M adminlogbot.py
M debian/changelog
2 files changed, 71 insertions(+), 38 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/debs/adminbot 
refs/changes/87/53287/1

diff --git a/adminlogbot.py b/adminlogbot.py
index 07a569e..bd827cd 100755
--- a/adminlogbot.py
+++ b/adminlogbot.py
@@ -22,8 +22,11 @@
                self.irc = irclib.IRC()
 
        def on_connect(self, con, event):
-               con.privmsg(self.config.nickserv,
-                               "identify " + self.config.nick + " " + 
self.config.nick_password)
+               try:
+                       con.privmsg(self.config.nickserv,
+                                       "identify " + self.config.nick + " " + 
self.config.nick_password)
+               except irclib.ServerNotConnectedError, e:
+                       logging.debug("Error identifying user")
                logging.debug("'%s' registering with nick '%s'." %
                                (self.name, self.config.nick))
                time.sleep(1)
@@ -31,8 +34,11 @@
                        logging.debug("'%s' joining '%s'." % (self.name, 
target))
                        con.join(target)
                if con.get_nickname() != self.config.nick:
-                       con.privmsg('nickserv', 'ghost %s %s' %
-                                       (self.config.nick, 
self.config.nick_password))
+                       try:
+                               con.privmsg('nickserv', 'ghost %s %s' %
+                                               (self.config.nick, 
self.config.nick_password))
+                       except irclib.ServerNotConnectedError, e:
+                               logging.debug("Error ghosting user")
 
        def on_quit(self, con, event):
                source = irclib.nm_to_n(event.source())
@@ -42,8 +48,11 @@
        def switch_nick(self, con, event):
                con.nick(con.get_nickname() + "_")
                logging.debug("'%s' switching nick." % self.name)
-               con.privmsg('nickserv', 'ghost %s %s' %
-                               (self.config.nick, self.config.nick_password))
+               try:
+                       con.privmsg('nickserv', 'ghost %s %s' %
+                                       (self.config.nick, 
self.config.nick_password))
+               except irclib.ServerNotConnectedError, e:
+                       logging.debug("Error ghosting user")
 
        def get_cloak(self, source):
                if re.search("/", source) and re.search("@", source):
@@ -115,9 +124,12 @@
                                                "Messages are logged to %s." % 
self.config.log_url)
                                self.server.privmsg(event.target(),
                                                "To log a message, type !log 
<msg>.")
-                       except:
-                               self.server.privmsg(event.target(),
-                                               "To log a message, type !log 
<msg>.")
+                       except Exception:
+                               try:
+                                       self.server.privmsg(event.target(),
+                                                       "To log a message, type 
!log <msg>.")
+                               except irclib.ServerNotConnectedError, e:
+                                       logging.debug("Server connection error 
when sending message")
                elif line.lower().startswith("!log "):
                        logging.debug("'%s' got '%s'; Attempting to log." % 
(self.name, line))
                        if self.config.check_users:
@@ -141,27 +153,33 @@
                                if username:
                                        author = "[[" + username + "]]"
                                else:
-                                       if self.config.required_users_mode == 
"warn":
-                                               
self.server.privmsg(event.target(),
-                                               "Not a trusted nick or cloak. 
This is just a warning, for now."
-                                               " Please add your nick or cloak 
added"
-                                               " to the trust list or your 
user page.")
-                                       if self.config.required_users_mode == 
"error":
-                                               
self.server.privmsg(event.target(),
-                                               "Not a trusted nick or cloak. 
Not logging."
-                                               " Please add your nick or cloak 
added"
-                                               " to the trust list or your 
user page.")
-                                               return
+                                       try:
+                                               if 
self.config.required_users_mode == "warn":
+                                                       
self.server.privmsg(event.target(),
+                                                       "Not a trusted nick or 
cloak. This is just a warning, for now."
+                                                       " Please add your nick 
or cloak added"
+                                                       " to the trust list or 
your user page.")
+                                               if 
self.config.required_users_mode == "error":
+                                                       
self.server.privmsg(event.target(),
+                                                       "Not a trusted nick or 
cloak. Not logging."
+                                                       " Please add your nick 
or cloak added"
+                                                       " to the trust list or 
your user page.")
+                                                       return
+                                       except irclib.ServerNotConnectedError, 
e:
+                                               logging.debug("Server 
connection error when sending message")
                        if self.config.enable_projects:
                                arr = line.split(" ", 2)
-                               if len(arr) < 2:
-                                       self.server.privmsg(event.target(),
-                                                       "Project not found, 
O.o. Try !log <project> <message> next time.")
-                                       return
-                               if len(arr) < 3:
-                                       self.server.privmsg(event.target(),
-                                                       "Message missing. 
Nothing logged.")
-                                       return
+                               try:
+                                       if len(arr) < 2:
+                                               
self.server.privmsg(event.target(),
+                                                               "Project not 
found, O.o. Try !log <project> <message> next time.")
+                                               return
+                                       if len(arr) < 3:
+                                               
self.server.privmsg(event.target(),
+                                                               "Message 
missing. Nothing logged.")
+                                               return
+                               except irclib.ServerNotConnectedError, e:
+                                       logging.debug("Server connection error 
when sending message")
                                project = arr[1]
                                cache_filename = 
'/var/lib/adminbot/%s-project.cache' % self.name
                                cache_stale = self.is_stale(cache_filename)
@@ -187,17 +205,26 @@
                                                        
projects.append(obj[1]["cn"][0])
                                                
project_cache_file.write(','.join(projects))
                                        except Exception:
-                                               
self.server.privmsg(event.target(),
-                                                               "Error reading 
project list from LDAP.")
+                                               try:
+                                                       
self.server.privmsg(event.target(),
+                                                                       "Error 
reading project list from LDAP.")
+                                               except 
irclib.ServerNotConnectedError, e:
+                                                       logging.debug("Server 
connection error when sending message")
                                if project not in projects:
-                                       self.server.privmsg(event.target(),
-                                                       project + " is not a 
valid project.")
+                                       try:
+                                               
self.server.privmsg(event.target(),
+                                                               project + " is 
not a valid project.")
+                                       except irclib.ServerNotConnectedError, 
e:
+                                               logging.debug("Server 
connection error when sending message")
                                        return
                                message = arr[2]
                        else:
                                arr = line.split(" ", 1)
                                if len(arr) < 2:
-                                       self.server.privmsg(event.target(), 
"Message missing. Nothing logged.")
+                                       try:
+                                               
self.server.privmsg(event.target(), "Message missing. Nothing logged.")
+                                       except irclib.ServerNotConnectedError, 
e:
+                                               logging.debug("Server 
connection error when sending message")
                                        return
                                project = ""
                                message = arr[1]
@@ -207,9 +234,11 @@
                                        title = self.config.title_map[author]
                                else:
                                        title = "Master"
-                               self.server.privmsg(event.target(), "Logged the 
message, %s" % title)
-                       except:
-                               print sys.exc_info()
+                               try:
+                                       self.server.privmsg(event.target(), 
"Logged the message, %s" % title)
+                               except irclib.ServerNotConnectedError, e:
+                                       logging.debug("Server connection error 
when sending message")
+                       except Exception:
                                logging.warning(sys.exc_info)
 
        def connect(self):
@@ -252,7 +281,6 @@
                        enable_projects = True
 
 if not bots:
-       print "No config files found, so nothing to do."
        logging.error("No config files found, so nothing to do.")
        sys.exit(1)
 
@@ -272,5 +300,4 @@
                try:
                        bot.irc.process_once()
                except:
-                       print sys.exc_info()
                        logging.warning(sys.exc_info)
diff --git a/debian/changelog b/debian/changelog
index e7200de..73922ca 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+adminbot (1.6.3) lucid-wikimedia; urgency=low
+
+  * Catch exception for talking to a disconnected server
+
+ -- Ryan Lane <[email protected]>  Mon, 11 March 2013 22:53:15 +0000
+
 adminbot (1.6.2) lucid-wikimedia; urgency=low
 
   * Make !log matching case insensitive

-- 
To view, visit https://gerrit.wikimedia.org/r/53287
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I508f9f154f21d8ef0eac9017a465933f915037d4
Gerrit-PatchSet: 1
Gerrit-Project: operations/debs/adminbot
Gerrit-Branch: master
Gerrit-Owner: Ryan Lane <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to