version 0.3.29
[fms.git] / src / http / pages / peerdetailspage.cpp
index 9a8fd1b..a569bd9 100644 (file)
@@ -1,5 +1,7 @@
 #include "../../../include/http/pages/peerdetailspage.h"\r
 #include "../../../include/stringfunctions.h"\r
+#include "../../../include/option.h"\r
+#include "../../../include/global.h"\r
 \r
 #ifdef XMEM\r
        #include <xmem.h>\r
@@ -14,10 +16,21 @@ const std::string PeerDetailsPage::GeneratePage(const std::string &method, const
        std::string publickey;\r
        std::string messagetrust;\r
        std::string trustlisttrust;\r
-       std::string keypart="";\r
        std::string lastseen="";\r
        std::string dateadded="";\r
        std::string addedmethod="";\r
+       std::string usk="";\r
+       std::string fcphost="127.0.0.1";\r
+       std::string hidden="";\r
+       int freesiteedition=-1;\r
+       std::string publishtrustlist="";\r
+       std::string messagebase="";\r
+\r
+       Option option(m_db);\r
+       std::string fproxyport="8888";\r
+       option.Get("FProxyPort",fproxyport);\r
+       option.Get("MessageBase",messagebase);\r
+       option.Get("FCPHost",fcphost);\r
 \r
        if(queryvars.find("identityid")!=queryvars.end() && (*queryvars.find("identityid")).second!="")\r
        {\r
@@ -25,14 +38,28 @@ const std::string PeerDetailsPage::GeneratePage(const std::string &method, const
                StringFunctions::Convert((*queryvars.find("identityid")).second,identityid);\r
        }\r
 \r
-       if(identityid!=0 && queryvars.find("formaction")!=queryvars.end() && (*queryvars.find("formaction")).second=="deletemessages")\r
+       if(identityid!=0 && queryvars.find("formaction")!=queryvars.end() && (*queryvars.find("formaction")).second=="deletemessages" && ValidateFormPassword(queryvars))\r
        {\r
                SQLite3DB::Statement del=m_db->Prepare("DELETE FROM tblMessage WHERE IdentityID=?;");\r
                del.Bind(0,identityid);\r
                del.Step();\r
        }\r
 \r
-       SQLite3DB::Statement st=m_db->Prepare("SELECT Name,PublicKey,DateAdded,LastSeen,AddedMethod FROM tblIdentity WHERE IdentityID=?;");\r
+       if(identityid!=0 && queryvars.find("formaction")!=queryvars.end() && (*queryvars.find("formaction")).second=="hide" && ValidateFormPassword(queryvars))\r
+       {\r
+               SQLite3DB::Statement del=m_db->Prepare("UPDATE tblIdentity SET Hidden='true' WHERE IdentityID=?;");\r
+               del.Bind(0,identityid);\r
+               del.Step();\r
+       }\r
+       \r
+       if(identityid!=0 && queryvars.find("formaction")!=queryvars.end() && (*queryvars.find("formaction")).second=="show" && ValidateFormPassword(queryvars))\r
+       {\r
+               SQLite3DB::Statement del=m_db->Prepare("UPDATE tblIdentity SET Hidden='false' WHERE IdentityID=?;");\r
+               del.Bind(0,identityid);\r
+               del.Step();\r
+       }\r
+\r
+       SQLite3DB::Statement st=m_db->Prepare("SELECT Name,PublicKey,DateAdded,LastSeen,AddedMethod,Hidden,FreesiteEdition,PublishTrustList FROM tblIdentity WHERE IdentityID=?;");\r
        st.Bind(0,identityid);\r
        st.Step();\r
 \r
@@ -44,12 +71,61 @@ const std::string PeerDetailsPage::GeneratePage(const std::string &method, const
                st.ResultText(2,dateadded);\r
                st.ResultText(3,lastseen);\r
                st.ResultText(4,addedmethod);\r
+               st.ResultText(5,hidden);\r
+               if(st.ResultNull(6)==false)\r
+               {\r
+                       st.ResultInt(6,freesiteedition);\r
+               }\r
+               st.ResultText(7,publishtrustlist);\r
+\r
+               usk=publickey;\r
+               if(freesiteedition>=0 && usk.find("SSK@")==0)\r
+               {\r
+                       std::string editionstr="";\r
+                       usk.erase(0,3);\r
+                       StringFunctions::Convert(freesiteedition,editionstr);\r
+                       usk="USK"+usk+messagebase+"/"+editionstr+"/";\r
+               }\r
+               else\r
+               {\r
+                       usk="";\r
+               }\r
 \r
                content+="<tr><td>Name</td><td>"+SanitizeOutput(name)+"</td></tr>";\r
                content+="<tr><td>Public Key</td><td class=\"smaller\">"+SanitizeOutput(publickey)+"</td></tr>";\r
+               if(usk!="")\r
+               {\r
+                       content+="<tr><td>Freesite</td><td class=\"smaller\"><a href=\"http://"+fcphost+":"+fproxyport+"/"+SanitizeOutput(usk)+"\">"+SanitizeOutput(usk)+"</a></td></tr>";\r
+               }\r
+               if(publishtrustlist=="true")\r
+               {\r
+                       std::string lastseendate=lastseen;\r
+                       if(lastseendate.size()>=10)\r
+                       {\r
+                               lastseendate=lastseendate.substr(0,10);\r
+                       }\r
+                       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
+               }\r
                content+="<tr><td>Date Added</td><td>"+dateadded+"</td></tr>";\r
                content+="<tr><td>Last Seen</td><td>"+lastseen+"</td></tr>";\r
                content+="<tr><td>Added Method</td><td class=\"smaller\">"+SanitizeOutput(addedmethod)+"</td></tr>";\r
+               content+="<tr><td>Hidden in Main Peer Trust Page</td>";\r
+               content+="<td>"+hidden;\r
+               content+="&nbsp;<form name=\"frmhidden\" method=\"POST\">";\r
+               content+=CreateFormPassword();\r
+               content+="<input type=\"hidden\" name=\"identityid\" value=\""+identityidstr+"\">";\r
+               if(hidden=="false")\r
+               {\r
+                       content+="<input type=\"hidden\" name=\"formaction\" value=\"hide\">";\r
+                       content+="<input type=\"submit\" value=\"Hide\">";\r
+               }\r
+               else\r
+               {\r
+                       content+="<input type=\"hidden\" name=\"formaction\" value=\"show\">";\r
+                       content+="<input type=\"submit\" value=\"Show\">";\r
+               }\r
+               content+="</form>";\r
+               content+="</td></tr>";\r
        }\r
 \r
        // get message count posted by this identity\r
@@ -65,6 +141,7 @@ const std::string PeerDetailsPage::GeneratePage(const std::string &method, const
                content+="<td>Message Count</td>";\r
                content+="<td>"+messagecountstr;\r
                content+="&nbsp;&nbsp;<form name=\"frmdeletemessages\" method=\"POST\">";\r
+               content+=CreateFormPassword();\r
                content+="<input type=\"hidden\" name=\"identityid\" value=\""+identityidstr+"\">";\r
                content+="<input type=\"hidden\" name=\"formaction\" value=\"deletemessages\">";\r
                content+="<input type=\"submit\" value=\"Delete Messages\">";\r
@@ -99,13 +176,8 @@ const std::string PeerDetailsPage::GeneratePage(const std::string &method, const
                st.ResultText(5,messagetrustcomment);\r
                st.ResultText(6,trustlisttrustcomment);\r
 \r
-               if(publickey.size()>8)\r
-               {\r
-                       keypart=publickey.substr(3,5);\r
-               }\r
-\r
                content+="<tr>";\r
-               content+="<td><a href=\"peerdetails.htm?identityid="+thisid+"\">"+SanitizeOutput(name+keypart)+"...</a></td>";\r
+               content+="<td><a href=\"peerdetails.htm?identityid="+thisid+"\">"+SanitizeOutput(CreateShortIdentityName(name,publickey))+"</a></td>";\r
                content+="<td "+GetClassString(messagetrust)+">"+messagetrust+"</td>";\r
                content+="<td>"+SanitizeOutput(messagetrustcomment)+"</td>";\r
                content+="<td "+GetClassString(trustlisttrust)+">"+trustlisttrust+"</td>";\r
@@ -119,6 +191,7 @@ const std::string PeerDetailsPage::GeneratePage(const std::string &method, const
        st.Bind(0,identityid);\r
        st.Step();\r
 \r
+       content+="<tr><th colspan=\"5\"><hr></th></tr>";\r
        content+="<tr><th colspan=\"5\">";\r
        content+="Trust of this identity from other identities";\r
        content+="</th></tr>";\r
@@ -136,14 +209,9 @@ const std::string PeerDetailsPage::GeneratePage(const std::string &method, const
                st.ResultText(4,thisid);\r
                st.ResultText(5,messagetrustcomment);\r
                st.ResultText(6,trustlisttrustcomment);\r
-               \r
-               if(publickey.size()>8)\r
-               {\r
-                       keypart=publickey.substr(3,5);\r
-               }\r
 \r
                content+="<tr>";\r
-               content+="<td><a href=\"peerdetails.htm?identityid="+thisid+"\">"+SanitizeOutput(name+keypart)+"...</a></td>";\r
+               content+="<td><a href=\"peerdetails.htm?identityid="+thisid+"\">"+SanitizeOutput(CreateShortIdentityName(name,publickey))+"</a></td>";\r
                content+="<td "+GetClassString(messagetrust)+">"+messagetrust+"</td>";\r
                content+="<td>"+SanitizeOutput(messagetrustcomment)+"</td>";\r
                content+="<td "+GetClassString(trustlisttrust)+">"+trustlisttrust+"</td>";\r
@@ -154,7 +222,7 @@ const std::string PeerDetailsPage::GeneratePage(const std::string &method, const
        }\r
        content+="</table>";\r
 \r
-       return "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"+StringFunctions::Replace(m_template,"[CONTENT]",content);\r
+       return StringFunctions::Replace(m_template,"[CONTENT]",content);\r
 }\r
 \r
 const std::string PeerDetailsPage::GetClassString(const std::string &trustlevel)\r