X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ffreenet%2Fmessagerequester.cpp;h=836d402d839c9ee3241df5e2576701acf30f90b3;hb=63376b2a82c3f6cdf2df56b1f134bd7df0aaab3a;hp=13cc1f2179ede3165665a7408fd5a14f6f9144ef;hpb=3dc3ac3cfe10b7196a7977e9c041c29fa141c35e;p=fms.git diff --git a/src/freenet/messagerequester.cpp b/src/freenet/messagerequester.cpp index 13cc1f2..836d402 100644 --- a/src/freenet/messagerequester.cpp +++ b/src/freenet/messagerequester.cpp @@ -17,7 +17,7 @@ MessageRequester::MessageRequester(FCPv2 *fcp):IIndexRequester(fcp) Initialize(); } -const long MessageRequester::GetBoardID(const std::string &boardname) +const long MessageRequester::GetBoardID(const std::string &boardname, const std::string &identityname) { std::string lowerboard=boardname; StringFunctions::LowerCase(lowerboard,lowerboard); @@ -35,9 +35,18 @@ const long MessageRequester::GetBoardID(const std::string &boardname) { DateTime now; now.SetToGMTime(); - st=m_db->Prepare("INSERT INTO tblBoard(BoardName,DateAdded) VALUES(?,?);"); + st=m_db->Prepare("INSERT INTO tblBoard(BoardName,DateAdded,SaveReceivedMessages,AddedMethod) VALUES(?,?,?,?);"); st.Bind(0,boardname); st.Bind(1,now.Format("%Y-%m-%d %H:%M:%S")); + if(m_savemessagesfromnewboards) + { + st.Bind(2,"true"); + } + else + { + st.Bind(2,"false"); + } + st.Bind(3,"Message from "+identityname); st.Step(true); return st.GetLastInsertRowID(); } @@ -197,6 +206,25 @@ const bool MessageRequester::HandleAllData(FCPMessage &message) if(validmessage && savetoboardcount>0) { + std::string nntpbody=""; + nntpbody=xml.GetBody(); + + //add file keys/sizes to body + std::vector fileattachments=xml.GetFileAttachments(); + if(fileattachments.size()>0) + { + nntpbody+="\r\nAttachments"; + } + for(std::vector::iterator i=fileattachments.begin(); i!=fileattachments.end(); i++) + { + std::string sizestr="0"; + StringFunctions::Convert((*i).m_size,sizestr); + + nntpbody+="\r\n"+(*i).m_key; + nntpbody+="\r\n"+sizestr+" bytes"; + nntpbody+="\r\n"; + } + st=m_db->Prepare("INSERT INTO tblMessage(IdentityID,FromName,MessageDate,MessageTime,Subject,MessageUUID,ReplyBoardID,Body,MessageIndex) VALUES(?,?,?,?,?,?,?,?,?);"); st.Bind(0,identityid); st.Bind(1,GetIdentityName(identityid)); @@ -204,8 +232,8 @@ const bool MessageRequester::HandleAllData(FCPMessage &message) st.Bind(3,xml.GetTime()); st.Bind(4,xml.GetSubject()); st.Bind(5,xml.GetMessageID()); - st.Bind(6,GetBoardID(xml.GetReplyBoard())); - st.Bind(7,xml.GetBody()); + st.Bind(6,GetBoardID(xml.GetReplyBoard(),GetIdentityName(identityid))); + st.Bind(7,nntpbody); st.Bind(8,index); inserted=st.Step(true); int messageid=st.GetLastInsertRowID(); @@ -219,7 +247,7 @@ const bool MessageRequester::HandleAllData(FCPMessage &message) if(SaveToBoard((*i))) { st.Bind(0,messageid); - st.Bind(1,GetBoardID((*i))); + st.Bind(1,GetBoardID((*i),GetIdentityName(identityid))); st.Step(); st.Reset(); } @@ -339,6 +367,15 @@ void MessageRequester::Initialize() { m_log->WriteLog(LogFile::LOGLEVEL_WARNING,"Option MaxBoardsPerMessage 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; + } } void MessageRequester::PopulateIDList() @@ -358,6 +395,7 @@ void MessageRequester::PopulateIDList() sql+="WHERE (tblIdentity.LocalMessageTrust IS NULL OR tblIdentity.LocalMessageTrust>=(SELECT OptionValue FROM tblOption WHERE Option='MinLocalMessageTrust')) "; sql+="AND FromMessageList='true' AND Found='false' AND Day>='"+date.Format("%Y-%m-%d")+"' "; sql+="AND (tblIdentity.PeerMessageTrust IS NULL OR tblIdentity.PeerMessageTrust>=(SELECT OptionValue FROM tblOption WHERE Option='MinPeerMessageTrust')) "; + sql+="AND tblIdentity.Name <> '' "; sql+=";"; SQLite3DB::Statement st=m_db->Prepare(sql);