JAMES-1838 Deny shared mailbox accesses should display a fancy message
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/0e1c37b5 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/0e1c37b5 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/0e1c37b5 Branch: refs/heads/master Commit: 0e1c37b5ccdc278e534694572e90946c5a6ca1bd Parents: 1bafdc1 Author: Benoit Tellier <[email protected]> Authored: Wed Oct 19 18:00:50 2016 +0200 Committer: Benoit Tellier <[email protected]> Committed: Fri Oct 21 17:01:12 2016 +0200 ---------------------------------------------------------------------- .../imap/api/display/HumanReadableText.java | 2 ++ .../processor/AbstractMailboxProcessor.java | 21 ++++++++++++-------- .../base/AbstractChainedProcessor.java | 1 + 3 files changed, 16 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/0e1c37b5/protocols/imap/src/main/java/org/apache/james/imap/api/display/HumanReadableText.java ---------------------------------------------------------------------- diff --git a/protocols/imap/src/main/java/org/apache/james/imap/api/display/HumanReadableText.java b/protocols/imap/src/main/java/org/apache/james/imap/api/display/HumanReadableText.java index 3f181ba..8ae4cd0 100644 --- a/protocols/imap/src/main/java/org/apache/james/imap/api/display/HumanReadableText.java +++ b/protocols/imap/src/main/java/org/apache/james/imap/api/display/HumanReadableText.java @@ -158,6 +158,8 @@ public class HumanReadableText { public static final HumanReadableText QRESYNC_CLOSED = new HumanReadableText("org.apache.james.imap.QRESYNC_CLOSED", ""); public static final HumanReadableText QRESYNC_VANISHED_WITHOUT_CHANGEDSINCE = new HumanReadableText("org.apache.james.imap.QRESYNC_VANISHED_WITHOUT_CHANGEDSINCE", "VANISHED used without CHANGEDSINCE"); + public static final HumanReadableText DENIED_SHARED_MAILBOX = new HumanReadableText("org.apache.james.imap.DENIED_SHARED_MAILBOX", "You can not access a mailbox that does not belong to you"); + public static final String UNSUFFICIENT_RIGHTS_DEFAULT_VALUE = "You need the {0} right to perform command {1} on mailbox {2}."; public static final String UNSUFFICIENT_RIGHTS_KEY = "org.apache.james.imap.UNSUFFICIENT_RIGHTS"; http://git-wip-us.apache.org/repos/asf/james-project/blob/0e1c37b5/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java ---------------------------------------------------------------------- diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java index 2663b56..3c3d3ad 100644 --- a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java +++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java @@ -40,6 +40,7 @@ import org.apache.james.imap.api.message.response.StatusResponseFactory; import org.apache.james.imap.api.process.ImapProcessor; import org.apache.james.imap.api.process.ImapSession; import org.apache.james.imap.api.process.SelectedMailbox; +import org.apache.james.imap.main.DeniedAccessOnSharedMailboxException; import org.apache.james.imap.message.response.ExistsResponse; import org.apache.james.imap.message.response.ExpungeResponse; import org.apache.james.imap.message.response.FetchResponse; @@ -56,7 +57,6 @@ import org.apache.james.mailbox.MessageManager.MetaData.FetchGroup; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.exception.MessageRangeException; import org.apache.james.mailbox.model.FetchGroupImpl; -import org.apache.james.mailbox.model.MailboxConstants; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.model.MessageRange; import org.apache.james.mailbox.model.MessageRange.Type; @@ -77,6 +77,7 @@ abstract public class AbstractMailboxProcessor<M extends ImapRequest> extends Ab this.factory = factory; } + @Override protected final void doProcess(M acceptableMessage, Responder responder, ImapSession session) { process(acceptableMessage, responder, session); } @@ -88,17 +89,21 @@ abstract public class AbstractMailboxProcessor<M extends ImapRequest> extends Ab } final void doProcess(M message, ImapCommand command, String tag, Responder responder, ImapSession session) { - if (!command.validForState(session.getState())) { - ImapResponseMessage response = factory.taggedNo(tag, command, HumanReadableText.INVALID_COMMAND); - responder.respond(response); + try { + if (!command.validForState(session.getState())) { + ImapResponseMessage response = factory.taggedNo(tag, command, HumanReadableText.INVALID_COMMAND); + responder.respond(response); - } else { - getMailboxManager().startProcessingRequest(ImapSessionUtils.getMailboxSession(session)); + } else { + getMailboxManager().startProcessingRequest(ImapSessionUtils.getMailboxSession(session)); - doProcess(message, session, tag, command, responder); + doProcess(message, session, tag, command, responder); - getMailboxManager().endProcessingRequest(ImapSessionUtils.getMailboxSession(session)); + getMailboxManager().endProcessingRequest(ImapSessionUtils.getMailboxSession(session)); + } + } catch (DeniedAccessOnSharedMailboxException e) { + no(command, tag, responder, HumanReadableText.DENIED_SHARED_MAILBOX); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/0e1c37b5/protocols/imap/src/main/java/org/apache/james/imap/processor/base/AbstractChainedProcessor.java ---------------------------------------------------------------------- diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/base/AbstractChainedProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/base/AbstractChainedProcessor.java index fa9116d..d403887 100644 --- a/protocols/imap/src/main/java/org/apache/james/imap/processor/base/AbstractChainedProcessor.java +++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/base/AbstractChainedProcessor.java @@ -45,6 +45,7 @@ abstract public class AbstractChainedProcessor<M extends ImapMessage> implements * org.apache.james.imap.api.process.ImapProcessor.Responder, * org.apache.james.imap.api.process.ImapSession) */ + @Override @SuppressWarnings("unchecked") public void process(ImapMessage message, Responder responder, ImapSession session) { final boolean isAcceptable = isAcceptable(message); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
