On UserLogout, the webmail extension tries to get an IMAPconnector object (which tries to connect with an IMAP server). When the configuration is invalid, this operation fails.

Catching exceptions on strategic places has solved the problems.
This commit is contained in:
tonio
2010-11-27 10:34:09 +01:00
parent 50af9c4355
commit 0973e0f260
4 changed files with 39 additions and 34 deletions
+2 -1
View File
@@ -6,6 +6,7 @@ sys.setdefaultencoding("utf-8")
import re
import time
import socket
import imaplib
import ssl
from datetime import datetime, timedelta
@@ -176,7 +177,7 @@ class IMAPconnector(object):
self.m = imaplib.IMAP4_SSL(self.address, self.port)
else:
self.m = imaplib.IMAP4(self.address, self.port)
except (imaplib.IMAP4.error, ssl.SSLError), error:
except (socket.error, imaplib.IMAP4.error, ssl.SSLError), error:
return False, _("Connection to IMAP server failed, check your configuration")
try:
self.m.login(user, passwd)
+7 -3
View File
@@ -95,6 +95,10 @@ def userlogout(**kwargs):
if kwargs["request"].user.id == 1:
return
m = IMAPconnector(user=kwargs["request"].user.username,
password=kwargs["request"].session["password"])
m.logout()
try:
m = IMAPconnector(user=kwargs["request"].user.username,
password=kwargs["request"].session["password"])
except Exception, e:
pass
else:
m.logout()
+22 -22
View File
@@ -26,7 +26,7 @@
}
$$("a[name=loadfolder]").addEvent("click", foldercallback);
$$("a[name=compose]").addEvent("click", loadCompose);
}
};
select = function(obj) {
$$("a[name=loadfolder]").each(function(item) {
@@ -43,7 +43,7 @@
item.setStyle("background", "url('{{ MEDIA_URL }}pics/folder-open.png') no-repeat");
});
});
}
};
register_callback("viewmail", function(resp) {
wm_updatelisting(resp, "hidden");
@@ -114,7 +114,7 @@
files2upload.erase(attachment);
litag.destroy();
}
};
$("upload_input").addEvent("change", function(evt) {
var atag = new Element("a").set("name", "delete_attachment");
@@ -127,31 +127,31 @@
litag.inject($("files2upload"));
atag.addEvent("click", delete_attachment);
});
}
};
loadCompose = function(event) {
event.stop();
current_anchor.baseurl("compose").update();
}
};
register_callback("compose", compose_callback);
reply = function(event) {
event.stop();
location.hash += event.target.get("href");
}
};
register_callback("reply", compose_callback);
replyall = function(event) {
event.stop();
location.hash += event.target.get("href") + "?all=1";
}
};
register_callback("replyall", compose_callback);
forward = function(event) {
event.stop();
location.hash += event.target.get("href");
}
};
register_callback("forward", compose_callback);
var rtimer = null;
var rtimer = null;
window.addEvent("pageRefresh", function() {
$clear(rtimer);
@@ -170,7 +170,7 @@
infobox.info('{% trans "Done" %}');
infobox.hide(1);
}}).get();
}
};
loadFolder = function(event, obj) {
event.stop();
@@ -179,7 +179,7 @@
}
current_anchor.parse_string(gethref(obj), true).setparams(navparams);
current_anchor.update();
}
};
register_callback("folder", function(resp) {
wm_updatelisting(resp);
@@ -265,7 +265,7 @@
selectedRows.include(tr);
tr.setStyle("position", "relative");
makeRowDraggable(tr);
}
};
unselectRow = function(tr, remove) {
tr.removeClass("selected");
@@ -273,7 +273,7 @@
selectedRows.erase(tr);
}
tr.setStyle("position", "static");
}
};
makeRowDraggable = function(item) {
new Drag.Move(item, {
@@ -295,12 +295,12 @@
"padding" : "5px",
"text-align" : "center",
"height" : "25px",
"border" : "1px solid #333",
"border" : "1px solid #333",
"background" : "white",
"z-index" : 3})
.setPosition(item.getPosition())
.inject(document.body);
block.set("html", "Moving " + selectedRows.length + " messages");
block.set("html", "Moving " + selectedRows.length + " messages");
this.oldelement = this.element;
this.element = block;
},
@@ -334,14 +334,14 @@
profile: "gray",
spinner: true
});
new Request.JSON({url : url,
new Request.JSON({url : url,
onSuccess : function(response) {
get_callback("folder")(response);
infobox.info(gettext("Done"));
infobox.hide(1);
}
}).get(params);
}
};
buildmarkrequest = function(evt) {
evt.stop();
@@ -353,7 +353,7 @@
ids.include(item.get("id"));
});
simple_request(evt.target.get("href"), {ids : ids.join()});
}
};
$$("a[name=mark-read]").addEvent("click", buildmarkrequest);
$$("a[name=mark-unread]").addEvent("click", buildmarkrequest);
@@ -370,7 +370,7 @@
selectRow(item);
});
} else {
$$("tbody>tr").each(function(item) {
$$("tbody>tr").each(function(item) {
unselectRow(item, false);
});
selectedRows.empty();
@@ -382,7 +382,7 @@
$$("th[class*=sortable]").addEvent("click", function(evt) {
var tmp = "?";
var order = (navparams.has("order")) ? navparams.get("order") : "";
if (order == "") {
order = current_anchor.getparam("order");
}
@@ -400,7 +400,7 @@
foldercallback = function(event) {
select(event.target);
loadFolder(event, event.target);
}
};
{% endblock %}
{% block middletitle %}{% trans "Webmail" %}{% endblock %}
+8 -8
View File
@@ -77,14 +77,14 @@ def folder(request, name, updatenav=True):
@login_required
@is_not_localadmin()
def index(request):
#try:
navp = request.session.has_key("navparams") \
and request.session["navparams"] or {}
lst = ImapListing(request.user, request.session["password"],
baseurl="INBOX", navparams=navp, folder="INBOX",
empty=True)
#except Exception, exp:
# return _render_error(request, user_context={"error" : exp})
try:
navp = request.session.has_key("navparams") \
and request.session["navparams"] or {}
lst = ImapListing(request.user, request.session["password"],
baseurl="INBOX", navparams=navp, folder="INBOX",
empty=True)
except Exception, exp:
return _render_error(request, user_context={"error" : exp})
return lst.render(request)
def fetchmail(request, folder, mail_id, all=False):