1 #include "../../../include/http/pages/peermaintenancepage.h"
\r
2 #include "../../../include/stringfunctions.h"
\r
3 #include "../../../include/datetime.h"
\r
9 const std::string PeerMaintenancePage::GeneratePage(const std::string &method, const std::map<std::string,std::string> &queryvars)
\r
11 std::string content="";
\r
12 SQLite3DB::Statement st;
\r
13 std::string tempval;
\r
16 if(queryvars.find("formaction")!=queryvars.end())
\r
18 if((*queryvars.find("formaction")).second=="removenotseen")
\r
20 m_db->Execute("DELETE FROM tblIdentity WHERE LastSeen IS NULL;");
\r
22 else if((*queryvars.find("formaction")).second=="removelastseen20")
\r
25 date.Add(0,0,0,-20);
\r
26 st=m_db->Prepare("DELETE FROM tblIdentity WHERE LastSeen<?;");
\r
27 st.Bind(0,date.Format("%Y-%m-%d %H:%M:%S"));
\r
30 else if((*queryvars.find("formaction")).second=="removeneversent")
\r
32 m_db->Execute("DELETE FROM tblIdentity WHERE IdentityID NOT IN (SELECT IdentityID FROM tblMessage GROUP BY IdentityID);");
\r
34 else if((*queryvars.find("formaction")).second=="removelastseenneversent20")
\r
37 date.Add(0,0,0,-20);
\r
38 st=m_db->Prepare("DELETE FROM tblIdentity WHERE IdentityID NOT IN (SELECT IdentityID FROM tblMessage GROUP BY IdentityID) AND LastSeen<?;");
\r
39 st.Bind(0,date.Format("%Y-%m-%d %H:%M:%S"));
\r
42 else if((*queryvars.find("formaction")).second=="removedaysago" && queryvars.find("daysago")!=queryvars.end() && (*queryvars.find("daysago")).second!="")
\r
45 StringFunctions::Convert((*queryvars.find("daysago")).second,tempint);
\r
47 date.Add(0,0,0,-tempint);
\r
48 st=m_db->Prepare("DELETE FROM tblIdentity WHERE LastSeen<?;");
\r
49 st.Bind(0,date.Format("%Y-%m-%d %H:%M:%S"));
\r
52 else if((*queryvars.find("formaction")).second=="removenulldaysago" && queryvars.find("daysago")!=queryvars.end() && (*queryvars.find("daysago")).second!="")
\r
55 StringFunctions::Convert((*queryvars.find("daysago")).second,tempint);
\r
57 date.Add(0,0,0,-tempint);
\r
58 st=m_db->Prepare("DELETE FROM tblIdentity WHERE LastSeen<? AND LocalMessageTrust IS NULL AND LocalTrustListTrust IS NULL;");
\r
59 st.Bind(0,date.Format("%Y-%m-%d %H:%M:%S"));
\r
64 content+="<h2>Peer Maintenance</h2>";
\r
65 content+="<p class=\"paragraph\">Removing a peer will not remove the messages they sent, but will remove everything else about that peer, including their trust levels.</p>";
\r
67 content+="<tr><th colspan=\"3\">Stats</th></tr>";
\r
70 st=m_db->Prepare("SELECT COUNT(*) FROM tblIdentity;");
\r
72 st.ResultText(0,tempval);
\r
73 content+="<td>"+tempval+"</td>";
\r
74 content+="<td>known peers</td>";
\r
78 st=m_db->Prepare("SELECT COUNT(*) FROM tblIdentity WHERE LastSeen IS NULL;");
\r
80 st.ResultText(0,tempval);
\r
81 content+="<td>"+tempval+"</td>";
\r
82 content+="<td>never seen</td>";
\r
84 content+="<form name=\"frmremove\" method=\"POST\">";
\r
85 content+="<input type=\"hidden\" name=\"formaction\" value=\"removenotseen\">";
\r
86 content+="<input type=\"submit\" value=\"Remove\">";
\r
92 date.Add(0,0,0,-20);
\r
93 st=m_db->Prepare("SELECT COUNT(*) FROM tblIdentity WHERE LastSeen<?;");
\r
94 st.Bind(0,date.Format("%Y-%m-%d %H:%M:%S"));
\r
96 st.ResultText(0,tempval);
\r
98 content+="<td>"+tempval+"</td>";
\r
99 content+="<td>last seen more than 20 days ago</td>";
\r
101 content+="<form name=\"frmremove\" method=\"POST\">";
\r
102 content+="<input type=\"hidden\" name=\"formaction\" value=\"removelastseen20\">";
\r
103 content+="<input type=\"submit\" value=\"Remove\">";
\r
104 content+="</form>";
\r
108 st=m_db->Prepare("SELECT COUNT(*) FROM tblIdentity LEFT JOIN tblMessage ON tblIdentity.IdentityID=tblMessage.IdentityID WHERE tblMessage.IdentityID IS NULL;");
\r
110 st.ResultText(0,tempval);
\r
112 content+="<td>"+tempval+"</td>";
\r
113 content+="<td>never sent a message</td>";
\r
115 content+="<form name=\"frmremove\" method=\"POST\">";
\r
116 content+="<input type=\"hidden\" name=\"formaction\" value=\"removeneversent\">";
\r
117 content+="<input type=\"submit\" value=\"Remove\">";
\r
118 content+="</form>";
\r
122 date.SetToGMTime();
\r
123 date.Add(0,0,0,-20);
\r
124 st=m_db->Prepare("SELECT COUNT(*) FROM tblIdentity LEFT JOIN tblMessage ON tblIdentity.IdentityID=tblMessage.IdentityID WHERE tblMessage.IdentityID IS NULL AND tblIdentity.LastSeen<?;");
\r
125 st.Bind(0,date.Format("%Y-%m-%d %H:%M:%S"));
\r
127 st.ResultText(0,tempval);
\r
129 content+="<td>"+tempval+"</td>";
\r
130 content+="<td>last seen more than 20 days ago and never sent a message</td>";
\r
132 content+="<form name=\"frmremove\" method=\"POST\">";
\r
133 content+="<input type=\"hidden\" name=\"formaction\" value=\"removelastseenneversent20\">";
\r
134 content+="<input type=\"submit\" value=\"Remove\">";
\r
135 content+="</form>";
\r
140 content+="<td><form name=\"frmdelete\" method=\"POST\"><input type=\"hidden\" name=\"formaction\" value=\"removedaysago\"></td>";
\r
141 content+="<td>last seen <input type=\"text\" name=\"daysago\" size=\"2\"> days ago</td>";
\r
142 content+="<td><input type=\"submit\" value=\"Remove\"></form></td>";
\r
146 content+="<td><form name=\"frmdelete\" method=\"POST\"><input type=\"hidden\" name=\"formaction\" value=\"removenulldaysago\"></td>";
\r
147 content+="<td>last seen <input type=\"text\" name=\"daysago\" size=\"2\"> days ago, and have null local trust</td>";
\r
148 content+="<td><input type=\"submit\" value=\"Remove\"></form></td>";
\r
151 content+="</table>";
\r
153 return "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"+StringFunctions::Replace(m_template,"[CONTENT]",content);
\r
156 const bool PeerMaintenancePage::WillHandleURI(const std::string &uri)
\r
158 if(uri.find("peermaintenance.")!=std::string::npos)
\r