1 #include "../../include/nntp/extensiontrust.h"
\r
2 #include "../../include/stringfunctions.h"
\r
8 TrustExtension::TrustExtension()
\r
10 m_localidentityid=-1;
\r
13 TrustExtension::TrustExtension(const int &localidentityid)
\r
15 m_localidentityid=localidentityid;
\r
18 const int TrustExtension::GetIdentityID(const std::string &nntpname)
\r
20 std::vector<std::string> nameparts;
\r
21 StringFunctions::Split(nntpname,"@",nameparts);
\r
23 SQLite3DB::Statement st=m_db->Prepare("SELECT IdentityID, PublicKey FROM tblIdentity WHERE Name=? AND PublicKey IS NOT NULL AND PublicKey <> '' ;");
\r
24 st.Bind(0,nameparts[0]);
\r
27 while(st.RowReturned())
\r
30 std::vector<std::string> keyparts;
\r
31 std::string publickey="";
\r
33 st.ResultText(1,publickey);
\r
34 StringFunctions::SplitMultiple(publickey,"@,",keyparts);
\r
36 if(keyparts.size()>1)
\r
38 if(nameparts[0]+"@"+keyparts[1]==nntpname)
\r
52 const bool TrustExtension::GetMessageTrust(const std::string &nntpname, int &trust)
\r
54 if(m_localidentityid>=0)
\r
56 int id=GetIdentityID(nntpname);
\r
59 SQLite3DB::Statement st=m_db->Prepare("SELECT LocalMessageTrust FROM tblIdentityTrust WHERE LocalIdentityID=? AND IdentityID=?;");
\r
60 st.Bind(0,m_localidentityid);
\r
64 if(st.RowReturned())
\r
67 if(st.ResultNull(0)==false)
\r
90 const bool TrustExtension::GetPeerMessageTrust(const std::string &nntpname, int &trust)
\r
92 if(m_localidentityid>=0)
\r
94 int id=GetIdentityID(nntpname);
\r
97 SQLite3DB::Statement st=m_db->Prepare("SELECT PeerMessageTrust FROM tblIdentity WHERE IdentityID=?;");
\r
101 if(st.RowReturned())
\r
104 if(st.ResultNull(0)==false)
\r
106 st.ResultInt(0,tr);
\r
127 const bool TrustExtension::GetPeerTrustListTrust(const std::string &nntpname, int &trust)
\r
129 if(m_localidentityid>=0)
\r
131 int id=GetIdentityID(nntpname);
\r
134 SQLite3DB::Statement st=m_db->Prepare("SELECT PeerTrustListTrust FROM tblIdentity WHERE IdentityID=?;");
\r
138 if(st.RowReturned())
\r
141 if(st.ResultNull(0)==false)
\r
143 st.ResultInt(0,tr);
\r
164 const bool TrustExtension::GetTrustList(std::map<std::string,std::pair<int,int> > &trustlist)
\r
166 if(m_localidentityid>=0)
\r
168 SQLite3DB::Statement st=m_db->Prepare("SELECT tblIdentityTrust.LocalMessageTrust,tblIdentityTrust.LocalTrustListTrust,tblIdentity.Name,tblIdentity.PublicKey FROM tblIdentityTrust INNER JOIN tblIdentity ON tblIdentityTrust.IdentityID=tblIdentity.IdentityID WHERE tblIdentityTrust.LocalIdentityID=? AND tblIdentity.Name IS NOT NULL AND tblIdentity.PublicKey IS NOT NULL AND tblIdentity.PublicKey <> '' ;");
\r
169 st.Bind(0,m_localidentityid);
\r
171 while(st.RowReturned())
\r
173 int messagetrust=-1;
\r
174 int trustlisttrust=-1;
\r
175 std::string name="";
\r
176 std::string publickey="";
\r
177 std::vector<std::string> keyparts;
\r
178 std::string nntpname="";
\r
180 if(st.ResultNull(0)==false)
\r
182 st.ResultInt(0,messagetrust);
\r
184 if(st.ResultNull(1)==false)
\r
186 st.ResultInt(1,trustlisttrust);
\r
188 st.ResultText(2,name);
\r
189 st.ResultText(3,publickey);
\r
191 StringFunctions::SplitMultiple(publickey,"@,",keyparts);
\r
192 if(keyparts.size()>1)
\r
194 nntpname=name+"@"+keyparts[1];
\r
197 trustlist[nntpname]=std::pair<int,int>(messagetrust,trustlisttrust);
\r
209 const bool TrustExtension::GetTrustListTrust(const std::string &nntpname, int &trust)
\r
211 if(m_localidentityid>=0)
\r
213 int id=GetIdentityID(nntpname);
\r
216 SQLite3DB::Statement st=m_db->Prepare("SELECT LocalTrustListTrust FROM tblIdentityTrust WHERE LocalIdentityID=? AND IdentityID=?;");
\r
217 st.Bind(0,m_localidentityid);
\r
221 if(st.RowReturned())
\r
224 if(st.ResultNull(0)==false)
\r
226 st.ResultInt(0,tr);
\r
247 const bool TrustExtension::SetMessageTrust(const std::string &nntpname, const int trust)
\r
249 if(m_localidentityid>=0 && trust>=-1 && trust<=100)
\r
251 int id=GetIdentityID(nntpname);
\r
254 SQLite3DB::Statement st=m_db->Prepare("UPDATE tblIdentityTrust SET LocalMessageTrust=? WHERE LocalIdentityID=? AND IdentityID=?;");
\r
263 st.Bind(1,m_localidentityid);
\r
280 const bool TrustExtension::SetTrustListTrust(const std::string &nntpname, const int trust)
\r
282 if(m_localidentityid>=0 && trust>=-1 && trust<=100)
\r
284 int id=GetIdentityID(nntpname);
\r
287 SQLite3DB::Statement st=m_db->Prepare("UPDATE tblIdentityTrust SET LocalTrustListTrust=? WHERE LocalIdentityID=? AND IdentityID=?;");
\r
296 st.Bind(1,m_localidentityid);
\r