version 0.2.19
[fms.git] / src / nntp / nntpconnection.cpp
index 99914cd..eecbec6 100644 (file)
@@ -268,6 +268,10 @@ const bool NNTPConnection::HandleGetTrustCommand(const NNTPCommand &command)
                                std::string nntpname="";\r
                                for(int i=1; i<command.m_arguments.size(); i++)\r
                                {\r
+                                       if(i!=1)\r
+                                       {\r
+                                               nntpname+=" ";\r
+                                       }\r
                                        nntpname+=command.m_arguments[i];\r
                                }\r
 \r
@@ -340,31 +344,54 @@ const bool NNTPConnection::HandleGetTrustListCommand(const NNTPCommand &command)
        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
+               std::map<std::string,TrustExtension::trust> 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
+                       for(std::map<std::string,TrustExtension::trust>::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
+                               if((*i).second.m_localmessagetrust>-1)\r
                                {\r
-                                       tempstr << (*i).second.first;\r
+                                       tempstr << (*i).second.m_localmessagetrust;\r
                                } \r
                                else\r
                                {\r
                                        tempstr << "null";\r
                                }\r
                                tempstr << "\t";\r
-                               if((*i).second.second>-1)\r
+                               if((*i).second.m_localtrustlisttrust>-1)\r
+                               {\r
+                                       tempstr << (*i).second.m_localtrustlisttrust;\r
+                               }\r
+                               else\r
+                               {\r
+                                       tempstr << "null";\r
+                               }\r
+                               tempstr << "\t";\r
+                               if((*i).second.m_peermessagetrust>-1)\r
+                               {\r
+                                       tempstr << (*i).second.m_peermessagetrust;\r
+                               }\r
+                               else\r
+                               {\r
+                                       tempstr << "null";\r
+                               }\r
+                               tempstr << "\t";\r
+                               if((*i).second.m_peertrustlisttrust>-1)\r
                                {\r
-                                       tempstr << (*i).second.second;\r
+                                       tempstr << (*i).second.m_peertrustlisttrust;\r
                                }\r
                                else\r
                                {\r
                                        tempstr << "null";\r
                                }\r
+                               tempstr << "\t";\r
+                               tempstr << (*i).second.m_messagetrustcomment;\r
+                               tempstr << "\t";\r
+                               tempstr << (*i).second.m_trustlisttrustcomment;\r
+\r
                                SendBufferedLine(tempstr.str());\r
                        }\r
                        SendBufferedLine(".");\r
@@ -1086,26 +1113,76 @@ const bool NNTPConnection::HandleSetTrustCommand(const NNTPCommand &command)
        {\r
                std::string type=command.m_arguments[0];\r
                StringFunctions::UpperCase(type,type);\r
-               if(type=="MESSAGE" || type=="TRUSTLIST")\r
+               if(type=="MESSAGE" || type=="TRUSTLIST" || type=="MESSAGECOMMENT" || type=="TRUSTLISTCOMMENT")\r
                {\r
                        if(m_status.m_authenticated)\r
                        {\r
                                bool found=false;\r
                                bool valid=false;\r
                                int trust=-1;\r
+                               std::string comment="";\r
                                std::string nntpname="";\r
-                               for(int i=1; i<command.m_arguments.size()-1; i++)\r
-                               {\r
-                                       nntpname+=command.m_arguments[i];\r
-                               }\r
 \r
-                               if(command.m_arguments[command.m_arguments.size()-1]!="null")\r
+                               if(type=="MESSAGE" || type=="TRUSTLIST")\r
                                {\r
-                                       StringFunctions::Convert(command.m_arguments[command.m_arguments.size()-1],trust);\r
-                               }\r
+                                       for(int i=1; i<command.m_arguments.size()-1; i++)\r
+                                       {\r
+                                               if(i!=1)\r
+                                               {\r
+                                                       nntpname+=" ";\r
+                                               }\r
+                                               nntpname+=command.m_arguments[i];\r
+                                       }\r
+\r
+                                       if(command.m_arguments[command.m_arguments.size()-1]!="null")\r
+                                       {\r
+                                               StringFunctions::Convert(command.m_arguments[command.m_arguments.size()-1],trust);\r
+                                       }\r
 \r
-                               if(trust>=-1 && trust<=100)\r
+                                       if(trust>=-1 && trust<=100)\r
+                                       {\r
+                                               valid=true;\r
+                                       }\r
+                               }\r
+                               else\r
                                {\r
+                                       int startpos=-1;\r
+                                       // get nntpname\r
+                                       for(int i=1; i<command.m_arguments.size() && startpos==-1; i++)\r
+                                       {\r
+                                               if(command.m_arguments[i].size()>0 && command.m_arguments[i][0]!='\"')\r
+                                               {\r
+                                                       if(i!=1)\r
+                                                       {\r
+                                                               nntpname+=" ";\r
+                                                       }\r
+                                                       nntpname+=command.m_arguments[i];\r
+                                               }\r
+                                               else\r
+                                               {\r
+                                                       startpos=i;\r
+                                               }\r
+                                       }\r
+\r
+                                       // get comment\r
+                                       for(int i=startpos; i<command.m_arguments.size(); i++)\r
+                                       {\r
+                                               if(i!=startpos)\r
+                                               {\r
+                                                       comment+=" ";\r
+                                               }\r
+                                               comment+=command.m_arguments[i];\r
+                                       }\r
+                                       // strip " from comment beginning and end\r
+                                       if(comment.size()>0 && comment[0]=='\"')\r
+                                       {\r
+                                               comment.erase(0,1);\r
+                                       }\r
+                                       if(comment.size()>0 && comment[comment.size()-1]=='\"')\r
+                                       {\r
+                                               comment.erase(comment.size()-1);\r
+                                       }\r
+\r
                                        valid=true;\r
                                }\r
 \r
@@ -1125,6 +1202,20 @@ const bool NNTPConnection::HandleSetTrustCommand(const NNTPCommand &command)
                                                found=true;\r
                                        }\r
                                }\r
+                               if(type=="MESSAGECOMMENT")\r
+                               {\r
+                                       if(tr.SetMessageTrustComment(nntpname,comment))\r
+                                       {\r
+                                               found=true;\r
+                                       }\r
+                               }\r
+                               if(type=="TRUSTLISTCOMMENT")\r
+                               {\r
+                                       if(tr.SetTrustListTrustComment(nntpname,comment))\r
+                                       {\r
+                                               found=true;\r
+                                       }\r
+                               }\r
 \r
                                if(found && valid)\r
                                {\r