#include "__IMAP_CREATE.h" #include "IMAPArgs.h" #include "IMAPServer.h" #include namespace mail { int __IMAP_CREATE::processCommand(coreutils::ZString &request, IMAPSession &session, IMAPServer &server) { if (session.state == IMAPSession::NOT_AUTHENTICATED) { session.out << session.tag << " NO Not authenticated" << CRLF; return 1; } coreutils::ZString nameArg = IMAPArgs::nextArgument(request); std::string folderName = IMAPArgs::normalizeFolderName(IMAPArgs::unwrap(nameArg)); coreutils::ZString userNameZ(session.userName); if (!IMAPArgs::isValidFolderName(folderName)) { session.out << session.tag << " BAD Invalid mailbox name" << CRLF; return 1; } if (server.mailFileSystem.ifFolderExists(userNameZ, folderName)) { session.out << session.tag << " NO Mailbox already exists" << CRLF; return 1; } std::string path = server.mailFileSystem.getFolderPath(userNameZ, folderName).str(); if (mkdir(path.c_str(), 0770) != 0) { session.out << session.tag << " NO CREATE failed" << CRLF; return 1; } session.out << session.tag << " OK CREATE completed" << CRLF; return 1; } }