X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ffreenet%2Fboardlistrequester.cpp;h=69c2e350b4d566e453ffbe8083912b363edcd436;hb=6836fbb5db8464f56e682989996b2210b14231d0;hp=5029460623daeac6097c7c800d943a355f9b3a3d;hpb=1dee4e3cd008a27789bbce05b0eb47b0eb5d121a;p=fms.git diff --git a/src/freenet/boardlistrequester.cpp b/src/freenet/boardlistrequester.cpp index 5029460..69c2e35 100644 --- a/src/freenet/boardlistrequester.cpp +++ b/src/freenet/boardlistrequester.cpp @@ -15,6 +15,36 @@ BoardListRequester::BoardListRequester(FCPv2 *fcp):IIndexRequester(fcp) Initialize(); } +std::string BoardListRequester::GetIdentityName(const long identityid) +{ + SQLite3DB::Statement st=m_db->Prepare("SELECT Name,PublicKey FROM tblIdentity WHERE IdentityID=?;"); + st.Bind(0,identityid); + st.Step(); + if(st.RowReturned()) + { + std::vector keyparts; + std::string key; + std::string name; + st.ResultText(0,name); + st.ResultText(1,key); + + StringFunctions::SplitMultiple(key,"@,",keyparts); + + if(keyparts.size()>1) + { + return name+"@"+keyparts[1]; + } + else + { + return name+"@invalidpublickey"; + } + } + else + { + return ""; + } +} + const bool BoardListRequester::HandleAllData(FCPMessage &message) { DateTime now; @@ -25,6 +55,7 @@ const bool BoardListRequester::HandleAllData(FCPMessage &message) BoardListXML xml; long identityid; long index; + std::string identityname=""; now.SetToGMTime(); StringFunctions::Split(message["Identifier"],"|",idparts); @@ -32,6 +63,8 @@ const bool BoardListRequester::HandleAllData(FCPMessage &message) StringFunctions::Convert(idparts[1],identityid); StringFunctions::Convert(idparts[2],index); + identityname=GetIdentityName(identityid); + // wait for all data to be received from connection while(m_fcp->Connected() && m_fcp->ReceiveBufferSize()Prepare("SELECT BoardID,BoardName,BoardDescription FROM tblBoard WHERE BoardName=?;"); - SQLite3DB::Statement ins=m_db->Prepare("INSERT INTO tblBoard(BoardName,BoardDescription,DateAdded) VALUES(?,?,?);"); + SQLite3DB::Statement ins=m_db->Prepare("INSERT INTO tblBoard(BoardName,BoardDescription,DateAdded,SaveReceivedMessages,AddedMethod) VALUES(?,?,?,?,?);"); SQLite3DB::Statement upd=m_db->Prepare("UPDATE tblBoard SET BoardDescription=? WHERE BoardID=?;"); for(long i=0; iWriteLog(LogFile::LOGLEVEL_WARNING,"Option MaxBoardListRequests is currently set at "+tempval+". This value might be incorrectly configured."); } + + Option::Instance()->Get("SaveMessagesFromNewBoards",tempval); + if(tempval=="true") + { + m_savemessagesfromnewboards=true; + } + else + { + m_savemessagesfromnewboards=false; + } + + Option::Instance()->Get("LocalTrustOverridesPeerTrust",tempval); + if(tempval=="true") + { + m_localtrustoverrides=true; + } + else + { + m_localtrustoverrides=false; + } + } void BoardListRequester::PopulateIDList() @@ -174,7 +237,16 @@ void BoardListRequester::PopulateIDList() DateTime today; today.SetToGMTime(); - SQLite3DB::Statement st=m_db->Prepare("SELECT IdentityID FROM tblIdentity WHERE PublicKey IS NOT NULL AND PublicKey <> '' AND LastSeen>='"+today.Format("%Y-%m-%d")+"' AND (LocalMessageTrust IS NULL OR LocalMessageTrust>=(SELECT OptionValue FROM tblOption WHERE Option='MinLocalMessageTrust')) AND (PeerMessageTrust IS NULL OR PeerMessageTrust>=(SELECT OptionValue FROM tblOption WHERE Option='MinPeerMessageTrust')) AND PublishBoardList='true' ORDER BY LocalMessageTrust+LocalTrustListTrust DESC, LastSeen;"); + SQLite3DB::Statement st; + + if(m_localtrustoverrides==false) + { + st=m_db->Prepare("SELECT IdentityID FROM tblIdentity WHERE PublicKey IS NOT NULL AND PublicKey <> '' AND LastSeen>='"+today.Format("%Y-%m-%d")+"' AND (LocalMessageTrust IS NULL OR LocalMessageTrust>=(SELECT OptionValue FROM tblOption WHERE Option='MinLocalMessageTrust')) AND (PeerMessageTrust IS NULL OR PeerMessageTrust>=(SELECT OptionValue FROM tblOption WHERE Option='MinPeerMessageTrust')) AND PublishBoardList='true' ORDER BY LocalMessageTrust+LocalTrustListTrust DESC, LastSeen;"); + } + else + { + st=m_db->Prepare("SELECT IdentityID FROM tblIdentity WHERE PublicKey IS NOT NULL AND PublicKey <> '' AND LastSeen>='"+today.Format("%Y-%m-%d")+"' AND (LocalMessageTrust>=(SELECT OptionValue FROM tblOption WHERE Option='MinLocalMessageTrust') OR (LocalMessageTrust IS NULL AND (PeerMessageTrust IS NULL OR PeerMessageTrust>=(SELECT OptionValue FROM tblOption WHERE Option='MinPeerMessageTrust')))) AND PublishBoardList='true' ORDER BY LocalMessageTrust+LocalTrustListTrust DESC, LastSeen;"); + } st.Step(); m_ids.clear();