version 0.2.5
authorSomeDude <SomeDude@NuBL7aaJ6Cn4fB7GXFb9Zfi8w1FhPyW3oKgU9TweZMw>
Sun, 30 Mar 2008 07:17:00 +0000 (09:17 +0200)
committerDavid ‘Bombe’ Roden <bombe@freenetproject.org>
Sun, 30 Mar 2008 07:17:00 +0000 (09:17 +0200)
include/global.h
readme.txt
src/freenet/identityrequester.cpp
src/global.cpp
src/http/pages/boardspage.cpp
src/http/pages/createidentitypage.cpp
src/http/pages/localidentitiespage.cpp
src/http/pages/peerdetailspage.cpp
src/http/pages/peertrustpage.cpp
template.htm

index 0c1be3b..f2b227b 100644 (file)
@@ -4,7 +4,7 @@
 #include <vector>\r
 #include "pthreadwrapper/thread.h"\r
 \r
-#define FMS_VERSION    "0.2.4"\r
+#define FMS_VERSION    "0.2.5"\r
 \r
 // opens database and creates tables and initial inserts if necessary\r
 void SetupDB();\r
index c9cca81..e853ecb 100644 (file)
@@ -72,7 +72,8 @@ template by placing an HTML file called identityname-template.htm in the same
 directory as the fms binary.  In the template, the string [LINKS] will be\r
 replaced by a <ul> list of links and [CONTENT] will be replaced by the page\r
 content.  The Freesite will be inserted once a day and contain your last 10\r
-posts and your trust list if you are publishing it.\r
+posts and your trust list if you are publishing it.  The site will be inserted\r
+to a USK accessible via: USK@yourpublickey.../fms/0/\r
 \r
 TRUST\r
 -----\r
index b12fe08..e464cfb 100644 (file)
@@ -28,6 +28,7 @@ const bool IdentityRequester::HandleAllData(FCPMessage &message)
        IdentityXML xml;\r
        long identityid;\r
        long index;\r
+       std::string name="";\r
 \r
        now.SetToGMTime();\r
        StringFunctions::Split(message["Identifier"],"|",idparts);\r
