void JSONView::initializeResponse(Poco::Net::HTTPServerResponse& response) { response.setChunkedTransferEncoding(true); response.setContentType("application/json"); response.set("Cache-Controle", "no-cache,no-store,must-revalidate"); // HTTP 1.1 response.set("Pragma", "no-cache"); // HTTP 1.0 response.set("Expires", "0"); // Proxies }
void Handler::prepareApiResponse(Poco::Net::HTTPServerResponse &resp) { prepareResponse(resp); resp.setContentType("application/json"); resp.set("Cache-Control", "no-cache"); if (!configuration->getAccessControlAllowOriginHeader().empty()) { resp.set("Access-Control-Allow-Origin", configuration->getAccessControlAllowOriginHeader()); } }
void ShowCaptchaPage::handleRequest(Poco::Net::HTTPServerRequest &request, Poco::Net::HTTPServerResponse &response) { m_log->trace("ShowCaptchaPage::handleRequest from "+request.clientAddress().toString()); std::map<std::string,QueryVar> queryvars; CreateQueryVarMap(request,queryvars); if(request.getVersion()==Poco::Net::HTTPRequest::HTTP_1_1) { response.setChunkedTransferEncoding(true); } std::string content=""; if(queryvars.find("UUID")!=queryvars.end()) { std::string uuid=(*queryvars.find("UUID")).second.GetData(); SQLite3DB::Statement st=m_db->Prepare("SELECT MimeType,PuzzleData FROM tblIntroductionPuzzleRequests WHERE UUID=?;"); st.Bind(0,uuid); st.Step(); if(st.RowReturned()) { std::string mime; std::string b64data; std::vector<unsigned char> data; st.ResultText(0,mime); st.ResultText(1,b64data); Base64::Decode(b64data,data); // mime type should be short and have a / in it - otherwise skip if(mime.size()<50 && mime.find('/')!=std::string::npos) { std::string fname(uuid); if(mime=="image/bmp") { fname+=".bmp"; } else if(mime=="audio/x-wav") { fname+=".wav"; } response.setContentType(mime); response.setContentLength(data.size()); response.set("Content-Disposition","attachment; filename="+fname); content+=std::string(data.begin(),data.end()); } } } std::ostream &ostr = response.send(); ostr << content; }
void BufferHandler::handleRequest(Poco::Net::HTTPServerRequest &req, Poco::Net::HTTPServerResponse &resp) { prepareResponse(resp); resp.set("ETag", etag); resp.set("Cache-Control", "max-age=300, private"); if (req.get("If-None-Match", "") == etag) { // ETag matched. No content to send; resp.setStatus(Poco::Net::HTTPResponse::HTTP_NOT_MODIFIED); resp.setReason("Not Modified"); resp.send().flush(); return; } resp.setStatus(Poco::Net::HTTPResponse::HTTP_OK); resp.setContentType(contentType); resp.setContentLength(bufferLen); std::ostream & out = resp.send(); out.write(reinterpret_cast<const char*>(buffer), bufferLen); out.flush(); };
void ConsoleRequestHandler::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response) { try { std::string username; Poco::OSP::Web::WebSession::Ptr pSession; { Poco::OSP::ServiceRef::Ptr pWebSessionManagerRef = _pContext->registry().findByName(Poco::OSP::Web::WebSessionManager::SERVICE_NAME); if (pWebSessionManagerRef) { Poco::OSP::Web::WebSessionManager::Ptr pWebSessionManager = pWebSessionManagerRef->castedInstance<Poco::OSP::Web::WebSessionManager>(); pSession = pWebSessionManager->find(_pContext->thisBundle()->properties().getString("websession.id"), request); username = pSession->getValue<std::string>("username", ""); } } if (!username.empty()) { Poco::Net::WebSocket webSocket(request, response); _pContext->logger().information(Poco::format("Console WebSocket connection established with %s.", request.clientAddress().toString())); forwardMessages(webSocket); } else { response.setStatusAndReason(Poco::Net::HTTPResponse::HTTP_UNAUTHORIZED); response.setContentLength(0); response.send(); } } catch (Poco::Net::WebSocketException& exc) { _pContext->logger().log(exc); switch (exc.code()) { case Poco::Net::WebSocket::WS_ERR_HANDSHAKE_UNSUPPORTED_VERSION: response.set("Sec-WebSocket-Version", Poco::Net::WebSocket::WEBSOCKET_VERSION); // fallthrough case Poco::Net::WebSocket::WS_ERR_NO_HANDSHAKE: case Poco::Net::WebSocket::WS_ERR_HANDSHAKE_NO_VERSION: case Poco::Net::WebSocket::WS_ERR_HANDSHAKE_NO_KEY: response.setStatusAndReason(Poco::Net::HTTPResponse::HTTP_BAD_REQUEST); response.setContentLength(0); response.send(); break; } } }
void RedirectRequestHandler::handle(Poco::Net::HTTPServerRequest & request, Poco::Net::HTTPServerResponse & response){ response.set("Location", to); response.setStatusAndReason(Poco::Net::HTTPServerResponse::HTTP_SEE_OTHER); response.setContentLength(0); response.send(); }
void ControllerRequestHandler::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response) { if (request.getURI() == "/favicon.ico") { return response.redirect("/images/favicon.ico", Poco::Net::HTTPResponse::HTTP_SEE_OTHER); } Poco::OSP::Web::WebSession::Ptr pSession = _pSessionManager->get(_sessionId, request, _sessionTimeout, context()); const std::string loginPage = "/macchina/login"; const std::string launcherPage = "/macchina/launcher"; std::string message; std::string nextPage; std::string username; Poco::Net::HTMLForm form(request, request.stream()); std::string action(form.get("action", "")); if (action == "login") { username = form.get("username", ""); std::string password = form.get("password", ""); if (_pAuthService->authenticate(username, password)) { if (_logger.information()) { _logger.information(format("User %s successfully logged in.", username)); } nextPage = launcherPage; pSession->set("username", username); } else { if (_logger.warning()) { _logger.warning(format("User %s failed authentication.", username)); } message = "The given username is not known, the password is wrong or the account has been disabled."; } } else if (action == "logout") { username = pSession->getValue<std::string>("username", ""); if (!username.empty()) { if (_logger.information()) { _logger.information(format("User %s logged out.", username)); } _pSessionManager->remove(pSession); } } else { username = pSession->getValue<std::string>("username", ""); if (!username.empty()) { nextPage = launcherPage; } } if (!message.empty()) { pSession->set("message", message); } else { pSession->erase("message"); } if (nextPage.empty()) { nextPage = loginPage; } response.setContentLength(0); response.redirect(nextPage, Poco::Net::HTTPResponse::HTTP_SEE_OTHER); response.set("Cache-Control", "no-cache"); }
void Handler::prepareResponse(Poco::Net::HTTPServerResponse &resp) { resp.set("Server", APP_NAME_SERVER_FULL); }
void ofxRemoteUIWebServer::RUIRequestHandler::handleRequest(Poco::Net::HTTPServerRequest &req, Poco::Net::HTTPServerResponse &resp) { resp.set("Content-Encoding", "gzip"); resp.sendBuffer(RUI_WEB_BINARY_CONTENT, RUI_WEB_BINARY_SIZE); }