diff --git a/extensions/sievefilters/lib.py b/extensions/sievefilters/lib.py index d67d34852..a9f3bdcf9 100644 --- a/extensions/sievefilters/lib.py +++ b/extensions/sievefilters/lib.py @@ -31,14 +31,19 @@ class SieveClient(object): except Error, e: return False, _("Connection to MANAGESIEVE server failed, check your configuration") return True, None + + def logout(self): + self.msc.logout() + self.msc = None def refresh(self, user, password): - try: - self.msc.capability() - except Error, e: - pass - else: - return + if self.msc is not None: + try: + self.msc.capability() + except Error, e: + pass + else: + return try: ret, msg = self.login(user, password) except Error, e: diff --git a/extensions/sievefilters/main.py b/extensions/sievefilters/main.py index 996bde87d..d43c0e1a1 100644 --- a/extensions/sievefilters/main.py +++ b/extensions/sievefilters/main.py @@ -7,6 +7,7 @@ from sievelib.managesieve import SUPPORTED_AUTH_MECHS def init(): events.register("UserMenuDisplay", menu) + events.register("UserLogout", userlogout) parameters.register_admin("SERVER", type="string", deflt="127.0.0.1", @@ -55,3 +56,16 @@ def menu(**kwargs): "url" : reverse(views.index), "img" : static_url("pics/filters.png")} ] + +def userlogout(**kwargs): + from lib import SieveClient + + if kwargs["request"].user.id == 1: + return + try: + sc = SieveClient(user=kwargs["request"].user.username, + password=kwargs["request"].session["password"]) + except Exception, e: + pass + else: + sc.logout()