X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ffreenet%2Ftrustlistxml.cpp;fp=src%2Ffreenet%2Ftrustlistxml.cpp;h=45af43ece159b894ca996e9365fee2fd4e3042b1;hb=1b0c3b7f86935a772aad271bad4f3d1f37243c2d;hp=0000000000000000000000000000000000000000;hpb=d8f51eac91f86a1e00a05a5058a8fa9eb8732464;p=fms.git diff --git a/src/freenet/trustlistxml.cpp b/src/freenet/trustlistxml.cpp new file mode 100644 index 0000000..45af43e --- /dev/null +++ b/src/freenet/trustlistxml.cpp @@ -0,0 +1,148 @@ +#include "../../include/freenet/trustlistxml.h" +#include "../../include/stringfunctions.h" + +#ifdef XMEM + #include +#endif + +TrustListXML::TrustListXML() +{ + Initialize(); +} + +void TrustListXML::AddTrust(const std::string &identity, const long messagetrust, const long trustlisttrust) +{ + m_trust.push_back(trust(identity,messagetrust,trustlisttrust)); +} + +std::string TrustListXML::GetIdentity(const long index) +{ + if(index>=0 && index=0 && index=0 && index::iterator i=m_trust.begin(); i!=m_trust.end(); i++) + { + std::string messagetrust; + std::string trustlisttrust; + StringFunctions::Convert((*i).m_messagetrust,messagetrust); + StringFunctions::Convert((*i).m_trustlisttrust,trustlisttrust); + TiXmlElement *tr=new TiXmlElement("Trust"); + tid->LinkEndChild(tr); + tr->LinkEndChild(XMLCreateCDATAElement("Identity",(*i).m_identity)); + tr->LinkEndChild(XMLCreateTextElement("MessageTrustLevel",messagetrust)); + tr->LinkEndChild(XMLCreateTextElement("TrustListTrustLevel",trustlisttrust)); + } + + td.Accept(&tp); + return std::string(tp.CStr()); +} + +void TrustListXML::Initialize() +{ + m_trust.clear(); +} + +const bool TrustListXML::ParseXML(const std::string &xml) +{ + TiXmlDocument td; + td.Parse(xml.c_str()); + + if(!td.Error()) + { + std::string identity; + std::string messagetruststr; + std::string trustlisttruststr; + long messagetrust; + long trustlisttrust; + TiXmlText *txt; + TiXmlHandle hnd(&td); + TiXmlNode *node; + + Initialize(); + + node=hnd.FirstChild("TrustList").FirstChild("Trust").ToElement(); + while(node) + { + identity=""; + messagetrust=-1; + trustlisttrust=-1; + + TiXmlHandle hnd2(node); + txt=hnd2.FirstChild("Identity").FirstChild().ToText(); + if(txt) + { + identity=txt->ValueStr(); + } + txt=hnd2.FirstChild("MessageTrustLevel").FirstChild().ToText(); + if(txt) + { + messagetruststr=txt->ValueStr(); + StringFunctions::Convert(messagetruststr,messagetrust); + } + txt=hnd2.FirstChild("TrustListTrustLevel").FirstChild().ToText(); + if(txt) + { + trustlisttruststr=txt->ValueStr(); + StringFunctions::Convert(trustlisttruststr,trustlisttrust); + } + + if(identity!="" && messagetrust>=0 && messagetrust<=100 && trustlisttrust>=0 && trustlisttrust<=100) + { + m_trust.push_back(trust(identity,messagetrust,trustlisttrust)); + } + else + { + m_log->WriteLog(LogFile::LOGLEVEL_ERROR,__FUNCTION__," malformed Trust in TrustList.xml"); + } + + node=node->NextSibling("Trust"); + } + + } + else + { + return false; + } +}