\r
while(!rs.AtEnd())\r
{\r
+ std::string localidentityidstr;\r
DateTime now;\r
now.SetToGMTime();\r
\r
+ if(rs.GetField(0))\r
+ {\r
+ localidentityidstr=rs.GetField(0);\r
+ }\r
+\r
// if this identity has any non-solved puzzles for today, we don't need to insert a new puzzle\r
- SQLite3DB::Recordset rs2=m_db->Query("SELECT UUID FROM tblIntroductionPuzzleInserts WHERE Day='"+now.Format("%Y-%m-%d")+"' AND FoundSolution='false';");\r
+ SQLite3DB::Recordset rs2=m_db->Query("SELECT UUID FROM tblIntroductionPuzzleInserts WHERE Day='"+now.Format("%Y-%m-%d")+"' AND FoundSolution='false' AND LocalIdentityID="+localidentityidstr+";");\r
\r
// identity doesn't have any non-solved puzzles for today - start a new insert\r
if(rs2.Empty()==true)\r
FCPMessage message;\r
std::string xmldata;\r
std::string xmldatasizestr;\r
- std::string privatekey;\r
+ std::string privatekey="";\r
+ std::string publickey="";\r
+ std::string keypart="";\r
\r
StringFunctions::Convert(localidentityid,idstring);\r
now.SetToGMTime();\r
}\r
StringFunctions::Convert(index,indexstr);\r
\r
- SQLite3DB::Recordset rs2=m_db->Query("SELECT PrivateKey FROM tblLocalIdentity WHERE LocalIdentityID="+idstring+";");\r
+ SQLite3DB::Recordset rs2=m_db->Query("SELECT PrivateKey,PublicKey FROM tblLocalIdentity WHERE LocalIdentityID="+idstring+";");\r
if(rs2.Empty()==false && rs2.GetField(0)!=NULL)\r
{\r
privatekey=rs2.GetField(0);\r
+ if(rs2.GetField(1))\r
+ {\r
+ publickey=rs2.GetField(1);\r
+ }\r
+ if(publickey.size()>=50)\r
+ {\r
+ // remove - and ~\r
+ keypart=StringFunctions::Replace(StringFunctions::Replace(publickey.substr(4,43),"-",""),"~","");\r
+ }\r
}\r
\r
- Option::instance()->Get("MessageBase",messagebase);\r
+ Option::Instance()->Get("MessageBase",messagebase);\r
\r
GenerateCaptcha(encodedpuzzle,solutionstring);\r
\r
xml.SetType("captcha");\r
- xml.SetUUID(uuid.Generate());\r
+ xml.SetUUID(uuid.Generate()+"@"+keypart);\r
xml.SetPuzzleData(encodedpuzzle);\r
- xml.SetMimeType("bitmap/image");\r
+ xml.SetMimeType("image/bmp");\r
\r
xmldata=xml.GetXML();\r
StringFunctions::Convert(xmldata.size(),xmldatasizestr);\r