From 175f098e7e712b839db433b93fe8649a402c6784 Mon Sep 17 00:00:00 2001 From: SomeDude Date: Fri, 21 Mar 2008 14:13:00 +0100 Subject: [PATCH] version 0.2.2 --- include/freenet/trustlistxml.h | 8 ++- include/global.h | 3 +- readme.txt | 2 +- src/freenet/captcha/simplecaptcha.cpp | 99 +++++++++++++++++++++++++-- src/freenet/identityintroductionrequester.cpp | 3 +- src/freenet/identityrequester.cpp | 8 ++- src/freenet/trustlistinserter.cpp | 8 ++- src/freenet/trustlistrequester.cpp | 46 ++++++++++++- src/freenet/trustlistxml.cpp | 50 +++++++++++++- src/global.cpp | 61 +++++++++++------ src/http/pages/peerdetailspage.cpp | 25 +++++-- src/http/pages/peertrustpage.cpp | 40 ++++++++--- src/main.cpp | 1 + 13 files changed, 300 insertions(+), 54 deletions(-) diff --git a/include/freenet/trustlistxml.h b/include/freenet/trustlistxml.h index ac16d1f..7d08616 100644 --- a/include/freenet/trustlistxml.h +++ b/include/freenet/trustlistxml.h @@ -12,10 +12,12 @@ class TrustListXML:public IFMSXMLDocument,public ILogger private: struct trust { - trust(const std::string &identity, const long messagetrust, const long trustlisttrust):m_identity(identity),m_messagetrust(messagetrust),m_trustlisttrust(trustlisttrust) {} + trust(const std::string &identity, const long messagetrust, const long trustlisttrust, const std::string &messagetrustcomment, const std::string &trustlisttrustcomment):m_identity(identity),m_messagetrust(messagetrust),m_trustlisttrust(trustlisttrust),m_messagetrustcomment(messagetrustcomment),m_trustlisttrustcomment(trustlisttrustcomment) {} std::string m_identity; long m_messagetrust; long m_trustlisttrust; + std::string m_messagetrustcomment; + std::string m_trustlisttrustcomment; }; public: TrustListXML(); @@ -26,12 +28,14 @@ public: void ClearTrust() { m_trust.clear(); } - void AddTrust(const std::string &identity, const long messagetrust, const long trustlisttrust); + void AddTrust(const std::string &identity, const long messagetrust, const long trustlisttrust, const std::string &messagetrustcomment, const std::string &trustlisttrustcomment); const std::vector::size_type TrustCount() { return m_trust.size(); } std::string GetIdentity(const long index); long GetMessageTrust(const long index); long GetTrustListTrust(const long index); + std::string GetMessageTrustComment(const long index); + std::string GetTrustListTrustComment(const long index); private: void Initialize(); diff --git a/include/global.h b/include/global.h index ddd6fa3..5240cc7 100644 --- a/include/global.h +++ b/include/global.h @@ -5,13 +5,14 @@ //#include #include "pthreadwrapper/thread.h" -#define FMS_VERSION "0.2.1" +#define FMS_VERSION "0.2.2" // opens database and creates tables and initial inserts if necessary void SetupDB(); void ConvertDB0100To0101(); void ConvertDB0101To0103(); void ConvertDB0103To0104(); +void ConvertDB0104To0105(); // inserts default options into the database void SetupDefaultOptions(); // opens logfile and sets it up diff --git a/readme.txt b/readme.txt index 1c0fe8a..4cbc6d9 100644 --- a/readme.txt +++ b/readme.txt @@ -68,7 +68,7 @@ TRUST ----- Trust is the most important element of FMS. It determines which identities you will download messages from and thus your overall experience. Do not give -trust to arbitrary identities. Pick whom you trust wisely. There settings for +trust to arbitrary identities. Pick whom you trust wisely. The settings for minimum trust before downloading messages and trust lists can be changed on the web interface. diff --git a/src/freenet/captcha/simplecaptcha.cpp b/src/freenet/captcha/simplecaptcha.cpp index 60e1d39..c84010f 100644 --- a/src/freenet/captcha/simplecaptcha.cpp +++ b/src/freenet/captcha/simplecaptcha.cpp @@ -12,6 +12,7 @@ void SimpleCaptcha::Generate() BMP bmp; int bmpwidth=100; int bmpheight=50; + RGBApixel lettercols[5]; std::string puzzlestring; std::string tempfilename=GenerateRandomString(10); tempfilename+=".bmp"; @@ -23,7 +24,7 @@ void SimpleCaptcha::Generate() bmp.SetSize(bmpwidth,bmpheight); // first draw some random lines around the bitmap - int numlines=(rand()%20)+10; + int numlines=(rand()%10)+10; for(int i=0; iskew; xx--) + { + pixel=bmp.GetPixel(xx-skew,yy); + bmp.SetPixel(xx,yy,pixel); + } + } + for(xx=bmpwidth+skew; xx 255 ? tempred=255 : false; + tempgreen < 0 ? tempgreen=0 : false; + tempgreen > 255 ? tempgreen=255 : false; + tempblue < 0 ? tempblue=0 : false; + tempblue > 255 ? tempblue=255 : false; + + pixel.Red=tempred; + pixel.Green=tempgreen; + pixel.Blue=tempblue; + + bmp.SetPixel(xx,yy,pixel); + } } bmp.WriteToFile(tempfilename.c_str()); diff --git a/src/freenet/identityintroductionrequester.cpp b/src/freenet/identityintroductionrequester.cpp index c408f48..0e5e3dd 100644 --- a/src/freenet/identityintroductionrequester.cpp +++ b/src/freenet/identityintroductionrequester.cpp @@ -82,9 +82,10 @@ const bool IdentityIntroductionRequester::HandleAllData(FCPMessage &message) // we don't already know about this id - add it st.Finalize(); date.SetToGMTime(); - st=m_db->Prepare("INSERT INTO tblIdentity(PublicKey,DateAdded) VALUES(?,?);"); + st=m_db->Prepare("INSERT INTO tblIdentity(PublicKey,DateAdded,AddedMethod) VALUES(?,?,?);"); st.Bind(0,xml.GetIdentity()); st.Bind(1,date.Format("%Y-%m-%d %H:%M:%S")); + st.Bind(2,"solved captcha"); st.Step(); } st.Finalize(); diff --git a/src/freenet/identityrequester.cpp b/src/freenet/identityrequester.cpp index 93d65a8..b12fe08 100644 --- a/src/freenet/identityrequester.cpp +++ b/src/freenet/identityrequester.cpp @@ -171,10 +171,12 @@ void IdentityRequester::PopulateIDList() int id; date.SetToGMTime(); - date.Add(0,0,-1); + date.SetHour(0); + date.SetMinute(0); + date.SetSecond(0); - // select identities we want to query (haven't seen in last hour) - sort by their trust level (descending) with secondary sort on how long ago we saw them (ascending) - SQLite3DB::Statement st=m_db->Prepare("SELECT IdentityID FROM tblIdentity WHERE PublicKey IS NOT NULL AND PublicKey <> '' AND (LastSeen IS NULL OR LastSeen<='"+date.Format("%Y-%m-%d %H:%M:%S")+"') ORDER BY LocalMessageTrust+LocalTrustListTrust DESC, LastSeen;"); + // select identities we want to query (haven't seen yet today) - sort by their trust level (descending) with secondary sort on how long ago we saw them (ascending) + SQLite3DB::Statement st=m_db->Prepare("SELECT IdentityID FROM tblIdentity WHERE PublicKey IS NOT NULL AND PublicKey <> '' AND (LastSeen IS NULL OR LastSeen<'"+date.Format("%Y-%m-%d %H:%M:%S")+"') ORDER BY LocalMessageTrust+LocalTrustListTrust DESC, LastSeen;"); st.Step(); m_ids.clear(); diff --git a/src/freenet/trustlistinserter.cpp b/src/freenet/trustlistinserter.cpp index 2d14f89..79745ee 100644 --- a/src/freenet/trustlistinserter.cpp +++ b/src/freenet/trustlistinserter.cpp @@ -136,13 +136,15 @@ void TrustListInserter::StartInsert(const long localidentityid, const std::strin int index; std::string indexstr; std::string localidentityidstr; + std::string messagetrustcomment=""; + std::string trustlisttrustcomment=""; now.SetToGMTime(); date.SetToGMTime(); // build the xml file - we only want to add identities that we recently saw, otherwise we could be inserting a ton of identities date.Add(0,0,0,-20); // identities seen in last 20 days - SQLite3DB::Statement st=m_db->Prepare("SELECT PublicKey, LocalMessageTrust, LocalTrustListTrust FROM tblIdentity WHERE PublicKey IS NOT NULL AND PublicKey<>'' AND LastSeen>=?;"); + SQLite3DB::Statement st=m_db->Prepare("SELECT PublicKey, LocalMessageTrust, LocalTrustListTrust, MessageTrustComment, TrustListTrustComment FROM tblIdentity WHERE PublicKey IS NOT NULL AND PublicKey<>'' AND LastSeen>=?;"); st.Bind(0,date.Format("%Y-%m-%d")); st.Step(); while(st.RowReturned()) @@ -164,7 +166,9 @@ void TrustListInserter::StartInsert(const long localidentityid, const std::strin { trustlisttrust=-1; } - xml.AddTrust(publickey,messagetrust,trustlisttrust); + st.ResultText(3,messagetrustcomment); + st.ResultText(4,trustlisttrustcomment); + xml.AddTrust(publickey,messagetrust,trustlisttrust,messagetrustcomment,trustlisttrustcomment); st.Step(); } diff --git a/src/freenet/trustlistrequester.cpp b/src/freenet/trustlistrequester.cpp index 90606dd..89da83a 100644 --- a/src/freenet/trustlistrequester.cpp +++ b/src/freenet/trustlistrequester.cpp @@ -54,6 +54,24 @@ const bool TrustListRequester::HandleAllData(FCPMessage &message) // parse file into xml and update the database if(xml.ParseXML(std::string(data.begin(),data.end()))==true) { + // find the identity name and public key of the identity publishing the trust list + std::string publisherid=""; + st=m_db->Prepare("SELECT Name,PublicKey FROM tblIdentity WHERE IdentityID=?;"); + st.Bind(0,identityid); + st.Step(); + if(st.RowReturned()) + { + std::string publishername=""; + std::string publisherpublickey=""; + st.ResultText(0,publishername); + st.ResultText(1,publisherpublickey); + publisherid=publishername; + if(publisherpublickey.size()>4) + { + publisherid+=publisherpublickey.substr(3,44); + } + } + st.Finalize(); // drop all existing peer trust from this identity - we will rebuild it when we go through each trust in the xml file st=m_db->Prepare("DELETE FROM tblPeerTrust WHERE IdentityID=?;"); @@ -62,19 +80,30 @@ const bool TrustListRequester::HandleAllData(FCPMessage &message) st.Finalize(); st=m_db->Prepare("SELECT IdentityID FROM tblIdentity WHERE PublicKey=?;"); - trustst=m_db->Prepare("INSERT INTO tblPeerTrust(IdentityID,TargetIdentityID,MessageTrust,TrustListTrust) VALUES(?,?,?,?);"); + trustst=m_db->Prepare("INSERT INTO tblPeerTrust(IdentityID,TargetIdentityID,MessageTrust,TrustListTrust,MessageTrustComment,TrustListTrustComment) VALUES(?,?,?,?,?,?);"); + + SQLite3DB::Statement idinsert=m_db->Prepare("INSERT INTO tblIdentity(PublicKey,DateAdded,AddedMethod) VALUES(?,?,?);"); + // loop through all trust entries in xml and add to database if we don't already know them for(long i=0; iExecuteInsert("INSERT INTO tblIdentity(PublicKey,DateAdded) VALUES('"+identity+"','"+now.Format("%Y-%m-%d %H:%M:%S")+"');",(long &)id); + idinsert.Bind(0,identity); + idinsert.Bind(1,now.Format("%Y-%m-%d %H:%M:%S")); + idinsert.Bind(2,"trust list of "+publisherid); + idinsert.Step(true); + id=idinsert.GetLastInsertRowID(); + idinsert.Reset(); + // m_db->ExecuteInsert("INSERT INTO tblIdentity(PublicKey,DateAdded,AddedMethod) VALUES('"+identity+"','"+now.Format("%Y-%m-%d %H:%M:%S")+"');",(long &)id); } else { @@ -101,6 +130,19 @@ const bool TrustListRequester::HandleAllData(FCPMessage &message) { trustst.Bind(3,xml.GetTrustListTrust(i)); } + messagetrustcomment=xml.GetMessageTrustComment(i); + trustlisttrustcomment=xml.GetTrustListTrustComment(i); + // limit comments to 50 characters each + if(messagetrustcomment.size()>50) + { + messagetrustcomment.erase(50); + } + if(trustlisttrustcomment.size()>50) + { + trustlisttrustcomment.erase(50); + } + trustst.Bind(4,messagetrustcomment); + trustst.Bind(5,trustlisttrustcomment); trustst.Step(); trustst.Reset(); diff --git a/src/freenet/trustlistxml.cpp b/src/freenet/trustlistxml.cpp index d732105..6b0329a 100644 --- a/src/freenet/trustlistxml.cpp +++ b/src/freenet/trustlistxml.cpp @@ -12,9 +12,9 @@ TrustListXML::TrustListXML() Initialize(); } -void TrustListXML::AddTrust(const std::string &identity, const long messagetrust, const long trustlisttrust) +void TrustListXML::AddTrust(const std::string &identity, const long messagetrust, const long trustlisttrust, const std::string &messagetrustcomment, const std::string &trustlisttrustcomment) { - m_trust.push_back(trust(identity,messagetrust,trustlisttrust)); + m_trust.push_back(trust(identity,messagetrust,trustlisttrust,messagetrustcomment,trustlisttrustcomment)); } std::string TrustListXML::GetIdentity(const long index) @@ -41,6 +41,18 @@ long TrustListXML::GetMessageTrust(const long index) } } +std::string TrustListXML::GetMessageTrustComment(const long index) +{ + if(index>=0 && index=0 && index=0 && indexLinkEndChild(XMLCreateTextElement("TrustListTrustLevel",trustlisttrust)); } + if((*i).m_messagetrustcomment!="") + { + tr->LinkEndChild(XMLCreateCDATAElement("MessageTrustComment",(*i).m_messagetrustcomment)); + } + if((*i).m_trustlisttrustcomment!="") + { + tr->LinkEndChild(XMLCreateCDATAElement("TrustListTrustComment",(*i).m_trustlisttrustcomment)); + } } td.Accept(&tp); @@ -102,6 +134,8 @@ const bool TrustListXML::ParseXML(const std::string &xml) std::string identity; std::string messagetruststr; std::string trustlisttruststr; + std::string messagetrustcomment=""; + std::string trustlisttrustcomment=""; long messagetrust; long trustlisttrust; TiXmlText *txt; @@ -142,6 +176,16 @@ const bool TrustListXML::ParseXML(const std::string &xml) StringFunctions::Convert(trustlisttruststr,trustlisttrust); } } + txt=hnd2.FirstChild("MessageTrustComment").FirstChild().ToText(); + if(txt) + { + messagetrustcomment=txt->ValueStr(); + } + txt=hnd2.FirstChild("TrustListTrustComment").FirstChild().ToText(); + if(txt) + { + trustlisttrustcomment=txt->ValueStr(); + } if(identity!="" && messagetrust>=-1 && messagetrust<=100 && trustlisttrust>=-1 && trustlisttrust<=100) { @@ -149,7 +193,7 @@ const bool TrustListXML::ParseXML(const std::string &xml) if(std::find(m_foundkeys.begin(),m_foundkeys.end(),identity)==m_foundkeys.end()) { m_foundkeys.push_back(identity); - m_trust.push_back(trust(identity,messagetrust,trustlisttrust)); + m_trust.push_back(trust(identity,messagetrust,trustlisttrust,messagetrustcomment,trustlisttrustcomment)); } } else diff --git a/src/global.cpp b/src/global.cpp index 0698703..087ce1c 100644 --- a/src/global.cpp +++ b/src/global.cpp @@ -28,9 +28,6 @@ void SetupDB() db->Open("fms.db3"); db->SetBusyTimeout(10000); // set timeout to 10 seconds db->Execute("VACUUM;"); - - // TODO remove this - temp fix for problem in 0.1.8 - db->Execute("DELETE FROM tblMessageBoard WHERE MessageID NOT IN (SELECT MessageID FROM tblMessage);"); db->Execute("CREATE TABLE IF NOT EXISTS tblDBVersion(\ Major INTEGER,\ @@ -64,10 +61,16 @@ void SetupDB() major=1; minor=4; } + if(major==1 && minor==4) + { + ConvertDB0104To0105(); + major=1; + minor=5; + } } else { - db->Execute("INSERT INTO tblDBVersion(Major,Minor) VALUES(1,4);"); + db->Execute("INSERT INTO tblDBVersion(Major,Minor) VALUES(1,5);"); } db->Execute("UPDATE tblDBVersion SET Major=1, Minor=4;"); @@ -131,18 +134,21 @@ void SetupDB() );"); db->Execute("CREATE TABLE IF NOT EXISTS tblIdentity(\ - IdentityID INTEGER PRIMARY KEY,\ - PublicKey TEXT UNIQUE,\ - Name TEXT,\ - SingleUse BOOL CHECK(SingleUse IN('true','false')) DEFAULT 'false',\ - PublishTrustList BOOL CHECK(PublishTrustList IN('true','false')) DEFAULT 'false',\ - PublishBoardList BOOL CHECK(PublishBoardList IN('true','false')) DEFAULT 'false',\ - DateAdded DATETIME,\ - LastSeen DATETIME,\ - LocalMessageTrust INTEGER CHECK(LocalMessageTrust BETWEEN 0 AND 100) DEFAULT NULL,\ - PeerMessageTrust INTEGER CHECK(PeerMessageTrust BETWEEN 0 AND 100) DEFAULT NULL,\ - LocalTrustListTrust INTEGER CHECK(LocalTrustListTrust BETWEEN 0 AND 100) DEFAULT NULL,\ - PeerTrustListTrust INTEGER CHECK(PeerTrustListTrust BETWEEN 0 AND 100) DEFAULT NULL\ + IdentityID INTEGER PRIMARY KEY,\ + PublicKey TEXT UNIQUE,\ + Name TEXT,\ + SingleUse BOOL CHECK(SingleUse IN('true','false')) DEFAULT 'false',\ + PublishTrustList BOOL CHECK(PublishTrustList IN('true','false')) DEFAULT 'false',\ + PublishBoardList BOOL CHECK(PublishBoardList IN('true','false')) DEFAULT 'false',\ + DateAdded DATETIME,\ + LastSeen DATETIME,\ + LocalMessageTrust INTEGER CHECK(LocalMessageTrust BETWEEN 0 AND 100) DEFAULT NULL,\ + PeerMessageTrust INTEGER CHECK(PeerMessageTrust BETWEEN 0 AND 100) DEFAULT NULL,\ + LocalTrustListTrust INTEGER CHECK(LocalTrustListTrust BETWEEN 0 AND 100) DEFAULT NULL,\ + PeerTrustListTrust INTEGER CHECK(PeerTrustListTrust BETWEEN 0 AND 100) DEFAULT NULL,\ + AddedMethod TEXT,\ + MessageTrustComment TEXT,\ + TrustListTrustComment TEXT\ );"); db->Execute("CREATE TABLE IF NOT EXISTS tblIdentityRequests(\ @@ -172,10 +178,12 @@ void SetupDB() );"); db->Execute("CREATE TABLE IF NOT EXISTS tblPeerTrust(\ - IdentityID INTEGER,\ - TargetIdentityID INTEGER,\ - MessageTrust INTEGER CHECK(MessageTrust BETWEEN 0 AND 100),\ - TrustListTrust INTEGER CHECK(TrustListTrust BETWEEN 0 AND 100)\ + IdentityID INTEGER,\ + TargetIdentityID INTEGER,\ + MessageTrust INTEGER CHECK(MessageTrust BETWEEN 0 AND 100),\ + TrustListTrust INTEGER CHECK(TrustListTrust BETWEEN 0 AND 100),\ + MessageTrustComment TEXT,\ + TrustListTrustComment TEXT\ );"); db->Execute("CREATE TABLE IF NOT EXISTS tblBoard(\ @@ -463,6 +471,19 @@ void ConvertDB0103To0104() db->Execute("UPDATE tblDBVersion SET Major=1, Minor=4;"); } +void ConvertDB0104To0105() +{ + // add AddedMethod, MessageTrustComment, TrustListTrustComment to tblIdentity + // add MessageTrustComment,TrustListTrustComment to tblPeerTrust + SQLite3DB::DB *db=SQLite3DB::DB::Instance(); + db->Execute("ALTER TABLE tblIdentity ADD COLUMN AddedMethod TEXT;"); + db->Execute("ALTER TABLE tblIdentity ADD COLUMN MessageTrustComment TEXT;"); + db->Execute("ALTER TABLE tblIdentity ADD COLUMN TrustListTrustComment TEXT;"); + db->Execute("ALTER TABLE tblPeerTrust ADD COLUMN MessageTrustComment TEXT;"); + db->Execute("ALTER TABLE tblPeerTrust ADD COLUMN TrustListTrustComment TEXT;"); + db->Execute("UPDATE tblDBVersion SET Major=1, Minor=5;"); +} + void SetupDefaultOptions() { // OptionValue should always be inserted as a string, even if the option really isn't a string - just to keep the field data type consistent diff --git a/src/http/pages/peerdetailspage.cpp b/src/http/pages/peerdetailspage.cpp index 7f06fd2..1ff0493 100644 --- a/src/http/pages/peerdetailspage.cpp +++ b/src/http/pages/peerdetailspage.cpp @@ -17,6 +17,7 @@ const std::string PeerDetailsPage::GeneratePage(const std::string &method, const std::string keypart=""; std::string lastseen=""; std::string dateadded=""; + std::string addedmethod=""; if(queryvars.find("identityid")!=queryvars.end() && (*queryvars.find("identityid")).second!="") { @@ -31,7 +32,7 @@ const std::string PeerDetailsPage::GeneratePage(const std::string &method, const del.Step(); } - SQLite3DB::Statement st=m_db->Prepare("SELECT Name,PublicKey,DateAdded,LastSeen FROM tblIdentity WHERE IdentityID=?;"); + SQLite3DB::Statement st=m_db->Prepare("SELECT Name,PublicKey,DateAdded,LastSeen,AddedMethod FROM tblIdentity WHERE IdentityID=?;"); st.Bind(0,identityid); st.Step(); @@ -42,11 +43,13 @@ const std::string PeerDetailsPage::GeneratePage(const std::string &method, const st.ResultText(1,publickey); st.ResultText(2,dateadded); st.ResultText(3,lastseen); + st.ResultText(4,addedmethod); content+="Name"+SanitizeOutput(name)+""; content+="Public Key"+SanitizeOutput(publickey)+""; content+="Date Added"+dateadded+""; content+="Last Seen"+lastseen+""; + content+="Added Method"+SanitizeOutput(addedmethod)+""; } // get message count posted by this identity @@ -73,7 +76,7 @@ const std::string PeerDetailsPage::GeneratePage(const std::string &method, const content+=""; - 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;"); + 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;"); st.Bind(0,identityid); st.Step(); @@ -81,16 +84,20 @@ const std::string PeerDetailsPage::GeneratePage(const std::string &method, const content+=""; content+="Trust List of this identity"; content+=""; - content+="Message TrustTrust List Trust"; + content+="Message TrustMessage CommentTrust List TrustTrust Comment"; while(st.RowReturned()) { std::string thisid=""; + std::string messagetrustcomment=""; + std::string trustlisttrustcomment=""; st.ResultText(0,name); st.ResultText(1,publickey); st.ResultText(2,messagetrust); st.ResultText(3,trustlisttrust); st.ResultText(4,thisid); + st.ResultText(5,messagetrustcomment); + st.ResultText(6,trustlisttrustcomment); if(publickey.size()>8) { @@ -100,29 +107,35 @@ const std::string PeerDetailsPage::GeneratePage(const std::string &method, const content+=""; content+=""+SanitizeOutput(name+keypart)+"..."; content+=""+messagetrust+""; + content+=""+SanitizeOutput(messagetrustcomment)+""; content+=""+trustlisttrust+""; + content+=""+SanitizeOutput(trustlisttrustcomment)+""; content+="\r\n"; st.Step(); } - 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;"); + 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;"); st.Bind(0,identityid); st.Step(); content+=""; content+="Trust of this identity from other identities"; content+=""; - content+="Message TrustTrust List Trust"; + content+="Message TrustMessage CommentTrust List TrustTrust Comment"; while(st.RowReturned()) { std::string thisid=""; + std::string messagetrustcomment=""; + std::string trustlisttrustcomment=""; st.ResultText(0,name); st.ResultText(1,publickey); st.ResultText(2,messagetrust); st.ResultText(3,trustlisttrust); st.ResultText(4,thisid); + st.ResultText(5,messagetrustcomment); + st.ResultText(6,trustlisttrustcomment); if(publickey.size()>8) { @@ -132,7 +145,9 @@ const std::string PeerDetailsPage::GeneratePage(const std::string &method, const content+=""; content+=""+SanitizeOutput(name+keypart)+"..."; content+=""+messagetrust+""; + content+=""+SanitizeOutput(messagetrustcomment)+""; content+=""+trustlisttrust+""; + content+=""+SanitizeOutput(trustlisttrustcomment)+""; content+=""; st.Step(); diff --git a/src/http/pages/peertrustpage.cpp b/src/http/pages/peertrustpage.cpp index ee087f3..0cb0d42 100644 --- a/src/http/pages/peertrustpage.cpp +++ b/src/http/pages/peertrustpage.cpp @@ -71,6 +71,10 @@ const std::string PeerTrustPage::GeneratePage(const std::string &method, const s std::vector lmt; std::vector oldltlt; std::vector ltlt; + std::vector oldmtc; + std::vector mtc; + std::vector oldtltc; + std::vector tltc; int localmessagetrust=0; int localtrustlisttrust=0; int identityid; @@ -80,12 +84,16 @@ const std::string PeerTrustPage::GeneratePage(const std::string &method, const s CreateArgArray(queryvars,"localmessagetrust",lmt); CreateArgArray(queryvars,"oldlocaltrustlisttrust",oldltlt); CreateArgArray(queryvars,"localtrustlisttrust",ltlt); + CreateArgArray(queryvars,"oldmessagetrustcomment",oldmtc); + CreateArgArray(queryvars,"messagetrustcomment",mtc); + CreateArgArray(queryvars,"oldtrustlisttrustcomment",oldtltc); + CreateArgArray(queryvars,"trustlisttrustcomment",tltc); - SQLite3DB::Statement update=m_db->Prepare("UPDATE tblIdentity SET LocalMessageTrust=?, LocalTrustListTrust=? WHERE IdentityID=?;"); + SQLite3DB::Statement update=m_db->Prepare("UPDATE tblIdentity SET LocalMessageTrust=?, LocalTrustListTrust=?, MessageTrustComment=?, TrustListTrustComment=? WHERE IdentityID=?;"); for(int i=0; iName"; content+="Local Message Trust"; + content+="Message Comment"; content+="Peer Message Trust"; content+="Local Trust List Trust"; + content+="Trust Comment"; content+="Peer Trust List Trust"; // get count of identities we are showing @@ -192,7 +204,7 @@ const std::string PeerTrustPage::GeneratePage(const std::string &method, const s st.ResultInt(0,identitycount); st.Finalize(); - sql="SELECT IdentityID,Name,LocalMessageTrust,PeerMessageTrust,LocalTrustListTrust,PeerTrustListTrust,PublicKey FROM tblIdentity"; + sql="SELECT IdentityID,Name,LocalMessageTrust,PeerMessageTrust,LocalTrustListTrust,PeerTrustListTrust,PublicKey,MessageTrustComment,TrustListTrustComment FROM tblIdentity"; if(namesearch!="") { sql+=" WHERE Name LIKE '%' || ? || '%'"; @@ -228,6 +240,8 @@ const std::string PeerTrustPage::GeneratePage(const std::string &method, const s std::string peertrustlisttrust; std::string publickey; std::string keypart=""; + std::string messagetrustcomment=""; + std::string trustlisttrustcomment=""; StringFunctions::Convert(count,countstr); @@ -238,6 +252,8 @@ const std::string PeerTrustPage::GeneratePage(const std::string &method, const s st.ResultText(4,localtrustlisttrust); st.ResultText(5,peertrustlisttrust); st.ResultText(6,publickey); + st.ResultText(7,messagetrustcomment); + st.ResultText(8,trustlisttrustcomment); if(publickey.size()>8) { @@ -261,11 +277,19 @@ const std::string PeerTrustPage::GeneratePage(const std::string &method, const s content+=""; content+=""; content+=""; + content+=""; + content+=""; + content+=""; + content+=""; content+=""; content+=peermessagetrust+""; content+=""; content+=""; content+=""; + content+=""; + content+=""; + content+=""; + content+=""; content+=""; content+=peertrustlisttrust+""; content+=""; @@ -282,17 +306,17 @@ const std::string PeerTrustPage::GeneratePage(const std::string &method, const s if(startrow>0) { StringFunctions::Convert(startrow-rowsperpage,tempstr); - content+="<-- Previous Page"; - cols+=2; + content+="<-- Previous Page"; + cols+=3; } if(startrow+rowsperpageNext Page -->"; + content+="Next Page -->"; } content+=""; } diff --git a/src/main.cpp b/src/main.cpp index 9fefa8f..8b33355 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -18,6 +18,7 @@ int main(int argc, char *argv[]) { + bool daemon=false; #ifdef XMEM -- 2.7.4