+const bool NNTPConnection::HandleGetTrustCommand(const NNTPCommand &command)\r
+{\r
+ if(command.m_arguments.size()>=2)\r
+ {\r
+ std::string type=command.m_arguments[0];\r
+ StringFunctions::UpperCase(type,type);\r
+ if(type=="MESSAGE" || type=="TRUSTLIST" || type=="PEERMESSAGE" || type=="PEERTRUSTLIST")\r
+ {\r
+ if(m_status.m_authenticated)\r
+ {\r
+ bool found=false;\r
+ int trust=-1;\r
+ std::string nntpname="";\r
+ for(int i=1; i<command.m_arguments.size(); i++)\r
+ {\r
+ nntpname+=command.m_arguments[i];\r
+ }\r
+\r
+ TrustExtension tr(m_status.m_authuser.GetID());\r
+\r
+ if(type=="MESSAGE")\r
+ {\r
+ if(tr.GetMessageTrust(nntpname,trust))\r
+ {\r
+ found=true;\r
+ }\r
+ }\r
+ else if(type=="TRUSTLIST")\r
+ {\r
+ if(tr.GetTrustListTrust(nntpname,trust))\r
+ {\r
+ found=true;\r
+ }\r
+ }\r
+ else if(type=="PEERMESSAGE")\r
+ {\r
+ if(tr.GetPeerMessageTrust(nntpname,trust))\r
+ {\r
+ found=true;\r
+ }\r
+ }\r
+ else if(type=="PEERTRUSTLIST")\r
+ {\r
+ if(tr.GetPeerTrustListTrust(nntpname,trust))\r
+ {\r
+ found=true;\r
+ }\r
+ }\r
+\r
+ if(trust>=0 && found)\r
+ {\r
+ std::string truststr="";\r
+ StringFunctions::Convert(trust,truststr);\r
+ SendBufferedLine("280 "+truststr);\r
+ }\r
+ else if(found)\r
+ {\r
+ SendBufferedLine("281 null");\r
+ }\r
+ else\r
+ {\r
+ SendBufferedLine("480 Identity not found");\r
+ }\r
+\r
+ }\r
+ else\r
+ {\r
+ SendBufferedLine("480 User not authenticated");\r
+ }\r
+ }\r
+ else\r
+ {\r
+ SendBufferedLine("501 Syntax error");\r
+ }\r
+ }\r
+ else\r
+ {\r
+ SendBufferedLine("501 Syntax error");\r
+ }\r
+ return true;\r
+} \r
+\r
+const bool NNTPConnection::HandleGetTrustListCommand(const NNTPCommand &command)\r
+{\r
+ if(m_status.m_authenticated)\r
+ {\r
+ TrustExtension tr(m_status.m_authuser.GetID());\r
+ std::map<std::string,std::pair<int,int> > trustlist;\r
+ if(tr.GetTrustList(trustlist))\r
+ {\r
+ SendBufferedLine("280 Trust list follows");\r
+ for(std::map<std::string,std::pair<int,int> >::iterator i=trustlist.begin(); i!=trustlist.end(); i++)\r
+ {\r
+ std::ostringstream tempstr;\r
+ tempstr << (*i).first << "\t";\r
+ if((*i).second.first>-1)\r
+ {\r
+ tempstr << (*i).second.first;\r
+ } \r
+ else\r
+ {\r
+ tempstr << "null";\r
+ }\r
+ tempstr << "\t";\r
+ if((*i).second.second>-1)\r
+ {\r
+ tempstr << (*i).second.second;\r
+ }\r
+ else\r
+ {\r
+ tempstr << "null";\r
+ }\r
+ SendBufferedLine(tempstr.str());\r
+ }\r
+ SendBufferedLine(".");\r
+ }\r
+ else\r
+ {\r
+ SendBufferedLine("501 Syntax error");\r
+ }\r
+ }\r
+ else\r
+ {\r
+ SendBufferedLine("480 User not authenticated");\r
+ }\r
+ return true;\r
+}\r
+\r