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 if(request.getVersion()==Poco::Net::HTTPRequest::HTTP_1_1)
\r
18 response.setChunkedTransferEncoding(true);
\r
21 std::string content="";
\r
22 if(queryvars.find("UUID")!=queryvars.end())
\r
24 SQLite3DB::Statement st=m_db->Prepare("SELECT MimeType,PuzzleData FROM tblIntroductionPuzzleRequests WHERE Type='captcha' AND UUID=?;");
\r
25 st.Bind(0,(*queryvars.find("UUID")).second);
\r
28 if(st.RowReturned())
\r
31 std::string b64data;
\r
32 std::vector<unsigned char> data;
\r
34 st.ResultText(0,mime);
\r
35 st.ResultText(1,b64data);
\r
36 Base64::Decode(b64data,data);
\r
38 // mime type should be short and have a / in it - otherwise skip
\r
39 if(mime.size()<50 && mime.find("/")!=std::string::npos)
\r
41 response.setContentType(mime);
\r
42 response.setContentLength(data.size());
\r
43 content+=std::string(data.begin(),data.end());
\r
48 std::ostream &ostr = response.send();
\r
52 const bool ShowCaptchaPage::WillHandleURI(const std::string &uri)
\r
54 if(uri.find("showcaptcha.")!=std::string::npos)
\r