169 lines
9.1 KiB
C++
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"));
|
|
}
|
|
|