#include "__ADMIN_DOMAIN.h" namespace mail { __ADMIN_DOMAIN::__ADMIN_DOMAIN(MailFileSystem &mailFileSystem) : mailFileSystem(mailFileSystem) {} int __ADMIN_DOMAIN::processCommand(coreutils::ZString &request, core::TCPSession &session) { // request was already split (by the console's own top-level // CommandList, delimiter " ") before dispatch reached here, so // request[0] is "domain" itself, request[1] the verb, request[2] // the domain name (list has no third argument). if (request.getList().size() < 2) { session.out << "Usage: domain add|remove|list [name]" << "\r\n"; return 1; } std::string verb = request[1].str(); std::string error; if (verb == "add" || verb == "remove") { if (request.getList().size() < 3) { session.out << "Usage: domain " << verb << " " << "\r\n"; return 1; } coreutils::ZString domain(request[2]); bool ok = (verb == "add") ? mailFileSystem.createDomain(domain, error) : mailFileSystem.removeDomain(domain, error); session.out << (ok ? "OK." : ("Failed: " + error)) << "\r\n"; } else if (verb == "list") { for (auto &domain : mailFileSystem.listDomains()) session.out << domain << "\r\n"; } else { session.out << "Usage: domain add|remove|list [name]" << "\r\n"; } return 1; } }