1 #include "../../../include/http/pages/showcaptchapage.h"
\r
2 #include "../../../include/base64.h"
\r
3 #include "../../../include/stringfunctions.h"
\r
9 void ShowCaptchaPage::handleRequest(Poco::Net::HTTPServerRequest &request, Poco::Net::HTTPServerResponse &response)
\r
11 m_log->trace("ShowCaptchaPage::handleRequest from "+request.clientAddress().toString());
\r
13 std::map<std::string,std::string> queryvars;
\r
14 CreateQueryVarMap(request,queryvars);
\r
16 response.setChunkedTransferEncoding(true);
\r
18 std::string content="";
\r
19 if(queryvars.find("UUID")!=queryvars.end())
\r
21 SQLite3DB::Statement st=m_db->Prepare("SELECT MimeType,PuzzleData FROM tblIntroductionPuzzleRequests WHERE Type='captcha' AND UUID=?;");
\r
22 st.Bind(0,(*queryvars.find("UUID")).second);
\r
25 if(st.RowReturned())
\r
28 std::string b64data;
\r
29 std::vector<unsigned char> data;
\r
31 st.ResultText(0,mime);
\r
32 st.ResultText(1,b64data);
\r
33 Base64::Decode(b64data,data);
\r
35 // mime type should be short and have a / in it - otherwise skip
\r
36 if(mime.size()<50 && mime.find("/")!=std::string::npos)
\r
38 response.setContentType(mime);
\r
39 response.setContentLength(data.size());
\r
40 content+=std::string(data.begin(),data.end());
\r
45 std::ostream &ostr = response.send();
\r
49 const bool ShowCaptchaPage::WillHandleURI(const std::string &uri)
\r
51 if(uri.find("showcaptcha.")!=std::string::npos)
\r