/** * Reads a "mailbox" argument from the request. Not implemented *exactly* as per spec, * since a quoted or literal "inbox" still yeilds "INBOX" * (ie still case-insensitive if quoted or literal). I think this makes sense. * <p/> * mailbox ::= "INBOX" / astring * ;; INBOX is case-insensitive. All case variants of * ;; INBOX (e.g. "iNbOx") MUST be interpreted as INBOX * ;; not as an astring. */ public String mailbox(ImapRequestLineReader request) throws ProtocolException { String mailbox = astring(request); if (mailbox.equalsIgnoreCase(ImapConstants.INBOX_NAME)) { return ImapConstants.INBOX_NAME; } else { return BASE64MailboxDecoder.decode(mailbox); } }
/** * @see CommandTemplate#doProcess */ @Override protected void doProcess(ImapRequestLineReader request, ImapResponse response, ImapSession session) throws ProtocolException { String authType = parser.astring(request); parser.endLine(request); response.commandFailed(this, "Unsupported authentication mechanism '" + authType + "'"); } }
/** * @see CommandTemplate#doProcess */ @Override protected void doProcess(ImapRequestLineReader request, ImapResponse response, ImapSession session) throws ProtocolException { String userid = parser.astring(request); String password = parser.astring(request); parser.endLine(request); if (session.getUserManager().test(userid, password)) { GreenMailUser user = session.getUserManager().getUser(userid); session.setAuthenticated(user); response.commandComplete(this); } else { response.commandFailed(this, "Invalid login/password for user id "+userid); } } }
@Override protected void doProcess(final ImapRequestLineReader request, final ImapResponse response, final ImapSession session) { if(!session.getHost().getStore().isQuotaSupported()) { response.commandFailed(this,"Quota is not supported. Activate quota capability first"); } try { String root = parser.mailbox(request); Quota quota = new Quota(root); parser.consumeChar(request, ' '); parser.consumeChar(request, '('); quota.setResourceLimit(parser.astring(request), parser.consumeLong(request)); char c =request.nextWordChar(); if(')' != c) { quota.setResourceLimit(parser.astring(request), parser.consumeLong(request)); } parser.consumeChar(request, ')'); session.getHost().getStore().setQuota( quota, session.getUser().getQualifiedMailboxName()); response.commandComplete(this); } catch (ProtocolException e) { response.commandFailed(this, "Can not parse command"+e.getMessage()); } } }