version 0.1.10
[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 name;\r
13         std::string publickey;\r
14         std::string messagetrust;\r
15         std::string trustlisttrust;\r
16         std::string keypart="";\r
17         std::string lastseen="";\r
18 \r
19         if(queryvars.find("identityid")!=queryvars.end() && (*queryvars.find("identityid")).second!="")\r
20         {\r
21                 StringFunctions::Convert((*queryvars.find("identityid")).second,identityid);\r
22         }\r
23 \r
24         SQLite3DB::Statement st=m_db->Prepare("SELECT Name,PublicKey,LastSeen FROM tblIdentity WHERE IdentityID=?;");\r
25         st.Bind(0,identityid);\r
26         st.Step();\r
27 \r
28         if(st.RowReturned())\r
29         {\r
30                 st.ResultText(0,name);\r
31                 st.ResultText(1,publickey);\r
32                 st.ResultText(2,lastseen);\r
33 \r
34                 content+="<table>";\r
35                 content+="<tr><td>Name</td><td>"+SanitizeOutput(name)+"</td></tr>";\r
36                 content+="<tr><td>Public Key</td><td>"+SanitizeOutput(publickey)+"</td></tr>";\r
37                 content+="<tr><td>Last Seen</td><td>"+lastseen+"</td></tr>";\r
38                 content+="</table>";\r
39         }\r
40 \r
41         st=m_db->Prepare("SELECT Name,PublicKey,MessageTrust,TrustListTrust,tblIdentity.IdentityID FROM tblPeerTrust INNER JOIN tblIdentity ON tblPeerTrust.TargetIdentityID=tblIdentity.IdentityID WHERE tblPeerTrust.IdentityID=? ORDER BY Name COLLATE NOCASE;");\r
42         st.Bind(0,identityid);\r
43         st.Step();\r
44 \r
45         content+="<table>";\r
46         content+="<tr><th colspan=\"3\">";\r
47         content+="Trust List of this identity";\r
48         content+="</th></tr>";\r
49         content+="<tr><td></td><th>Message Trust</th><th>Trust List Trust</th></tr>";\r
50         while(st.RowReturned())\r
51         {\r
52                 std::string thisid="";\r
53 \r
54                 st.ResultText(0,name);\r
55                 st.ResultText(1,publickey);\r
56                 st.ResultText(2,messagetrust);\r
57                 st.ResultText(3,trustlisttrust);\r
58                 st.ResultText(4,thisid);\r
59 \r
60                 if(publickey.size()>8)\r
61                 {\r
62                         keypart=publickey.substr(3,5);\r
63                 }\r
64 \r
65                 content+="<tr>";\r
66                 content+="<td><a href=\"peerdetails.htm?identityid="+thisid+"\">"+SanitizeOutput(name+keypart)+"...</a></td>";\r
67                 content+="<td "+GetClassString(messagetrust)+">"+messagetrust+"</td>";\r
68                 content+="<td "+GetClassString(trustlisttrust)+">"+trustlisttrust+"</td>";\r
69                 content+="</tr>\r\n";\r
70 \r
71                 st.Step();\r
72         }\r
73 \r
74         st=m_db->Prepare("SELECT Name,PublicKey,MessageTrust,TrustListTrust,tblIdentity.IdentityID FROM tblPeerTrust INNER JOIN tblIdentity ON tblPeerTrust.IdentityID=tblIdentity.IdentityID WHERE tblPeerTrust.TargetIdentityID=? ORDER BY Name COLLATE NOCASE;");\r
75         st.Bind(0,identityid);\r
76         st.Step();\r
77 \r
78         content+="<tr><th colspan=\"3\">";\r
79         content+="Trust of this identity from other identities";\r
80         content+="</th></tr>";\r
81         content+="<tr><td></td><th>Message Trust</th><th>Trust List Trust</th></tr>";\r
82         while(st.RowReturned())\r
83         {\r
84                 std::string thisid="";\r
85 \r
86                 st.ResultText(0,name);\r
87                 st.ResultText(1,publickey);\r
88                 st.ResultText(2,messagetrust);\r
89                 st.ResultText(3,trustlisttrust);\r
90                 st.ResultText(4,thisid);\r
91                 \r
92                 if(publickey.size()>8)\r
93                 {\r
94                         keypart=publickey.substr(3,5);\r
95                 }\r
96 \r
97                 content+="<tr>";\r
98                 content+="<td><a href=\"peerdetails.htm?identityid="+thisid+"\">"+SanitizeOutput(name+keypart)+"...</a></td>";\r
99                 content+="<td "+GetClassString(messagetrust)+">"+messagetrust+"</td>";\r
100                 content+="<td "+GetClassString(trustlisttrust)+">"+trustlisttrust+"</td>";\r
101                 content+="</tr>";\r
102 \r
103                 st.Step();\r
104         }\r
105         content+="</table>";\r
106 \r
107         return "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"+StringFunctions::Replace(m_template,"[CONTENT]",content);\r
108 }\r
109 \r
110 const std::string PeerDetailsPage::GetClassString(const std::string &trustlevel)\r
111 {\r
112         int tempint=0;\r
113         std::string tempstr;\r
114 \r
115         StringFunctions::Convert(trustlevel,tempint);\r
116         tempint/=10;\r
117         StringFunctions::Convert(tempint,tempstr);\r
118 \r
119         if(trustlevel!="")\r
120         {\r
121                 return "class=\"trust"+tempstr+"\"";\r
122         }\r
123         else\r
124         {\r
125                 return "";\r
126         }\r
127 }\r
128 \r
129 const bool PeerDetailsPage::WillHandleURI(const std::string &uri)\r
130 {\r
131         if(uri.find("peerdetails.")!=std::string::npos)\r
132         {\r
133                 return true;\r
134         }\r
135         else\r
136         {\r
137                 return false;\r
138         }\r
139 }\r