void WebApplication::action_public_webui() { if (!sessionActive()) printFile(PRIVATE_FOLDER + "login.html"); else printFile(PRIVATE_FOLDER + "index.html"); }
AbstractRequestHandler::AbstractRequestHandler(const HttpRequest &request, const HttpEnvironment &env, WebApplication *app) : app_(app), session_(0), request_(request), env_(env) { sessionInitialize(); if (!sessionActive() && !isAuthNeeded()) sessionStart(); }
Http::Response AbstractWebApplication::processRequest(const Http::Request &request, const Http::Environment &env) { session_ = 0; request_ = request; env_ = env; // clear response clear(); // avoid clickjacking attacks header(Http::HEADER_X_FRAME_OPTIONS, "SAMEORIGIN"); header(Http::HEADER_X_XSS_PROTECTION, "1; mode=block"); header(Http::HEADER_X_CONTENT_TYPE_OPTIONS, "nosniff"); header(Http::HEADER_CONTENT_SECURITY_POLICY, "default-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; script-src 'self' 'unsafe-inline'; object-src 'none';"); // block cross-site requests if (isCrossSiteRequest(request_)) { status(401, "Unauthorized"); return response(); } sessionInitialize(); if (!sessionActive() && !isAuthNeeded()) sessionStart(); if (isBanned()) { status(403, "Forbidden"); print(QObject::tr("Your IP address has been banned after too many failed authentication attempts."), Http::CONTENT_TYPE_TXT); } else { doProcessRequest(); } return response(); }
void AbstractRequestHandler::sessionEnd() { if (sessionActive()) { QNetworkCookie cookie(C_SID.toUtf8(), session_->id.toUtf8()); cookie.setPath("/"); cookie.setExpirationDate(QDateTime::currentDateTime()); if (app_->sessionEnd(this)) { header(HEADER_SET_COOKIE, cookie.toRawForm()); } } }
Http::Response AbstractWebApplication::processRequest(const Http::Request &request, const Http::Environment &env) { session_ = 0; request_ = request; env_ = env; clear(); // clear response sessionInitialize(); if (!sessionActive() && !isAuthNeeded()) sessionStart(); if (isBanned()) { status(403, "Forbidden"); print(QObject::tr("Your IP address has been banned after too many failed authentication attempts."), Http::CONTENT_TYPE_TXT); } else { processRequest(); } return response(); }