1 #include "../../include/freenet/trustlistxml.h"
\r
2 #include "../../include/stringfunctions.h"
\r
10 TrustListXML::TrustListXML()
\r
15 void TrustListXML::AddTrust(const std::string &identity, const long messagetrust, const long trustlisttrust)
\r
17 m_trust.push_back(trust(identity,messagetrust,trustlisttrust));
\r
20 std::string TrustListXML::GetIdentity(const long index)
\r
22 if(index>=0 && index<m_trust.size())
\r
24 return m_trust[index].m_identity;
\r
32 long TrustListXML::GetMessageTrust(const long index)
\r
34 if(index>=0 && index<m_trust.size())
\r
36 return m_trust[index].m_messagetrust;
\r
44 long TrustListXML::GetTrustListTrust(const long index)
\r
46 if(index>=0 && index<m_trust.size())
\r
48 return m_trust[index].m_trustlisttrust;
\r
56 std::string TrustListXML::GetXML()
\r
59 TiXmlDeclaration *tdec=new TiXmlDeclaration("1.0","UTF-8","");
\r
63 td.LinkEndChild(tdec);
\r
64 tid=new TiXmlElement("TrustList");
\r
65 td.LinkEndChild(tid);
\r
67 for(std::vector<trust>::iterator i=m_trust.begin(); i!=m_trust.end(); i++)
\r
69 std::string messagetrust;
\r
70 std::string trustlisttrust;
\r
71 StringFunctions::Convert((*i).m_messagetrust,messagetrust);
\r
72 StringFunctions::Convert((*i).m_trustlisttrust,trustlisttrust);
\r
73 TiXmlElement *tr=new TiXmlElement("Trust");
\r
74 tid->LinkEndChild(tr);
\r
75 tr->LinkEndChild(XMLCreateCDATAElement("Identity",(*i).m_identity));
\r
76 if((*i).m_messagetrust>=0)
\r
78 tr->LinkEndChild(XMLCreateTextElement("MessageTrustLevel",messagetrust));
\r
80 if((*i).m_trustlisttrust>=0)
\r
82 tr->LinkEndChild(XMLCreateTextElement("TrustListTrustLevel",trustlisttrust));
\r
87 return std::string(tp.CStr());
\r
90 void TrustListXML::Initialize()
\r
95 const bool TrustListXML::ParseXML(const std::string &xml)
\r
98 td.Parse(xml.c_str());
\r
102 std::string identity;
\r
103 std::string messagetruststr;
\r
104 std::string trustlisttruststr;
\r
106 long trustlisttrust;
\r
108 TiXmlHandle hnd(&td);
\r
110 std::vector<std::string> m_foundkeys;
\r
114 node=hnd.FirstChild("TrustList").FirstChild("Trust").ToElement();
\r
121 TiXmlHandle hnd2(node);
\r
122 txt=hnd2.FirstChild("Identity").FirstChild().ToText();
\r
125 identity=txt->ValueStr();
\r
127 txt=hnd2.FirstChild("MessageTrustLevel").FirstChild().ToText();
\r
130 messagetruststr=txt->ValueStr();
\r
131 if(messagetruststr!="")
\r
133 StringFunctions::Convert(messagetruststr,messagetrust);
\r
136 txt=hnd2.FirstChild("TrustListTrustLevel").FirstChild().ToText();
\r
139 trustlisttruststr=txt->ValueStr();
\r
140 if(trustlisttruststr!="")
\r
142 StringFunctions::Convert(trustlisttruststr,trustlisttrust);
\r
146 if(identity!="" && messagetrust>=-1 && messagetrust<=100 && trustlisttrust>=-1 && trustlisttrust<=100)
\r
148 // check so we don't add the same identity multiple times from a trust list
\r
149 if(std::find(m_foundkeys.begin(),m_foundkeys.end(),identity)==m_foundkeys.end())
\r
151 m_foundkeys.push_back(identity);
\r
152 m_trust.push_back(trust(identity,messagetrust,trustlisttrust));
\r
157 m_log->WriteLog(LogFile::LOGLEVEL_ERROR,"TrustListXML::ParseXML malformed Trust in TrustList.xml");
\r
160 node=node->NextSibling("Trust");
\r