Initialize();\r
}\r
\r
+std::string BoardListRequester::GetIdentityName(const long identityid)\r
+{\r
+ SQLite3DB::Statement st=m_db->Prepare("SELECT Name,PublicKey FROM tblIdentity WHERE IdentityID=?;");\r
+ st.Bind(0,identityid);\r
+ st.Step();\r
+ if(st.RowReturned())\r
+ {\r
+ std::vector<std::string> keyparts;\r
+ std::string key;\r
+ std::string name;\r
+ st.ResultText(0,name);\r
+ st.ResultText(1,key);\r
+ \r
+ StringFunctions::SplitMultiple(key,"@,",keyparts);\r
+ \r
+ if(keyparts.size()>1)\r
+ {\r
+ return name+"@"+keyparts[1];\r
+ }\r
+ else\r
+ {\r
+ return name+"@invalidpublickey";\r
+ }\r
+ }\r
+ else\r
+ {\r
+ return "";\r
+ }\r
+}\r
+\r
const bool BoardListRequester::HandleAllData(FCPMessage &message)\r
{ \r
DateTime now;\r
BoardListXML xml;\r
long identityid;\r
long index;\r
+ std::string identityname="";\r
\r
now.SetToGMTime();\r
StringFunctions::Split(message["Identifier"],"|",idparts);\r
StringFunctions::Convert(idparts[1],identityid);\r
StringFunctions::Convert(idparts[2],index);\r
\r
+ identityname=GetIdentityName(identityid);\r
+\r
// wait for all data to be received from connection\r
while(m_fcp->Connected() && m_fcp->ReceiveBufferSize()<datalength)\r
{\r
{\r
\r
SQLite3DB::Statement brd=m_db->Prepare("SELECT BoardID,BoardName,BoardDescription FROM tblBoard WHERE BoardName=?;");\r
- SQLite3DB::Statement ins=m_db->Prepare("INSERT INTO tblBoard(BoardName,BoardDescription,DateAdded) VALUES(?,?,?);");\r
+ SQLite3DB::Statement ins=m_db->Prepare("INSERT INTO tblBoard(BoardName,BoardDescription,DateAdded,SaveReceivedMessages,AddedMethod) VALUES(?,?,?,?,?);");\r
SQLite3DB::Statement upd=m_db->Prepare("UPDATE tblBoard SET BoardDescription=? WHERE BoardID=?;");\r
for(long i=0; i<xml.GetCount(); i++)\r
{\r
if(description=="" && xml.GetDescription(i)!="")\r
{\r
upd.Bind(0,xml.GetDescription(i));\r
+ upd.Bind(1,boardid);\r
upd.Step();\r
upd.Reset();\r
}\r
ins.Bind(0,xml.GetName(i));\r
ins.Bind(1,xml.GetDescription(i));\r
ins.Bind(2,now.Format("%Y-%m-%d %H:%M:%S"));\r
+ if(m_savemessagesfromnewboards)\r
+ {\r
+ ins.Bind(3,"true");\r
+ }\r
+ else\r
+ {\r
+ ins.Bind(3,"false");\r
+ }\r
+ ins.Bind(4,"Board List of "+identityname);\r
ins.Step();\r
ins.Reset();\r
}\r
{\r
m_log->WriteLog(LogFile::LOGLEVEL_WARNING,"Option MaxBoardListRequests is currently set at "+tempval+". This value might be incorrectly configured.");\r
}\r
+\r
+ Option::Instance()->Get("SaveMessagesFromNewBoards",tempval);\r
+ if(tempval=="true")\r
+ {\r
+ m_savemessagesfromnewboards=true;\r
+ }\r
+ else\r
+ {\r
+ m_savemessagesfromnewboards=false;\r
+ }\r
+\r
+ Option::Instance()->Get("LocalTrustOverridesPeerTrust",tempval);\r
+ if(tempval=="true")\r
+ {\r
+ m_localtrustoverrides=true;\r
+ }\r
+ else\r
+ {\r
+ m_localtrustoverrides=false;\r
+ }\r
+\r
}\r
\r
void BoardListRequester::PopulateIDList()\r
DateTime today;\r
today.SetToGMTime();\r
\r
- 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;");\r
+ SQLite3DB::Statement st;\r
+\r
+ if(m_localtrustoverrides==false)\r
+ {\r
+ 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;");\r
+ }\r
+ else\r
+ {\r
+ 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;");\r
+ }\r
st.Step();\r
\r
m_ids.clear();\r