--- /dev/null
+#include "../../include/freenet/trustlistxml.h"\r
+#include "../../include/stringfunctions.h"\r
+\r
+#ifdef XMEM\r
+ #include <xmem.h>\r
+#endif\r
+\r
+TrustListXML::TrustListXML()\r
+{\r
+ Initialize();\r
+}\r
+\r
+void TrustListXML::AddTrust(const std::string &identity, const long messagetrust, const long trustlisttrust)\r
+{\r
+ m_trust.push_back(trust(identity,messagetrust,trustlisttrust));\r
+}\r
+\r
+std::string TrustListXML::GetIdentity(const long index)\r
+{\r
+ if(index>=0 && index<m_trust.size())\r
+ {\r
+ return m_trust[index].m_identity;\r
+ }\r
+ else\r
+ {\r
+ return "";\r
+ }\r
+}\r
+\r
+long TrustListXML::GetMessageTrust(const long index)\r
+{\r
+ if(index>=0 && index<m_trust.size())\r
+ {\r
+ return m_trust[index].m_messagetrust;\r
+ }\r
+ else\r
+ {\r
+ return -1;\r
+ } \r
+}\r
+\r
+long TrustListXML::GetTrustListTrust(const long index)\r
+{\r
+ if(index>=0 && index<m_trust.size())\r
+ {\r
+ return m_trust[index].m_trustlisttrust;\r
+ }\r
+ else\r
+ {\r
+ return -1;\r
+ }\r
+}\r
+\r
+std::string TrustListXML::GetXML()\r
+{\r
+ TiXmlDocument td;\r
+ TiXmlDeclaration *tdec=new TiXmlDeclaration("1.0","UTF-8","");\r
+ TiXmlElement *tid;\r
+ TiXmlPrinter tp;\r
+\r
+ td.LinkEndChild(tdec);\r
+ tid=new TiXmlElement("TrustList");\r
+ td.LinkEndChild(tid);\r
+\r
+ for(std::vector<trust>::iterator i=m_trust.begin(); i!=m_trust.end(); i++)\r
+ {\r
+ std::string messagetrust;\r
+ std::string trustlisttrust;\r
+ StringFunctions::Convert((*i).m_messagetrust,messagetrust);\r
+ StringFunctions::Convert((*i).m_trustlisttrust,trustlisttrust);\r
+ TiXmlElement *tr=new TiXmlElement("Trust");\r
+ tid->LinkEndChild(tr);\r
+ tr->LinkEndChild(XMLCreateCDATAElement("Identity",(*i).m_identity));\r
+ tr->LinkEndChild(XMLCreateTextElement("MessageTrustLevel",messagetrust));\r
+ tr->LinkEndChild(XMLCreateTextElement("TrustListTrustLevel",trustlisttrust));\r
+ }\r
+\r
+ td.Accept(&tp);\r
+ return std::string(tp.CStr());\r
+}\r
+\r
+void TrustListXML::Initialize()\r
+{\r
+ m_trust.clear();\r
+}\r
+\r
+const bool TrustListXML::ParseXML(const std::string &xml)\r
+{\r
+ TiXmlDocument td;\r
+ td.Parse(xml.c_str());\r
+\r
+ if(!td.Error())\r
+ {\r
+ std::string identity;\r
+ std::string messagetruststr;\r
+ std::string trustlisttruststr;\r
+ long messagetrust;\r
+ long trustlisttrust;\r
+ TiXmlText *txt;\r
+ TiXmlHandle hnd(&td);\r
+ TiXmlNode *node;\r
+\r
+ Initialize();\r
+\r
+ node=hnd.FirstChild("TrustList").FirstChild("Trust").ToElement();\r
+ while(node)\r
+ {\r
+ identity="";\r
+ messagetrust=-1;\r
+ trustlisttrust=-1;\r
+\r
+ TiXmlHandle hnd2(node);\r
+ txt=hnd2.FirstChild("Identity").FirstChild().ToText();\r
+ if(txt)\r
+ {\r
+ identity=txt->ValueStr();\r
+ }\r
+ txt=hnd2.FirstChild("MessageTrustLevel").FirstChild().ToText();\r
+ if(txt)\r
+ {\r
+ messagetruststr=txt->ValueStr();\r
+ StringFunctions::Convert(messagetruststr,messagetrust);\r
+ }\r
+ txt=hnd2.FirstChild("TrustListTrustLevel").FirstChild().ToText();\r
+ if(txt)\r
+ {\r
+ trustlisttruststr=txt->ValueStr();\r
+ StringFunctions::Convert(trustlisttruststr,trustlisttrust);\r
+ }\r
+\r
+ if(identity!="" && messagetrust>=0 && messagetrust<=100 && trustlisttrust>=0 && trustlisttrust<=100)\r
+ {\r
+ m_trust.push_back(trust(identity,messagetrust,trustlisttrust));\r
+ }\r
+ else\r
+ {\r
+ m_log->WriteLog(LogFile::LOGLEVEL_ERROR,__FUNCTION__," malformed Trust in TrustList.xml");\r
+ }\r
+ \r
+ node=node->NextSibling("Trust");\r
+ }\r
+\r
+ }\r
+ else\r
+ {\r
+ return false;\r
+ }\r
+}\r