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
19 StringFunctions::Convert(rowsperpage,rowsperpagestr);
\r
21 if(queryvars.find("formaction")!=queryvars.end() && (*queryvars.find("formaction")).second=="update")
\r
23 std::vector<std::string> identityids;
\r
24 std::vector<std::string> oldlmt;
\r
25 std::vector<std::string> lmt;
\r
26 std::vector<std::string> oldltlt;
\r
27 std::vector<std::string> ltlt;
\r
28 int localmessagetrust=0;
\r
29 int localtrustlisttrust=0;
\r
32 CreateArgArray(queryvars,"identityid",identityids);
\r
33 CreateArgArray(queryvars,"oldlocalmessagetrust",oldlmt);
\r
34 CreateArgArray(queryvars,"localmessagetrust",lmt);
\r
35 CreateArgArray(queryvars,"oldlocaltrustlisttrust",oldltlt);
\r
36 CreateArgArray(queryvars,"localtrustlisttrust",ltlt);
\r
38 SQLite3DB::Statement update=m_db->Prepare("UPDATE tblIdentity SET LocalMessageTrust=?, LocalTrustListTrust=? WHERE IdentityID=?;");
\r
40 for(int i=0; i<identityids.size(); i++)
\r
42 if(oldlmt[i]!=lmt[i] || oldltlt[i]!=ltlt[i])
\r
44 StringFunctions::Convert(lmt[i],localmessagetrust);
\r
45 StringFunctions::Convert(ltlt[i],localtrustlisttrust);
\r
46 StringFunctions::Convert(identityids[i],identityid);
\r
48 update.Bind(0,localmessagetrust);
\r
49 update.Bind(1,localtrustlisttrust);
\r
50 update.Bind(2,identityid);
\r
58 // if startrow is specified
\r
59 if(queryvars.find("startrow")!=queryvars.end())
\r
61 startrowstr=(*queryvars.find("startrow")).second;
\r
62 // convert back and forth, just in case a number wasn't passed in startrow
\r
63 StringFunctions::Convert(startrowstr,startrow);
\r
68 StringFunctions::Convert(startrow,startrowstr);
\r
71 content+="<h2>Peer Trust</h2>";
\r
72 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
73 content+="<form name=\"frmtrust\" method=\"POST\">";
\r
74 content+="<input type=\"hidden\" name=\"formaction\" value=\"update\">";
\r
75 content+="<input type=\"hidden\" name=\"startrow\" value=\""+startrowstr+"\">";
\r
77 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
79 SQLite3DB::Statement st=m_db->Prepare("SELECT COUNT(*) FROM tblIdentity;");
\r
81 st.ResultInt(0,identitycount);
\r
84 st=m_db->Prepare("SELECT IdentityID,Name,LocalMessageTrust,PeerMessageTrust,LocalTrustListTrust,PeerTrustListTrust,PublicKey FROM tblIdentity ORDER BY Name COLLATE NOCASE LIMIT "+startrowstr+","+rowsperpagestr+";");
\r
87 while(st.RowReturned())
\r
89 std::string identityid;
\r
91 std::string localmessagetrust;
\r
92 std::string peermessagetrust;
\r
93 std::string localtrustlisttrust;
\r
94 std::string peertrustlisttrust;
\r
95 std::string publickey;
\r
96 std::string keypart="";
\r
98 StringFunctions::Convert(count,countstr);
\r
100 st.ResultText(0,identityid);
\r
101 st.ResultText(1,name);
\r
102 st.ResultText(2,localmessagetrust);
\r
103 st.ResultText(3,peermessagetrust);
\r
104 st.ResultText(4,localtrustlisttrust);
\r
105 st.ResultText(5,peertrustlisttrust);
\r
106 st.ResultText(6,publickey);
\r
108 if(publickey.size()>8)
\r
110 keypart=publickey.substr(3,5);
\r
114 content+="<td title=\""+publickey+"\">";
\r
115 content+="<input type=\"hidden\" name=\"identityid["+countstr+"]\" value=\""+identityid+"\">";
\r
118 content+=SanitizeOutput(name+keypart)+"...";
\r
122 content+="[Unknown Name]";
\r
125 content+="<td "+GetClassString(localmessagetrust)+">";
\r
126 content+="<input type=\"hidden\" name=\"oldlocalmessagetrust["+countstr+"]\" value=\""+localmessagetrust+"\">";
\r
127 content+="<input type=\"text\" name=\"localmessagetrust["+countstr+"]\" value=\""+localmessagetrust+"\" size=\"2\" maxlength=\"3\"></td>";
\r
128 content+="<td "+GetClassString(peermessagetrust)+">";
\r
129 content+=peermessagetrust+"</td>";
\r
130 content+="<td "+GetClassString(localtrustlisttrust)+">";
\r
131 content+="<input type=\"hidden\" name=\"oldlocaltrustlisttrust["+countstr+"]\" value=\""+localtrustlisttrust+"\">";
\r
132 content+="<input type=\"text\" name=\"localtrustlisttrust["+countstr+"]\" value=\""+localtrustlisttrust+"\" size=\"2\" maxlength=\"3\"></td>";
\r
133 content+="<td "+GetClassString(peertrustlisttrust)+">";
\r
134 content+=peertrustlisttrust+"</td>";
\r
140 if(startrow>0 || startrow+rowsperpage<identitycount)
\r
142 std::string tempstr;
\r
148 StringFunctions::Convert(startrow-rowsperpage,tempstr);
\r
149 content+="<td colspan=\"2\" align=\"left\"><a href=\"peertrust.htm?startrow="+tempstr+"\"><-- Previous Page</a></td>";
\r
152 if(startrow+rowsperpage<identitycount)
\r
154 StringFunctions::Convert(startrow+rowsperpage,tempstr);
\r
157 content+="<td></td>";
\r
160 content+="<td colspan=\"2\" align=\"right\"><a href=\"peertrust.htm?startrow="+tempstr+"\">Next Page --></a></td>";
\r
165 content+="<tr><td colspan=\"5\"><input type=\"submit\" value=\"Update Trust\"></td></tr>";
\r
166 content+="</table>";
\r
167 content+="</form>";
\r
169 return "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"+StringFunctions::Replace(m_template,"[CONTENT]",content);
\r
172 const std::string PeerTrustPage::GetClassString(const std::string &trustlevel)
\r
175 std::string tempstr;
\r
177 StringFunctions::Convert(trustlevel,tempint);
\r
179 StringFunctions::Convert(tempint,tempstr);
\r
183 return "class=\"trust"+tempstr+"\"";
\r
191 const bool PeerTrustPage::WillHandleURI(const std::string &uri)
\r
193 if(uri.find("peertrust.")!=std::string::npos)
\r