1 #include "../../../include/http/pages/peerdetailspage.h"
\r
2 #include "../../../include/stringfunctions.h"
\r
3 #include "../../../include/option.h"
\r
4 #include "../../../include/global.h"
\r
10 const std::string PeerDetailsPage::GeneratePage(const std::string &method, const std::map<std::string,std::string> &queryvars)
\r
12 std::string content="";
\r
14 std::string identityidstr="";
\r
16 std::string publickey;
\r
17 std::string messagetrust;
\r
18 std::string trustlisttrust;
\r
19 std::string lastseen="";
\r
20 std::string dateadded="";
\r
21 std::string addedmethod="";
\r
23 std::string fcphost="";
\r
24 std::string hidden="";
\r
25 int freesiteedition=-1;
\r
26 std::string publishtrustlist="";
\r
27 std::string messagebase="";
\r
29 std::string fproxyport="8888";
\r
30 Option::Instance()->Get("FProxyPort",fproxyport);
\r
31 Option::Instance()->Get("MessageBase",messagebase);
\r
33 if(queryvars.find("identityid")!=queryvars.end() && (*queryvars.find("identityid")).second!="")
\r
35 identityidstr=(*queryvars.find("identityid")).second;
\r
36 StringFunctions::Convert((*queryvars.find("identityid")).second,identityid);
\r
39 if(identityid!=0 && queryvars.find("formaction")!=queryvars.end() && (*queryvars.find("formaction")).second=="deletemessages")
\r
41 SQLite3DB::Statement del=m_db->Prepare("DELETE FROM tblMessage WHERE IdentityID=?;");
\r
42 del.Bind(0,identityid);
\r
46 if(identityid!=0 && queryvars.find("formaction")!=queryvars.end() && (*queryvars.find("formaction")).second=="hide")
\r
48 SQLite3DB::Statement del=m_db->Prepare("UPDATE tblIdentity SET Hidden='true' WHERE IdentityID=?;");
\r
49 del.Bind(0,identityid);
\r
53 if(identityid!=0 && queryvars.find("formaction")!=queryvars.end() && (*queryvars.find("formaction")).second=="show")
\r
55 SQLite3DB::Statement del=m_db->Prepare("UPDATE tblIdentity SET Hidden='false' WHERE IdentityID=?;");
\r
56 del.Bind(0,identityid);
\r
60 Option::Instance()->Get("FCPHost",fcphost);
\r
62 SQLite3DB::Statement st=m_db->Prepare("SELECT Name,PublicKey,DateAdded,LastSeen,AddedMethod,Hidden,FreesiteEdition,PublishTrustList FROM tblIdentity WHERE IdentityID=?;");
\r
63 st.Bind(0,identityid);
\r
67 if(st.RowReturned())
\r
69 st.ResultText(0,name);
\r
70 st.ResultText(1,publickey);
\r
71 st.ResultText(2,dateadded);
\r
72 st.ResultText(3,lastseen);
\r
73 st.ResultText(4,addedmethod);
\r
74 st.ResultText(5,hidden);
\r
75 if(st.ResultNull(6)==false)
\r
77 st.ResultInt(6,freesiteedition);
\r
79 st.ResultText(7,publishtrustlist);
\r
82 if(freesiteedition>=0 && usk.find("SSK@")==0)
\r
84 std::string editionstr="";
\r
86 StringFunctions::Convert(freesiteedition,editionstr);
\r
87 usk="USK"+usk+messagebase+"/"+editionstr+"/";
\r
94 content+="<tr><td>Name</td><td>"+SanitizeOutput(name)+"</td></tr>";
\r
95 content+="<tr><td>Public Key</td><td class=\"smaller\">"+SanitizeOutput(publickey)+"</td></tr>";
\r
98 content+="<tr><td>Freesite</td><td class=\"smaller\"><a href=\"http://"+fcphost+":"+fproxyport+"/"+SanitizeOutput(usk)+"\">"+SanitizeOutput(usk)+"</a></td></tr>";
\r
100 if(publishtrustlist=="true")
\r
102 std::string lastseendate=lastseen;
\r
103 if(lastseendate.size()>=10)
\r
105 lastseendate=lastseendate.substr(0,10);
\r
107 content+="<tr><td>Trust List XML</td><td class=\"smaller\"><a href=\"http://"+fcphost+":"+fproxyport+"/"+SanitizeOutput(publickey)+messagebase+"|"+lastseendate+"|TrustList|0.xml\">Trust List</a></td></tr>";
\r
109 content+="<tr><td>Date Added</td><td>"+dateadded+"</td></tr>";
\r
110 content+="<tr><td>Last Seen</td><td>"+lastseen+"</td></tr>";
\r
111 content+="<tr><td>Added Method</td><td class=\"smaller\">"+SanitizeOutput(addedmethod)+"</td></tr>";
\r
112 content+="<tr><td>Hidden in Main Peer Trust Page</td>";
\r
113 content+="<td>"+hidden;
\r
114 content+=" <form name=\"frmhidden\" method=\"POST\">";
\r
115 content+="<input type=\"hidden\" name=\"identityid\" value=\""+identityidstr+"\">";
\r
116 if(hidden=="false")
\r
118 content+="<input type=\"hidden\" name=\"formaction\" value=\"hide\">";
\r
119 content+="<input type=\"submit\" value=\"Hide\">";
\r
123 content+="<input type=\"hidden\" name=\"formaction\" value=\"show\">";
\r
124 content+="<input type=\"submit\" value=\"Show\">";
\r
126 content+="</form>";
\r
127 content+="</td></tr>";
\r
130 // get message count posted by this identity
\r
131 st=m_db->Prepare("SELECT COUNT(MessageID) FROM tblMessage WHERE IdentityID=?;");
\r
132 st.Bind(0,identityid);
\r
135 if(st.RowReturned())
\r
137 std::string messagecountstr="0";
\r
138 st.ResultText(0,messagecountstr);
\r
140 content+="<td>Message Count</td>";
\r
141 content+="<td>"+messagecountstr;
\r
142 content+=" <form name=\"frmdeletemessages\" method=\"POST\">";
\r
143 content+="<input type=\"hidden\" name=\"identityid\" value=\""+identityidstr+"\">";
\r
144 content+="<input type=\"hidden\" name=\"formaction\" value=\"deletemessages\">";
\r
145 content+="<input type=\"submit\" value=\"Delete Messages\">";
\r
146 content+="</form>";
\r
151 content+="</table>";
\r
154 st=m_db->Prepare("SELECT Name,PublicKey,MessageTrust,TrustListTrust,tblIdentity.IdentityID,tblPeerTrust.MessageTrustComment,tblPeerTrust.TrustListTrustComment FROM tblPeerTrust INNER JOIN tblIdentity ON tblPeerTrust.TargetIdentityID=tblIdentity.IdentityID WHERE tblPeerTrust.IdentityID=? ORDER BY Name COLLATE NOCASE;");
\r
155 st.Bind(0,identityid);
\r
158 content+="<table>";
\r
159 content+="<tr><th colspan=\"5\">";
\r
160 content+="Trust List of this identity";
\r
161 content+="</th></tr>";
\r
162 content+="<tr><td></td><th>Message Trust</th><th>Message Comment</th><th>Trust List Trust</th><th>Trust Comment</th></tr>";
\r
163 while(st.RowReturned())
\r
165 std::string thisid="";
\r
166 std::string messagetrustcomment="";
\r
167 std::string trustlisttrustcomment="";
\r
169 st.ResultText(0,name);
\r
170 st.ResultText(1,publickey);
\r
171 st.ResultText(2,messagetrust);
\r
172 st.ResultText(3,trustlisttrust);
\r
173 st.ResultText(4,thisid);
\r
174 st.ResultText(5,messagetrustcomment);
\r
175 st.ResultText(6,trustlisttrustcomment);
\r
178 content+="<td><a href=\"peerdetails.htm?identityid="+thisid+"\">"+SanitizeOutput(CreateShortIdentityName(name,publickey))+"</a></td>";
\r
179 content+="<td "+GetClassString(messagetrust)+">"+messagetrust+"</td>";
\r
180 content+="<td>"+SanitizeOutput(messagetrustcomment)+"</td>";
\r
181 content+="<td "+GetClassString(trustlisttrust)+">"+trustlisttrust+"</td>";
\r
182 content+="<td>"+SanitizeOutput(trustlisttrustcomment)+"</td>";
\r
183 content+="</tr>\r\n";
\r
188 st=m_db->Prepare("SELECT Name,PublicKey,MessageTrust,TrustListTrust,tblIdentity.IdentityID,tblPeerTrust.MessageTrustComment,tblPeerTrust.TrustListTrustComment FROM tblPeerTrust INNER JOIN tblIdentity ON tblPeerTrust.IdentityID=tblIdentity.IdentityID WHERE tblPeerTrust.TargetIdentityID=? ORDER BY Name COLLATE NOCASE;");
\r
189 st.Bind(0,identityid);
\r
192 content+="<tr><th colspan=\"5\"><hr></th></tr>";
\r
193 content+="<tr><th colspan=\"5\">";
\r
194 content+="Trust of this identity from other identities";
\r
195 content+="</th></tr>";
\r
196 content+="<tr><td></td><th>Message Trust</th><th>Message Comment</th><th>Trust List Trust</th><th>Trust Comment</th></tr>";
\r
197 while(st.RowReturned())
\r
199 std::string thisid="";
\r
200 std::string messagetrustcomment="";
\r
201 std::string trustlisttrustcomment="";
\r
203 st.ResultText(0,name);
\r
204 st.ResultText(1,publickey);
\r
205 st.ResultText(2,messagetrust);
\r
206 st.ResultText(3,trustlisttrust);
\r
207 st.ResultText(4,thisid);
\r
208 st.ResultText(5,messagetrustcomment);
\r
209 st.ResultText(6,trustlisttrustcomment);
\r
212 content+="<td><a href=\"peerdetails.htm?identityid="+thisid+"\">"+SanitizeOutput(CreateShortIdentityName(name,publickey))+"</a></td>";
\r
213 content+="<td "+GetClassString(messagetrust)+">"+messagetrust+"</td>";
\r
214 content+="<td>"+SanitizeOutput(messagetrustcomment)+"</td>";
\r
215 content+="<td "+GetClassString(trustlisttrust)+">"+trustlisttrust+"</td>";
\r
216 content+="<td>"+SanitizeOutput(trustlisttrustcomment)+"</td>";
\r
221 content+="</table>";
\r
223 return "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"+StringFunctions::Replace(m_template,"[CONTENT]",content);
\r
226 const std::string PeerDetailsPage::GetClassString(const std::string &trustlevel)
\r
229 std::string tempstr;
\r
231 StringFunctions::Convert(trustlevel,tempint);
\r
233 StringFunctions::Convert(tempint,tempstr);
\r
237 return "class=\"trust"+tempstr+"\"";
\r
245 const bool PeerDetailsPage::WillHandleURI(const std::string &uri)
\r
247 if(uri.find("peerdetails.")!=std::string::npos)
\r