Files
Work/smtp/RESPONSE.CPP
2024-08-07 09:16:27 -04:00

169 lines
9.1 KiB
C++

#include <smtp/response.hpp>
#include <common/string.hpp>
#include <bsptree/btree.hpp>
SMTPResponse::SMTPResponse(void)
{
createResponse();
}
SMTPResponse::~SMTPResponse()
{
}
SMTPResponse::SMTPResponse(const SMTPResponse &/*someSMTPResponse*/)
{ // private implementation
}
SMTPResponse &SMTPResponse::operator=(const SMTPResponse &/*someSMTPResponse*/)
{ // private implementation
return *this;
}
BOOL SMTPResponse::isInResponse(const String &responseString,RspType responseType)
{
String srchString(responseString);
return mSMTPResponseTree[responseType].searchItem(StringPointer(&srchString));
}
void SMTPResponse::createResponse(void)
{
createResponseBlock();
createResponseTree();
}
void SMTPResponse::createResponseTree(void)
{
mSMTPResponseTree.size(NakQuit+1);
mSMTPResponseTree[AckConnect].insert(StringPointer(&mSMTPResponse[R211]));
mSMTPResponseTree[AckConnect].insert(StringPointer(&mSMTPResponse[R220]));
mSMTPResponseTree[NakConnect].insert(StringPointer(&mSMTPResponse[R421]));
mSMTPResponseTree[AckHelo].insert(StringPointer(&mSMTPResponse[R250]));
mSMTPResponseTree[NakHelo].insert(StringPointer(&mSMTPResponse[R500]));
mSMTPResponseTree[NakHelo].insert(StringPointer(&mSMTPResponse[R501]));
mSMTPResponseTree[NakHelo].insert(StringPointer(&mSMTPResponse[R504]));
mSMTPResponseTree[NakHelo].insert(StringPointer(&mSMTPResponse[R421]));
mSMTPResponseTree[AckMail].insert(StringPointer(&mSMTPResponse[R250]));
mSMTPResponseTree[NakMail].insert(StringPointer(&mSMTPResponse[R552]));
mSMTPResponseTree[NakMail].insert(StringPointer(&mSMTPResponse[R451]));
mSMTPResponseTree[NakMail].insert(StringPointer(&mSMTPResponse[R452]));
mSMTPResponseTree[NakMail].insert(StringPointer(&mSMTPResponse[R500]));
mSMTPResponseTree[NakMail].insert(StringPointer(&mSMTPResponse[R501]));
mSMTPResponseTree[NakMail].insert(StringPointer(&mSMTPResponse[R421]));
mSMTPResponseTree[AckRecipient].insert(StringPointer(&mSMTPResponse[R250]));
mSMTPResponseTree[AckRecipient].insert(StringPointer(&mSMTPResponse[R251]));
mSMTPResponseTree[NakRecipient].insert(StringPointer(&mSMTPResponse[R550]));
mSMTPResponseTree[NakRecipient].insert(StringPointer(&mSMTPResponse[R551]));
mSMTPResponseTree[NakRecipient].insert(StringPointer(&mSMTPResponse[R552]));
mSMTPResponseTree[NakRecipient].insert(StringPointer(&mSMTPResponse[R553]));
mSMTPResponseTree[NakRecipient].insert(StringPointer(&mSMTPResponse[R450]));
mSMTPResponseTree[NakRecipient].insert(StringPointer(&mSMTPResponse[R451]));
mSMTPResponseTree[NakRecipient].insert(StringPointer(&mSMTPResponse[R452]));
mSMTPResponseTree[NakRecipient].insert(StringPointer(&mSMTPResponse[R500]));
mSMTPResponseTree[NakRecipient].insert(StringPointer(&mSMTPResponse[R501]));
mSMTPResponseTree[NakRecipient].insert(StringPointer(&mSMTPResponse[R503]));
mSMTPResponseTree[NakRecipient].insert(StringPointer(&mSMTPResponse[R421]));
mSMTPResponseTree[AckData].insert(StringPointer(&mSMTPResponse[R354]));
mSMTPResponseTree[AckData].insert(StringPointer(&mSMTPResponse[R250]));
mSMTPResponseTree[NakData].insert(StringPointer(&mSMTPResponse[R552]));
mSMTPResponseTree[NakData].insert(StringPointer(&mSMTPResponse[R554]));
mSMTPResponseTree[NakData].insert(StringPointer(&mSMTPResponse[R451]));
mSMTPResponseTree[NakData].insert(StringPointer(&mSMTPResponse[R452]));
mSMTPResponseTree[NakData].insert(StringPointer(&mSMTPResponse[R451]));
mSMTPResponseTree[NakData].insert(StringPointer(&mSMTPResponse[R554]));
mSMTPResponseTree[NakData].insert(StringPointer(&mSMTPResponse[R500]));
mSMTPResponseTree[NakData].insert(StringPointer(&mSMTPResponse[R501]));
mSMTPResponseTree[NakData].insert(StringPointer(&mSMTPResponse[R503]));
mSMTPResponseTree[NakData].insert(StringPointer(&mSMTPResponse[R421]));
mSMTPResponseTree[AckReset].insert(StringPointer(&mSMTPResponse[R250]));
mSMTPResponseTree[NakReset].insert(StringPointer(&mSMTPResponse[R500]));
mSMTPResponseTree[NakReset].insert(StringPointer(&mSMTPResponse[R501]));
mSMTPResponseTree[NakReset].insert(StringPointer(&mSMTPResponse[R504]));
mSMTPResponseTree[NakReset].insert(StringPointer(&mSMTPResponse[R421]));
mSMTPResponseTree[AckSend].insert(StringPointer(&mSMTPResponse[R250]));
mSMTPResponseTree[NakSend].insert(StringPointer(&mSMTPResponse[R552]));
mSMTPResponseTree[NakSend].insert(StringPointer(&mSMTPResponse[R451]));
mSMTPResponseTree[NakSend].insert(StringPointer(&mSMTPResponse[R452]));
mSMTPResponseTree[NakSend].insert(StringPointer(&mSMTPResponse[R500]));
mSMTPResponseTree[NakSend].insert(StringPointer(&mSMTPResponse[R501]));
mSMTPResponseTree[NakSend].insert(StringPointer(&mSMTPResponse[R502]));
mSMTPResponseTree[NakSend].insert(StringPointer(&mSMTPResponse[R421]));
mSMTPResponseTree[AckSendOrMail].insert(StringPointer(&mSMTPResponse[R250]));
mSMTPResponseTree[NakSendOrMail].insert(StringPointer(&mSMTPResponse[R552]));
mSMTPResponseTree[NakSendOrMail].insert(StringPointer(&mSMTPResponse[R451]));
mSMTPResponseTree[NakSendOrMail].insert(StringPointer(&mSMTPResponse[R452]));
mSMTPResponseTree[NakSendOrMail].insert(StringPointer(&mSMTPResponse[R500]));
mSMTPResponseTree[NakSendOrMail].insert(StringPointer(&mSMTPResponse[R501]));
mSMTPResponseTree[NakSendOrMail].insert(StringPointer(&mSMTPResponse[R502]));
mSMTPResponseTree[NakSendOrMail].insert(StringPointer(&mSMTPResponse[R421]));
mSMTPResponseTree[AckSendAndMail].insert(StringPointer(&mSMTPResponse[R250]));
mSMTPResponseTree[NakSendAndMail].insert(StringPointer(&mSMTPResponse[R552]));
mSMTPResponseTree[NakSendAndMail].insert(StringPointer(&mSMTPResponse[R451]));
mSMTPResponseTree[NakSendAndMail].insert(StringPointer(&mSMTPResponse[R452]));
mSMTPResponseTree[NakSendAndMail].insert(StringPointer(&mSMTPResponse[R500]));
mSMTPResponseTree[NakSendAndMail].insert(StringPointer(&mSMTPResponse[R501]));
mSMTPResponseTree[NakSendAndMail].insert(StringPointer(&mSMTPResponse[R502]));
mSMTPResponseTree[NakSendAndMail].insert(StringPointer(&mSMTPResponse[R421]));
mSMTPResponseTree[AckVerify].insert(StringPointer(&mSMTPResponse[R250]));
mSMTPResponseTree[AckVerify].insert(StringPointer(&mSMTPResponse[R251]));
mSMTPResponseTree[NakVerify].insert(StringPointer(&mSMTPResponse[R550]));
mSMTPResponseTree[NakVerify].insert(StringPointer(&mSMTPResponse[R551]));
mSMTPResponseTree[NakVerify].insert(StringPointer(&mSMTPResponse[R553]));
mSMTPResponseTree[NakVerify].insert(StringPointer(&mSMTPResponse[R500]));
mSMTPResponseTree[NakVerify].insert(StringPointer(&mSMTPResponse[R501]));
mSMTPResponseTree[NakVerify].insert(StringPointer(&mSMTPResponse[R502]));
mSMTPResponseTree[NakVerify].insert(StringPointer(&mSMTPResponse[R504]));
mSMTPResponseTree[NakVerify].insert(StringPointer(&mSMTPResponse[R421]));
mSMTPResponseTree[AckExpand].insert(StringPointer(&mSMTPResponse[R250]));
mSMTPResponseTree[NakExpand].insert(StringPointer(&mSMTPResponse[R550]));
mSMTPResponseTree[NakExpand].insert(StringPointer(&mSMTPResponse[R500]));
mSMTPResponseTree[NakExpand].insert(StringPointer(&mSMTPResponse[R501]));
mSMTPResponseTree[NakExpand].insert(StringPointer(&mSMTPResponse[R502]));
mSMTPResponseTree[NakExpand].insert(StringPointer(&mSMTPResponse[R504]));
mSMTPResponseTree[NakExpand].insert(StringPointer(&mSMTPResponse[R421]));
mSMTPResponseTree[AckHelp].insert(StringPointer(&mSMTPResponse[R211]));
mSMTPResponseTree[AckHelp].insert(StringPointer(&mSMTPResponse[R214]));
mSMTPResponseTree[NakHelp].insert(StringPointer(&mSMTPResponse[R500]));
mSMTPResponseTree[NakHelp].insert(StringPointer(&mSMTPResponse[R501]));
mSMTPResponseTree[NakHelp].insert(StringPointer(&mSMTPResponse[R502]));
mSMTPResponseTree[NakHelp].insert(StringPointer(&mSMTPResponse[R504]));
mSMTPResponseTree[NakHelp].insert(StringPointer(&mSMTPResponse[R421]));
mSMTPResponseTree[AckNoop].insert(StringPointer(&mSMTPResponse[R250]));
mSMTPResponseTree[NakNoop].insert(StringPointer(&mSMTPResponse[R500]));
mSMTPResponseTree[NakNoop].insert(StringPointer(&mSMTPResponse[R421]));
mSMTPResponseTree[AckTurn].insert(StringPointer(&mSMTPResponse[R250]));
mSMTPResponseTree[NakTurn].insert(StringPointer(&mSMTPResponse[R502]));
mSMTPResponseTree[NakTurn].insert(StringPointer(&mSMTPResponse[R500]));
mSMTPResponseTree[NakTurn].insert(StringPointer(&mSMTPResponse[R503]));
mSMTPResponseTree[AckQuit].insert(StringPointer(&mSMTPResponse[R221]));
mSMTPResponseTree[NakQuit].insert(StringPointer(&mSMTPResponse[R500]));
}
void SMTPResponse::createResponseBlock(void)
{
mSMTPResponse.remove();
mSMTPResponse.insert(&String("211"));
mSMTPResponse.insert(&String("214"));
mSMTPResponse.insert(&String("220"));
mSMTPResponse.insert(&String("221"));
mSMTPResponse.insert(&String("250"));
mSMTPResponse.insert(&String("251"));
mSMTPResponse.insert(&String("354"));
mSMTPResponse.insert(&String("421"));
mSMTPResponse.insert(&String("450"));
mSMTPResponse.insert(&String("451"));
mSMTPResponse.insert(&String("452"));
mSMTPResponse.insert(&String("500"));
mSMTPResponse.insert(&String("501"));
mSMTPResponse.insert(&String("502"));
mSMTPResponse.insert(&String("503"));
mSMTPResponse.insert(&String("504"));
mSMTPResponse.insert(&String("550"));
mSMTPResponse.insert(&String("551"));
mSMTPResponse.insert(&String("552"));
mSMTPResponse.insert(&String("553"));
mSMTPResponse.insert(&String("554"));
}