version 0.2.4
[fms.git] / src / http / pages / peerdetailspage.cpp
1 #include "../../../include/http/pages/peerdetailspage.h"\r
2 #include "../../../include/stringfunctions.h"\r
3 \r
4 #ifdef XMEM\r
5         #include <xmem.h>\r
6 #endif\r
7 \r
8 const std::string PeerDetailsPage::GeneratePage(const std::string &method, const std::map<std::string,std::string> &queryvars)\r
9 {\r
10         std::string content="";\r
11         int identityid=0;\r
12         std::string identityidstr="";\r
13         std::string name;\r
14         std::string publickey;\r
15         std::string messagetrust;\r
16         std::string trustlisttrust;\r
17         std::string keypart="";\r
18         std::string lastseen="";\r
19         std::string dateadded="";\r
20         std::string addedmethod="";\r
21 \r
22         if(queryvars.find("identityid")!=queryvars.end() && (*queryvars.find("identityid")).second!="")\r
23         {\r
24                 identityidstr=(*queryvars.find("identityid")).second;\r
25                 StringFunctions::Convert((*queryvars.find("identityid")).second,identityid);\r
26         }\r
27 \r
28         if(identityid!=0 && queryvars.find("formaction")!=queryvars.end() && (*queryvars.find("formaction")).second=="deletemessages")\r
29         {\r
30                 SQLite3DB::Statement del=m_db->Prepare("DELETE FROM tblMessage WHERE IdentityID=?;");\r
31                 del.Bind(0,identityid);\r
32                 del.Step();\r
33         }\r
34 \r
35         SQLite3DB::Statement st=m_db->Prepare("SELECT Name,PublicKey,DateAdded,LastSeen,AddedMethod FROM tblIdentity WHERE IdentityID=?;");\r
36         st.Bind(0,identityid);\r
37         st.Step();\r
38 \r
39         content+="<table>";\r
40         if(st.RowReturned())\r
41         {\r
42                 st.ResultText(0,name);\r
43                 st.ResultText(1,publickey);\r
44                 st.ResultText(2,dateadded);\r
45                 st.ResultText(3,lastseen);\r
46                 st.ResultText(4,addedmethod);\r
47 \r
48                 content+="<tr><td>Name</td><td>"+SanitizeOutput(name)+"</td></tr>";\r
49                 content+="<tr><td>Public Key</td><td class=\"smaller\">"+SanitizeOutput(publickey)+"</td></tr>";\r
50                 content+="<tr><td>Date Added</td><td>"+dateadded+"</td></tr>";\r
51                 content+="<tr><td>Last Seen</td><td>"+lastseen+"</td></tr>";\r
52                 content+="<tr><td>Added Method</td><td class=\"smaller\">"+SanitizeOutput(addedmethod)+"</td></tr>";\r
53         }\r
54 \r
55         // get message count posted by this identity\r
56         st=m_db->Prepare("SELECT COUNT(MessageID) FROM tblMessage WHERE IdentityID=?;");\r
57         st.Bind(0,identityid);\r
58         st.Step();\r
59 \r
60         if(st.RowReturned())\r
61         {\r
62                 std::string messagecountstr="0";\r
63                 st.ResultText(0,messagecountstr);\r
64                 content+="<tr>";\r
65                 content+="<td>Message Count</td>";\r
66                 content+="<td>"+messagecountstr;\r
67                 content+="&nbsp;&nbsp;<form name=\"frmdeletemessages\" method=\"POST\">";\r
68                 content+="<input type=\"hidden\" name=\"identityid\" value=\""+identityidstr+"\">";\r
69                 content+="<input type=\"hidden\" name=\"formaction\" value=\"deletemessages\">";\r
70                 content+="<input type=\"submit\" value=\"Delete Messages\">";\r
71                 content+="</form>";\r
72                 content+="</td>";\r
73                 content+="</tr>";\r
74         }\r
75 \r
76         content+="</table>";\r
77 \r
78 \r
79         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
80         st.Bind(0,identityid);\r
81         st.Step();\r
82 \r
83         content+="<table>";\r
84         content+="<tr><th colspan=\"5\">";\r
85         content+="Trust List of this identity";\r
86         content+="</th></tr>";\r
87         content+="<tr><td></td><th>Message Trust</th><th>Message Comment</th><th>Trust List Trust</th><th>Trust Comment</th></tr>";\r
88         while(st.RowReturned())\r
89         {\r
90                 std::string thisid="";\r
91                 std::string messagetrustcomment="";\r
92                 std::string trustlisttrustcomment="";\r
93 \r
94                 st.ResultText(0,name);\r
95                 st.ResultText(1,publickey);\r
96                 st.ResultText(2,messagetrust);\r
97                 st.ResultText(3,trustlisttrust);\r
98                 st.ResultText(4,thisid);\r
99                 st.ResultText(5,messagetrustcomment);\r
100                 st.ResultText(6,trustlisttrustcomment);\r
101 \r
102                 if(publickey.size()>8)\r
103                 {\r
104                         keypart=publickey.substr(3,5);\r
105                 }\r
106 \r
107                 content+="<tr>";\r
108                 content+="<td><a href=\"peerdetails.htm?identityid="+thisid+"\">"+SanitizeOutput(name+keypart)+"...</a></td>";\r
109                 content+="<td "+GetClassString(messagetrust)+">"+messagetrust+"</td>";\r
110                 content+="<td>"+SanitizeOutput(messagetrustcomment)+"</td>";\r
111                 content+="<td "+GetClassString(trustlisttrust)+">"+trustlisttrust+"</td>";\r
112                 content+="<td>"+SanitizeOutput(trustlisttrustcomment)+"</td>";\r
113                 content+="</tr>\r\n";\r
114 \r
115                 st.Step();\r
116         }\r
117 \r
118         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
119         st.Bind(0,identityid);\r
120         st.Step();\r
121 \r
122         content+="<tr><th colspan=\"5\">";\r
123         content+="Trust of this identity from other identities";\r
124         content+="</th></tr>";\r
125         content+="<tr><td></td><th>Message Trust</th><th>Message Comment</th><th>Trust List Trust</th><th>Trust Comment</th></tr>";\r
126         while(st.RowReturned())\r
127         {\r
128                 std::string thisid="";\r
129                 std::string messagetrustcomment="";\r
130                 std::string trustlisttrustcomment="";\r
131 \r
132                 st.ResultText(0,name);\r
133                 st.ResultText(1,publickey);\r
134                 st.ResultText(2,messagetrust);\r
135                 st.ResultText(3,trustlisttrust);\r
136                 st.ResultText(4,thisid);\r
137                 st.ResultText(5,messagetrustcomment);\r
138                 st.ResultText(6,trustlisttrustcomment);\r
139                 \r
140                 if(publickey.size()>8)\r
141                 {\r
142                         keypart=publickey.substr(3,5);\r
143                 }\r
144 \r
145                 content+="<tr>";\r
146                 content+="<td><a href=\"peerdetails.htm?identityid="+thisid+"\">"+SanitizeOutput(name+keypart)+"...</a></td>";\r
147                 content+="<td "+GetClassString(messagetrust)+">"+messagetrust+"</td>";\r
148                 content+="<td>"+SanitizeOutput(messagetrustcomment)+"</td>";\r
149                 content+="<td "+GetClassString(trustlisttrust)+">"+trustlisttrust+"</td>";\r
150                 content+="<td>"+SanitizeOutput(trustlisttrustcomment)+"</td>";\r
151                 content+="</tr>";\r
152 \r
153                 st.Step();\r
154         }\r
155         content+="</table>";\r
156 \r
157         return "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"+StringFunctions::Replace(m_template,"[CONTENT]",content);\r
158 }\r
159 \r
160 const std::string PeerDetailsPage::GetClassString(const std::string &trustlevel)\r
161 {\r
162         int tempint=0;\r
163         std::string tempstr;\r
164 \r
165         StringFunctions::Convert(trustlevel,tempint);\r
166         tempint/=10;\r
167         StringFunctions::Convert(tempint,tempstr);\r
168 \r
169         if(trustlevel!="")\r
170         {\r
171                 return "class=\"trust"+tempstr+"\"";\r
172         }\r
173         else\r
174         {\r
175                 return "";\r
176         }\r
177 }\r
178 \r
179 const bool PeerDetailsPage::WillHandleURI(const std::string &uri)\r
180 {\r
181         if(uri.find("peerdetails.")!=std::string::npos)\r
182         {\r
183                 return true;\r
184         }\r
185         else\r
186         {\r
187                 return false;\r
188         }\r
189 }\r