@@ -56,7 +57,12 @@ const bool IdentityRequester::HandleAllData(FCPMessage &message)
        {\r
 \r
                st=m_db->Prepare("UPDATE tblIdentity SET Name=?, SingleUse=?, LastSeen=?, PublishTrustList=?, PublishBoardList=? WHERE IdentityID=?");\r
-               st.Bind(0,xml.GetName());\r
+               name=xml.GetName();\r
+               if(name.size()>40)\r
+               {\r
+                       name.erase(40);\r
+               }\r
+               st.Bind(0,name);\r
                if(xml.GetSingleUse()==true)\r
                {\r
                        st.Bind(1,"true");\r
index d241f06..035cdc3 100644 (file)
@@ -194,6 +194,9 @@ void SetupDB()
                                TrustListTrustComment   TEXT\\r
                                );");\r
 \r
+       db->Execute("CREATE INDEX IF NOT EXISTS idxPeerTrust_IdentityID ON tblPeerTrust (IdentityID);");\r
+       db->Execute("CREATE INDEX IF NOT EXISTS idxPeerTrust_TargetIdentityID ON tblPeerTrust (TargetIdentityID);");\r
+\r
        db->Execute("CREATE TABLE IF NOT EXISTS tblBoard(\\r
                                BoardID                                 INTEGER PRIMARY KEY,\\r
                                BoardName                               TEXT UNIQUE,\\r
@@ -220,6 +223,8 @@ void SetupDB()
                                MessageIndex            INTEGER\\r
                                );");\r
 \r
+       db->Execute("CREATE INDEX IF NOT EXISTS idxMessage_IdentityID ON tblMessage (IdentityID);");\r
+\r
        db->Execute("CREATE TABLE IF NOT EXISTS tblMessageReplyTo(\\r
                                MessageID                       INTEGER,\\r
                                ReplyToMessageUUID      TEXT,\\r
@@ -231,6 +236,8 @@ void SetupDB()
                                BoardID                         INTEGER\\r
                                );");\r
 \r
+       db->Execute("CREATE INDEX IF NOT EXISTS idxMessageBoard_BoardID ON tblMessageBoard (BoardID);");\r
+\r
        db->Execute("CREATE TABLE IF NOT EXISTS tblMessageListRequests(\\r
                                IdentityID                      INTEGER,\\r
                                Day                                     DATE,\\r
@@ -298,7 +305,7 @@ void SetupDB()
                                GROUP BY tblBoard.BoardID;");\r
 \r
        // calculates peer trust\r
-       // do the (MessageTrust+1)*LocalTrustListTrust/(MessageTrust+1)/100.0 - so it MessageTrust or TrustListTrust is NULL, the calc will be NULL and it won't be included at all in the average\r
+       // do the (MessageTrust+1)*LocalTrustListTrust/(MessageTrust+1)/100.0 - so if MessageTrust or TrustListTrust is NULL, the calc will be NULL and it won't be included at all in the average\r
        // need the +1 so that when the values are 0 the result is not 0\r
        db->Execute("DROP VIEW IF EXISTS vwCalculatedPeerTrust;");\r
        db->Execute("CREATE VIEW IF NOT EXISTS vwCalculatedPeerTrust AS \\r
@@ -396,7 +403,7 @@ void SetupDB()
 \r
        date.SetToGMTime();\r
        // insert SomeDude's public key\r
-       db->Execute("INSERT INTO tblIdentity(PublicKey,DateAdded,LocalTrustListTrust) VALUES('SSK@NuBL7aaJ6Cn4fB7GXFb9Zfi8w1FhPyW3oKgU9TweZMw,iXez4j3qCpd596TxXiJgZyTq9o-CElEuJxm~jNNZAuA,AQACAAE/','"+date.Format("%Y-%m-%d %H:%M:%S")+"',51);");\r
+       db->Execute("INSERT INTO tblIdentity(PublicKey,DateAdded,LocalTrustListTrust) VALUES('SSK@NuBL7aaJ6Cn4fB7GXFb9Zfi8w1FhPyW3oKgU9TweZMw,iXez4j3qCpd596TxXiJgZyTq9o-CElEuJxm~jNNZAuA,AQACAAE/','"+date.Format("%Y-%m-%d %H:%M:%S")+"',50);");\r
        // insert Shadow Panther's public key\r
        db->Execute("INSERT INTO tblIdentity(PublicKey,DateAdded) VALUES('SSK@~mimyB1kmH4f7Cgsd2wM2Qv2NxrZHRMM6IY8~7EWRVQ,fxTKkR0TYhgMYb-vEGAv55sMOxCGD2xhE4ZxWHxdPz4,AQACAAE/','"+date.Format("%Y-%m-%d %H:%M:%S")+"');");\r
        // insert garfield's public key\r
index ed8d469..dce33b8 100644 (file)
@@ -63,7 +63,7 @@ const std::string BoardsPage::GeneratePage(const std::string &method, const std:
                }\r
                if((*queryvars.find("formaction")).second=="remove0messages")\r
                {\r
-                       m_db->Execute("DELETE FROM tblBoard WHERE BoardID IN (SELECT BoardID FROM vwBoardStats WHERE MessageCount=0);");\r
+                       m_db->Execute("DELETE FROM tblBoard WHERE BoardID IN (SELECT BoardID FROM vwBoardStats WHERE MessageCount=0 AND BoardID NOT IN (SELECT BoardID FROM tblAdministrationBoard));");\r
                }\r
                if((*queryvars.find("formaction")).second=="update")\r
                {\r
index c28fa64..8d67e07 100644 (file)
@@ -33,7 +33,7 @@ const std::string CreateIdentityPage::GeneratePage(const std::string &method, co
                content+="<h2>Create Identity</h2>";\r
                content+="<form name=\"frmcreateidentity\" method=\"POST\">";\r
                content+="<input type=\"hidden\" name=\"formaction\" value=\"create\">";\r
-               content+="Name : <input type=\"text\" name=\"name\">";\r
+               content+="Name : <input type=\"text\" name=\"name\" maxlength=\"40\">";\r
                content+=" <input type=\"submit\" value=\"Create\">";\r
                content+="</form>";\r
        }\r
index 8b6afcb..f84362e 100644 (file)
@@ -203,9 +203,9 @@ const std::string LocalIdentitiesPage::GeneratePage(const std::string &method, c
 \r
        content+="<hr>";\r
 \r
-       content+="<form name=\"frmlocalidentity\" method=\"POST\">";\r
-       content+="<input type=\"hidden\" name=\"formaction\" value=\"update\">";\r
-       content+="<table><tr><td></td><th>Name</th><th>Single Use</th><th>Publish Trust List</th><th>Publish Board List</th><th>Publish Freesite</th><th>Announced? *</th></tr>";\r
+//     content+="<form name=\"frmlocalidentity\" method=\"POST\">";\r
+//     content+="<input type=\"hidden\" name=\"formaction\" value=\"update\">";\r
+       content+="<table><tr><th>Name</th><th>Single Use</th><th>Publish Trust List</th><th>Publish Board List</th><th>Publish Freesite</th><th>Announced? *</th></tr>";\r
 \r
        SQLite3DB::Statement st=m_db->Prepare("SELECT LocalIdentityID,tblLocalIdentity.Name,tblLocalIdentity.PublicKey,tbLLocalIdentity.PublishTrustList,tblLocalIdentity.SingleUse,tblLocalIdentity.PublishBoardList,tblIdentity.IdentityID,tblLocalIdentity.PublishFreesite FROM tblLocalIdentity LEFT JOIN tblIdentity ON tblLocalIdentity.PublicKey=tblIdentity.PublicKey ORDER BY tblLocalIdentity.Name;");\r
        st.Step();\r
@@ -237,8 +237,8 @@ const std::string LocalIdentitiesPage::GeneratePage(const std::string &method, c
                }\r
 \r
                content+="<tr>";\r
-               content+="<td><input type=\"checkbox\" name=\"chkidentityid["+countstr+"]\" value=\""+id+"\"></td>";\r
-               content+="<td title=\""+publickey+"\">"+SanitizeOutput(name+keypart)+"...</td>";\r
+//             content+="<td><input type=\"checkbox\" name=\"chkidentityid["+countstr+"]\" value=\""+id+"\"></td>";\r
+               content+="<td title=\""+publickey+"\"><form name=\"frmupdate\""+countstr+"\" method=\"POST\"><input type=\"hidden\" name=\"formaction\" value=\"update\"><input type=\"hidden\" name=\"chkidentityid["+countstr+"]\" value=\""+id+"\">"+SanitizeOutput(name+keypart)+"...</td>";\r
                content+="<td>"+CreateTrueFalseDropDown("singleuse["+countstr+"]",singleuse)+"</td>";\r
                content+="<td>"+CreateTrueFalseDropDown("publishtrustlist["+countstr+"]",publishtrustlist)+"</td>";\r
                content+="<td>"+CreateTrueFalseDropDown("publishboardlist["+countstr+"]",publishboardlist)+"</td>";\r
@@ -251,12 +251,14 @@ const std::string LocalIdentitiesPage::GeneratePage(const std::string &method, c
                {\r
                        content+="<td>Yes</td>";\r
                }\r
+               content+="<td><input type=\"submit\" value=\"Update\"></form></td>";\r
+               content+="<td><form name=\"frmdel\""+countstr+"\" method=\"POST\"><input type=\"hidden\" name=\"formaction\" value=\"delete\"><input type=\"hidden\" name=\"chkidentityid["+countstr+"]\" value=\""+id+"\"><input type=\"submit\" value=\"Delete\"></form></td>";\r
                content+="</tr>";\r
                st.Step();\r
                count++;\r
        }\r
 \r
-       content+="<tr><td colspan=\"5\"><center><input type=\"submit\" value=\"Update Selected\"> <input type=\"submit\" value=\"Delete Selected\"></td></tr>";\r
+//     content+="<tr><td colspan=\"5\"><center><input type=\"submit\" value=\"Update Selected\"> <input type=\"submit\" value=\"Delete Selected\" onClick=\"if(confirm('Delete Selected Identities?')){frmlocalidentity.formaction.value='delete';}else{return false;}\"></td></tr>";\r
        content+="</table>";\r
        content+="<p class=\"paragraph\">* An identity is considered successfully announced when you have downloaded a trust list from someone that contains the identity.</p>";\r
        content+="<p class=\"paragraph\">Single Use Identities will automatically be deleted 7 days after creation.</p>";\r
index 9a8fd1b..fc522b0 100644 (file)
@@ -1,5 +1,6 @@
 #include "../../../include/http/pages/peerdetailspage.h"\r
 #include "../../../include/stringfunctions.h"\r
+#include "../../../include/option.h"\r
 \r
 #ifdef XMEM\r
        #include <xmem.h>\r
@@ -18,6 +19,8 @@ const std::string PeerDetailsPage::GeneratePage(const std::string &method, const
        std::string lastseen="";\r
        std::string dateadded="";\r
        std::string addedmethod="";\r
+       std::string usk="";\r
+       std::string fcphost="";\r
 \r
        if(queryvars.find("identityid")!=queryvars.end() && (*queryvars.find("identityid")).second!="")\r
        {\r
@@ -32,6 +35,8 @@ const std::string PeerDetailsPage::GeneratePage(const std::string &method, const
                del.Step();\r
        }\r
 \r
+       Option::Instance()->Get("FCPHost",fcphost);\r
+\r
        SQLite3DB::Statement st=m_db->Prepare("SELECT Name,PublicKey,DateAdded,LastSeen,AddedMethod FROM tblIdentity WHERE IdentityID=?;");\r
        st.Bind(0,identityid);\r
        st.Step();\r
@@ -45,8 +50,16 @@ const std::string PeerDetailsPage::GeneratePage(const std::string &method, const
                st.ResultText(3,lastseen);\r
                st.ResultText(4,addedmethod);\r
 \r
+               usk=publickey;\r
+               if(usk.find("SSK@")==0)\r
+               {\r
+                       usk.erase(0,3);\r
+                       usk="USK"+usk+"/fms/0/";\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
+               content+="<tr><td>Freesite</td><td class=\"smaller\"><a href=\"http://"+fcphost+":8888/"+SanitizeOutput(usk)+"\">"+SanitizeOutput(usk)+"</a></td></tr>";\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
index 0cb0d42..ea01cc4 100644 (file)
@@ -179,14 +179,16 @@ const std::string PeerTrustPage::GeneratePage(const std::string &method, const s
        {\r
                content+="<input type=\"hidden\" name=\"namesearch\" value=\""+SanitizeOutput(namesearch)+"\">";\r
        }\r
-       content+="<table>";\r
+       content+="<table class=\"small90\">";\r
        content+="<tr><th><a href=\"peertrust.htm?"+BuildQueryString(startrow,namesearch,"Name",ReverseSort("Name",sortby,sortorder))+"\">Name</a></th>";\r
        content+="<th><a href=\"peertrust.htm?"+BuildQueryString(startrow,namesearch,"LocalMessageTrust",ReverseSort("LocalMessageTrust",sortby,sortorder))+"\">Local Message Trust</a></th>";\r
        content+="<th>Message Comment</th>";\r
        content+="<th><a href=\"peertrust.htm?"+BuildQueryString(startrow,namesearch,"PeerMessageTrust",ReverseSort("PeerMessageTrust",sortby,sortorder))+"\">Peer Message Trust</a></th>";\r
        content+="<th><a href=\"peertrust.htm?"+BuildQueryString(startrow,namesearch,"LocalTrustListTrust",ReverseSort("LocalTrustListTrust",sortby,sortorder))+"\">Local Trust List Trust</a></th>";\r
        content+="<th>Trust Comment</th>";\r
-       content+="<th><a href=\"peertrust.htm?"+BuildQueryString(startrow,namesearch,"PeerTrustListTrust",ReverseSort("PeerTrustListTrust",sortby,sortorder))+"\">Peer Trust List Trust</a></th></tr>";\r
+       content+="<th><a href=\"peertrust.htm?"+BuildQueryString(startrow,namesearch,"PeerTrustListTrust",ReverseSort("PeerTrustListTrust",sortby,sortorder))+"\">Peer Trust List Trust</a></th>";\r
+       content+="<th><a href=\"peertrust.htm?"+BuildQueryString(startrow,namesearch,"MessageCount",ReverseSort("MessageCount",sortby,sortorder))+"\">Message Count</a></th>";\r
+       content+="</tr>\r\n";\r
        \r
        // get count of identities we are showing\r
        sql="SELECT COUNT(*) FROM tblIdentity";\r
@@ -204,11 +206,12 @@ const std::string PeerTrustPage::GeneratePage(const std::string &method, const s
        st.ResultInt(0,identitycount);\r
        st.Finalize();\r
 \r
-       sql="SELECT IdentityID,Name,LocalMessageTrust,PeerMessageTrust,LocalTrustListTrust,PeerTrustListTrust,PublicKey,MessageTrustComment,TrustListTrustComment FROM tblIdentity";\r
+       sql="SELECT tblIdentity.IdentityID,Name,LocalMessageTrust,PeerMessageTrust,LocalTrustListTrust,PeerTrustListTrust,PublicKey,MessageTrustComment,TrustListTrustComment,COUNT(MessageID) AS 'MessageCount' FROM tblIdentity LEFT JOIN tblMessage ON tblIdentity.IdentityID=tblMessage.IdentityID";\r
        if(namesearch!="")\r
        {\r
                sql+=" WHERE Name LIKE  '%' || ? || '%'";\r
        }\r
+       sql+=" GROUP BY tblIdentity.IdentityID";\r
        sql+=" ORDER BY";\r
        if(sortby=="Name")\r
        {\r
@@ -242,6 +245,7 @@ const std::string PeerTrustPage::GeneratePage(const std::string &method, const s
                std::string keypart="";\r
                std::string messagetrustcomment="";\r
                std::string trustlisttrustcomment="";\r
+               std::string messagecountstr="";\r
 \r
                StringFunctions::Convert(count,countstr);\r
 \r
@@ -254,6 +258,7 @@ const std::string PeerTrustPage::GeneratePage(const std::string &method, const s
                st.ResultText(6,publickey);\r
                st.ResultText(7,messagetrustcomment);\r
                st.ResultText(8,trustlisttrustcomment);\r
+               st.ResultText(9,messagecountstr);\r
 \r
                if(publickey.size()>8)\r
                {\r
@@ -276,23 +281,24 @@ const std::string PeerTrustPage::GeneratePage(const std::string &method, const s
                content+="</td>";\r
                content+="<td "+GetClassString(localmessagetrust)+">";\r
                content+="<input type=\"hidden\" name=\"oldlocalmessagetrust["+countstr+"]\" value=\""+localmessagetrust+"\">";\r
-               content+="<input type=\"text\" name=\"localmessagetrust["+countstr+"]\" value=\""+localmessagetrust+"\" size=\"2\" maxlength=\"3\"></td>";\r
+               content+="<input type=\"text\" name=\"localmessagetrust["+countstr+"]\" value=\""+localmessagetrust+"\" size=\"2\" maxlength=\"3\" class=\"small90\"></td>";\r
                content+="<td "+GetClassString(localmessagetrust)+">";\r
                content+="<input type=\"hidden\" name=\"oldmessagetrustcomment["+countstr+"]\" value=\""+SanitizeOutput(messagetrustcomment)+"\">";\r
-               content+="<input type=\"text\" name=\"messagetrustcomment["+countstr+"]\" value=\""+SanitizeOutput(messagetrustcomment)+"\" maxlength=\"50\">";\r
+               content+="<input type=\"text\" name=\"messagetrustcomment["+countstr+"]\" value=\""+SanitizeOutput(messagetrustcomment)+"\" maxlength=\"50\" class=\"small90\">";\r
                content+="</td>";               \r
                content+="<td "+GetClassString(peermessagetrust)+">";\r
                content+=peermessagetrust+"</td>";\r
                content+="<td "+GetClassString(localtrustlisttrust)+">";\r
                content+="<input type=\"hidden\" name=\"oldlocaltrustlisttrust["+countstr+"]\" value=\""+localtrustlisttrust+"\">";\r
-               content+="<input type=\"text\" name=\"localtrustlisttrust["+countstr+"]\" value=\""+localtrustlisttrust+"\" size=\"2\" maxlength=\"3\"></td>";\r
+               content+="<input type=\"text\" name=\"localtrustlisttrust["+countstr+"]\" value=\""+localtrustlisttrust+"\" size=\"2\" maxlength=\"3\" class=\"small90\"></td>";\r
                content+="<td "+GetClassString(localtrustlisttrust)+">";\r
                content+="<input type=\"hidden\" name=\"oldtrustlisttrustcomment["+countstr+"]\" value=\""+SanitizeOutput(trustlisttrustcomment)+"\">";\r
-               content+="<input type=\"text\" name=\"trustlisttrustcomment["+countstr+"]\" value=\""+SanitizeOutput(trustlisttrustcomment)+"\" maxlength=\"50\">";\r
+               content+="<input type=\"text\" name=\"trustlisttrustcomment["+countstr+"]\" value=\""+SanitizeOutput(trustlisttrustcomment)+"\" maxlength=\"50\" class=\"small90\">";\r
                content+="</td>";\r
                content+="<td "+GetClassString(peertrustlisttrust)+">";\r
                content+=peertrustlisttrust+"</td>";\r
-               content+="</tr>";\r
+               content+="<td>"+messagecountstr+"</td>";\r
+               content+="</tr>\r\n";\r
                st.Step();\r
                count++;\r
        }\r
@@ -311,7 +317,7 @@ const std::string PeerTrustPage::GeneratePage(const std::string &method, const s
                }\r
                if(startrow+rowsperpage<identitycount)\r
                {\r
-                       while(cols<4)\r
+                       while(cols<5)\r
                        {\r
                                content+="<td></td>";\r
                                cols++;\r
index 1320715..c35813c 100644 (file)
@@ -201,6 +201,18 @@ form       { display:inline; }
 th             { padding-left:5px; padding-right:5px; }\r
 td             { padding-left:5px; padding-right:5px; }\r
 \r
+.small90       {\r
+                               font-size:90%;\r
+                       }\r
+\r
+.small80       {\r
+                               font-size:80%;\r
+                       }\r
+                       \r
+.small70       {\r
+                               font-size:70%;\r
+                       }\r
+\r
 </style>\r
 </head>\r
 \r