X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ffreenet%2Ftrustlistxml.cpp;h=ebe0b60860d5204da3775d26469d2dfbb9debe3f;hb=a007770a843aa759763b98288c9432c3906ce5c6;hp=45af43ece159b894ca996e9365fee2fd4e3042b1;hpb=1b0c3b7f86935a772aad271bad4f3d1f37243c2d;p=fms.git diff --git a/src/freenet/trustlistxml.cpp b/src/freenet/trustlistxml.cpp index 45af43e..ebe0b60 100644 --- a/src/freenet/trustlistxml.cpp +++ b/src/freenet/trustlistxml.cpp @@ -1,6 +1,8 @@ #include "../../include/freenet/trustlistxml.h" #include "../../include/stringfunctions.h" +#include + #ifdef XMEM #include #endif @@ -10,9 +12,9 @@ TrustListXML::TrustListXML() Initialize(); } -void TrustListXML::AddTrust(const std::string &identity, const long messagetrust, const long trustlisttrust) +void TrustListXML::AddTrust(const std::string &identity, const long messagetrust, const long trustlisttrust, const std::string &messagetrustcomment, const std::string &trustlisttrustcomment) { - m_trust.push_back(trust(identity,messagetrust,trustlisttrust)); + m_trust.push_back(trust(identity,messagetrust,trustlisttrust,messagetrustcomment,trustlisttrustcomment)); } std::string TrustListXML::GetIdentity(const long index) @@ -39,6 +41,18 @@ long TrustListXML::GetMessageTrust(const long index) } } +std::string TrustListXML::GetMessageTrustComment(const long index) +{ + if(index>=0 && index=0 && index=0 && indexLinkEndChild(tr); tr->LinkEndChild(XMLCreateCDATAElement("Identity",(*i).m_identity)); - tr->LinkEndChild(XMLCreateTextElement("MessageTrustLevel",messagetrust)); - tr->LinkEndChild(XMLCreateTextElement("TrustListTrustLevel",trustlisttrust)); + if((*i).m_messagetrust>=0) + { + tr->LinkEndChild(XMLCreateTextElement("MessageTrustLevel",messagetrust)); + } + if((*i).m_trustlisttrust>=0) + { + tr->LinkEndChild(XMLCreateTextElement("TrustListTrustLevel",trustlisttrust)); + } + if((*i).m_messagetrustcomment!="") + { + tr->LinkEndChild(XMLCreateCDATAElement("MessageTrustComment",(*i).m_messagetrustcomment)); + } + if((*i).m_trustlisttrustcomment!="") + { + tr->LinkEndChild(XMLCreateCDATAElement("TrustListTrustComment",(*i).m_trustlisttrustcomment)); + } } td.Accept(&tp); @@ -94,11 +134,14 @@ const bool TrustListXML::ParseXML(const std::string &xml) std::string identity; std::string messagetruststr; std::string trustlisttruststr; + std::string messagetrustcomment=""; + std::string trustlisttrustcomment=""; long messagetrust; long trustlisttrust; TiXmlText *txt; TiXmlHandle hnd(&td); TiXmlNode *node; + std::vector m_foundkeys; Initialize(); @@ -108,6 +151,8 @@ const bool TrustListXML::ParseXML(const std::string &xml) identity=""; messagetrust=-1; trustlisttrust=-1; + messagetrustcomment=""; + trustlisttrustcomment=""; TiXmlHandle hnd2(node); txt=hnd2.FirstChild("Identity").FirstChild().ToText(); @@ -119,26 +164,48 @@ const bool TrustListXML::ParseXML(const std::string &xml) if(txt) { messagetruststr=txt->ValueStr(); - StringFunctions::Convert(messagetruststr,messagetrust); + if(messagetruststr!="") + { + StringFunctions::Convert(messagetruststr,messagetrust); + } } txt=hnd2.FirstChild("TrustListTrustLevel").FirstChild().ToText(); if(txt) { trustlisttruststr=txt->ValueStr(); - StringFunctions::Convert(trustlisttruststr,trustlisttrust); + if(trustlisttruststr!="") + { + StringFunctions::Convert(trustlisttruststr,trustlisttrust); + } + } + txt=hnd2.FirstChild("MessageTrustComment").FirstChild().ToText(); + if(txt) + { + messagetrustcomment=txt->ValueStr(); + } + txt=hnd2.FirstChild("TrustListTrustComment").FirstChild().ToText(); + if(txt) + { + trustlisttrustcomment=txt->ValueStr(); } - if(identity!="" && messagetrust>=0 && messagetrust<=100 && trustlisttrust>=0 && trustlisttrust<=100) + if(identity!="" && messagetrust>=-1 && messagetrust<=100 && trustlisttrust>=-1 && trustlisttrust<=100) { - m_trust.push_back(trust(identity,messagetrust,trustlisttrust)); + // check so we don't add the same identity multiple times from a trust list + if(std::find(m_foundkeys.begin(),m_foundkeys.end(),identity)==m_foundkeys.end()) + { + m_foundkeys.push_back(identity); + m_trust.push_back(trust(identity,messagetrust,trustlisttrust,messagetrustcomment,trustlisttrustcomment)); + } } else { - m_log->WriteLog(LogFile::LOGLEVEL_ERROR,__FUNCTION__," malformed Trust in TrustList.xml"); + m_log->WriteLog(LogFile::LOGLEVEL_ERROR,"TrustListXML::ParseXML malformed Trust in TrustList.xml"); } node=node->NextSibling("Trust"); } + return true; } else