1 #include "../../../include/http/pages/peertrustpage.h"
\r
2 #include "../../../include/stringfunctions.h"
\r
8 const std::string PeerTrustPage::GeneratePage(const std::string &method, const std::map<std::string,std::string> &queryvars)
\r
11 std::string countstr;
\r
12 std::string content="";
\r
13 int identitycount=0; // total number of ids we know
\r
14 int rowsperpage=25; // how many ids to show per page
\r
15 std::string rowsperpagestr;
\r
17 std::string startrowstr="0";
\r
18 std::string namesearch="";
\r
21 StringFunctions::Convert(rowsperpage,rowsperpagestr);
\r
23 if(queryvars.find("formaction")!=queryvars.end() && (*queryvars.find("formaction")).second=="update")
\r
25 std::vector<std::string> identityids;
\r
26 std::vector<std::string> oldlmt;
\r
27 std::vector<std::string> lmt;
\r
28 std::vector<std::string> oldltlt;
\r
29 std::vector<std::string> ltlt;
\r
30 int localmessagetrust=0;
\r
31 int localtrustlisttrust=0;
\r
34 CreateArgArray(queryvars,"identityid",identityids);
\r
35 CreateArgArray(queryvars,"oldlocalmessagetrust",oldlmt);
\r
36 CreateArgArray(queryvars,"localmessagetrust",lmt);
\r
37 CreateArgArray(queryvars,"oldlocaltrustlisttrust",oldltlt);
\r
38 CreateArgArray(queryvars,"localtrustlisttrust",ltlt);
\r
40 SQLite3DB::Statement update=m_db->Prepare("UPDATE tblIdentity SET LocalMessageTrust=?, LocalTrustListTrust=? WHERE IdentityID=?;");
\r
42 for(int i=0; i<identityids.size(); i++)
\r
44 if(oldlmt[i]!=lmt[i] || oldltlt[i]!=ltlt[i])
\r
46 StringFunctions::Convert(lmt[i],localmessagetrust);
\r
47 StringFunctions::Convert(ltlt[i],localtrustlisttrust);
\r
48 StringFunctions::Convert(identityids[i],identityid);
\r
50 update.Bind(0,localmessagetrust);
\r
51 update.Bind(1,localtrustlisttrust);
\r
52 update.Bind(2,identityid);
\r
60 // if startrow is specified
\r
61 if(queryvars.find("startrow")!=queryvars.end())
\r
63 startrowstr=(*queryvars.find("startrow")).second;
\r
64 // convert back and forth, just in case a number wasn't passed in startrow
\r
65 StringFunctions::Convert(startrowstr,startrow);
\r
70 StringFunctions::Convert(startrow,startrowstr);
\r
73 // if we are searching by name
\r
74 if(queryvars.find("namesearch")!=queryvars.end())
\r
76 namesearch=(*queryvars.find("namesearch")).second;
\r
79 content+="<h2>Peer Trust</h2>";
\r
80 content+="Message Trust is how much you trust the identity to post good messages. Trust List Trust is how much weight you want the trust list of that identity to have when calculating the total. The local trust levels are set by you, and the peer trust levels are calculated by a weighted average using other identities trust lists.";
\r
81 content+="<div style=\"text-align:center;\">";
\r
82 content+="<form name=\"frmsearch\" method=\"POST\" action=\"peertrust.htm\">";
\r
83 content+="<input type=\"text\" name=\"namesearch\">";
\r
84 content+="<input type=\"submit\" value=\"Search\">";
\r
87 content+="<form name=\"frmtrust\" method=\"POST\">";
\r
88 content+="<input type=\"hidden\" name=\"formaction\" value=\"update\">";
\r
89 content+="<input type=\"hidden\" name=\"startrow\" value=\""+startrowstr+"\">";
\r
91 content+="<tr><th>Name</th><th>Local Message Trust</th><th>Peer Message Trust</th><th>Local Trust List Trust</th><th>Peer Trust List Trust</th></tr>";
\r
93 // get count of identities we are showing
\r
94 sql="SELECT COUNT(*) FROM tblIdentity";
\r
97 sql+=" WHERE Name LIKE '%' || ? || '%'";
\r
100 SQLite3DB::Statement st=m_db->Prepare(sql);
\r
103 st.Bind(0,namesearch);
\r
106 st.ResultInt(0,identitycount);
\r
109 sql="SELECT IdentityID,Name,LocalMessageTrust,PeerMessageTrust,LocalTrustListTrust,PeerTrustListTrust,PublicKey FROM tblIdentity";
\r
112 sql+=" WHERE Name LIKE '%' || ? || '%'";
\r
114 sql+=" ORDER BY Name COLLATE NOCASE LIMIT "+startrowstr+","+rowsperpagestr+";";
\r
115 st=m_db->Prepare(sql);
\r
118 st.Bind(0,namesearch);
\r
122 while(st.RowReturned())
\r
124 std::string identityid;
\r
126 std::string localmessagetrust;
\r
127 std::string peermessagetrust;
\r
128 std::string localtrustlisttrust;
\r
129 std::string peertrustlisttrust;
\r
130 std::string publickey;
\r
131 std::string keypart="";
\r
133 StringFunctions::Convert(count,countstr);
\r
135 st.ResultText(0,identityid);
\r
136 st.ResultText(1,name);
\r
137 st.ResultText(2,localmessagetrust);
\r
138 st.ResultText(3,peermessagetrust);
\r
139 st.ResultText(4,localtrustlisttrust);
\r
140 st.ResultText(5,peertrustlisttrust);
\r
141 st.ResultText(6,publickey);
\r
143 if(publickey.size()>8)
\r
145 keypart=publickey.substr(3,5);
\r
149 content+="<td title=\""+publickey+"\">";
\r
150 content+="<input type=\"hidden\" name=\"identityid["+countstr+"]\" value=\""+identityid+"\">";
\r
151 content+="<a href=\"peerdetails.htm?identityid="+identityid+"\">";
\r
154 content+=SanitizeOutput(name+keypart)+"...";
\r
158 content+="[Unknown Name]";
\r
162 content+="<td "+GetClassString(localmessagetrust)+">";
\r
163 content+="<input type=\"hidden\" name=\"oldlocalmessagetrust["+countstr+"]\" value=\""+localmessagetrust+"\">";
\r
164 content+="<input type=\"text\" name=\"localmessagetrust["+countstr+"]\" value=\""+localmessagetrust+"\" size=\"2\" maxlength=\"3\"></td>";
\r
165 content+="<td "+GetClassString(peermessagetrust)+">";
\r
166 content+=peermessagetrust+"</td>";
\r
167 content+="<td "+GetClassString(localtrustlisttrust)+">";
\r
168 content+="<input type=\"hidden\" name=\"oldlocaltrustlisttrust["+countstr+"]\" value=\""+localtrustlisttrust+"\">";
\r
169 content+="<input type=\"text\" name=\"localtrustlisttrust["+countstr+"]\" value=\""+localtrustlisttrust+"\" size=\"2\" maxlength=\"3\"></td>";
\r
170 content+="<td "+GetClassString(peertrustlisttrust)+">";
\r
171 content+=peertrustlisttrust+"</td>";
\r
177 if(startrow>0 || startrow+rowsperpage<identitycount)
\r
179 std::string tempstr;
\r
185 StringFunctions::Convert(startrow-rowsperpage,tempstr);
\r
186 content+="<td colspan=\"2\" align=\"left\"><a href=\"peertrust.htm?startrow="+tempstr+"&namesearch="+namesearch+"\"><-- Previous Page</a></td>";
\r
189 if(startrow+rowsperpage<identitycount)
\r
191 StringFunctions::Convert(startrow+rowsperpage,tempstr);
\r
194 content+="<td></td>";
\r
197 content+="<td colspan=\"2\" align=\"right\"><a href=\"peertrust.htm?startrow="+tempstr+"&namesearch="+namesearch+"\">Next Page --></a></td>";
\r
202 content+="<tr><td colspan=\"5\"><input type=\"submit\" value=\"Update Trust\"></td></tr>";
\r
203 content+="</table>";
\r
204 content+="</form>";
\r
206 return "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"+StringFunctions::Replace(m_template,"[CONTENT]",content);
\r
209 const std::string PeerTrustPage::GetClassString(const std::string &trustlevel)
\r
212 std::string tempstr;
\r
214 StringFunctions::Convert(trustlevel,tempint);
\r
216 StringFunctions::Convert(tempint,tempstr);
\r
220 return "class=\"trust"+tempstr+"\"";
\r
228 const bool PeerTrustPage::WillHandleURI(const std::string &uri)
\r
230 if(uri.find("peertrust.")!=std::string::npos)
\r