X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmessage.cpp;h=8281db7a67312fbcf931138d3e6ce91025c897bf;hb=1230cc420c955e75051d011d964bc68f061ba08c;hp=53d8b34dd1873f233d296f4a9de2ce60f567dfc2;hpb=14fff12d9df0ee30e2df4bf9d22c2e83065816df;p=fms.git diff --git a/src/message.cpp b/src/message.cpp index 53d8b34..8281db7 100644 --- a/src/message.cpp +++ b/src/message.cpp @@ -542,6 +542,7 @@ const bool Message::ParseNNTPMessage(const std::string &nntpmessage) m_fromname=mime.GetFieldValue("From"); // remove any path folding m_fromname=StringFunctions::Replace(m_fromname,"\r\n",""); + m_fromname=StringFunctions::Replace(m_fromname,"\t",""); // strip off everything between () and <> and any whitespace std::string::size_type startpos=m_fromname.find("("); std::string::size_type endpos; @@ -586,6 +587,7 @@ const bool Message::ParseNNTPMessage(const std::string &nntpmessage) std::string temp=mime.GetFieldValue("Newsgroups"); // remove any path folding temp=StringFunctions::Replace(temp,"\r\n",""); + temp=StringFunctions::Replace(temp,"\t",""); std::vector parts; StringFunctions::SplitMultiple(temp,", \t",parts); for(std::vector::iterator i=parts.begin(); i!=parts.end(); i++) @@ -605,6 +607,7 @@ const bool Message::ParseNNTPMessage(const std::string &nntpmessage) m_replyboardname=mime.GetFieldValue("Followup-To"); // remove any path folding m_replyboardname=StringFunctions::Replace(m_replyboardname,"\r\n",""); + m_replyboardname=StringFunctions::Replace(m_replyboardname,"\t",""); } else { @@ -619,6 +622,7 @@ const bool Message::ParseNNTPMessage(const std::string &nntpmessage) m_subject=mime.GetFieldValue("Subject"); // remove any path folding m_subject=StringFunctions::Replace(m_subject,"\r\n",""); + m_subject=StringFunctions::Replace(m_subject,"\t",""); #if DO_CHARSET_CONVERSION if(mime.GetFieldCharset("Subject")) { @@ -643,6 +647,7 @@ const bool Message::ParseNNTPMessage(const std::string &nntpmessage) std::string temp=mime.GetFieldValue("References"); // remove any path folding temp=StringFunctions::Replace(temp,"\r\n",""); + temp=StringFunctions::Replace(temp,"\t",""); std::vector parts; int count=0; StringFunctions::SplitMultiple(temp,", \t",parts); @@ -738,8 +743,6 @@ const bool Message::StartFreenetInsert() xml.SetSubject(m_subject); xml.SetBody(m_body); xml.SetReplyBoard(m_replyboardname); - xml.SetDate(m_datetime.Format("%Y-%m-%d")); - xml.SetTime(m_datetime.Format("%H:%M:%S")); for(std::vector::iterator i=m_boards.begin(); i!=m_boards.end(); i++) { @@ -757,10 +760,43 @@ const bool Message::StartFreenetInsert() return false; } - SQLite3DB::Statement st=m_db->Prepare("INSERT INTO tblMessageInserts(LocalIdentityID,MessageUUID,MessageXML) VALUES(?,?,?);"); + // add the message delay if there is one + SQLite3DB::Statement st=m_db->Prepare("SELECT MinMessageDelay,MaxMessageDelay FROM tblLocalIdentity WHERE LocalIdentityID=?;"); + st.Bind(0,localidentityid); + st.Step(); + if(st.RowReturned()) + { + int min=0; + int max=0; + st.ResultInt(0,min); + st.ResultInt(1,max); + + min<0 ? min=0 : false; + max<0 ? max=0 : false; + min>max ? min=max : false; + + if(min==max) + { + m_datetime.Add(0,min); + } + else if(max>min) + { + int delay=(rand()%(max-min))+min; + m_datetime.Add(0,delay); + } + + } + st.Finalize(); + + // set date in xml file AFTER we set the delay + xml.SetDate(m_datetime.Format("%Y-%m-%d")); + xml.SetTime(m_datetime.Format("%H:%M:%S")); + + st=m_db->Prepare("INSERT INTO tblMessageInserts(LocalIdentityID,MessageUUID,MessageXML,SendDate) VALUES(?,?,?,?);"); st.Bind(0,localidentityid); st.Bind(1,m_messageuuid); st.Bind(2,xml.GetXML()); + st.Bind(3,m_datetime.Format("%Y-%m-%d %H:%M:%S")); st.Step(); // insert file attachments into database