#include "__ADMIN_MAILBOX.h" namespace mail { __ADMIN_MAILBOX::__ADMIN_MAILBOX(MailFileSystem &mailFileSystem) : mailFileSystem(mailFileSystem) {} int __ADMIN_MAILBOX::processCommand(coreutils::ZString &request, core::TCPSession &session) { if (request.getList().size() < 2) { session.out << "Usage: mailbox add user@domain password | remove user@domain | list domain" << "\r\n"; return 1; } std::string verb = request[1].str(); std::string error; if (verb == "add") { if (request.getList().size() < 4) { session.out << "Usage: mailbox add user@domain password" << "\r\n"; return 1; } coreutils::ZString mailbox(request[2]); coreutils::ZString password(request[3]); bool ok = mailFileSystem.createMailbox(mailbox, password, error); session.out << (ok ? "OK." : ("Failed: " + error)) << "\r\n"; } else if (verb == "remove") { if (request.getList().size() < 3) { session.out << "Usage: mailbox remove user@domain" << "\r\n"; return 1; } coreutils::ZString mailbox(request[2]); bool ok = mailFileSystem.removeMailbox(mailbox, error); session.out << (ok ? "OK." : ("Failed: " + error)) << "\r\n"; } else if (verb == "list") { if (request.getList().size() < 3) { session.out << "Usage: mailbox list domain" << "\r\n"; return 1; } coreutils::ZString domain(request[2]); for (auto &mailbox : mailFileSystem.listMailboxes(domain)) session.out << mailbox << "@" << domain << "\r\n"; } else { session.out << "Usage: mailbox add user@domain password | remove user@domain | list domain" << "\r\n"; } return 1; } }