Framework update.

This commit is contained in:
stephb9959
2022-05-03 19:22:54 -07:00
parent bc05845015
commit d8579d9500

View File

@@ -2011,23 +2011,17 @@ namespace OpenWifi {
return false; return false;
} }
inline void AddCORS() {
auto Origin = Request->find("Origin");
if (Origin != Request->end()) {
Response->set("Access-Control-Allow-Origin", Origin->second);
Response->set("Vary", "Origin");
} else {
Response->set("Access-Control-Allow-Origin", "*");
}
Response->set("Access-Control-Allow-Headers", "*");
Response->set("Access-Control-Allow-Methods", MakeList(Methods_));
Response->set("Access-Control-Max-Age", "86400");
}
inline void SetCommonHeaders(bool CloseConnection=false) { inline void SetCommonHeaders(bool CloseConnection=false) {
Response->setVersion(Poco::Net::HTTPMessage::HTTP_1_1); Response->setVersion(Poco::Net::HTTPMessage::HTTP_1_1);
Response->setChunkedTransferEncoding(true); Response->setChunkedTransferEncoding(true);
Response->setContentType("application/json"); Response->setContentType("application/json");
auto Origin = Request->find("Origin");
if (Origin != Request->end()) {
Response->set("Access-Control-Allow-Origin", Origin->second);
} else {
Response->set("Access-Control-Allow-Origin", "*");
}
Response->set("Vary", "Origin, Accept-Encoding");
if(CloseConnection) { if(CloseConnection) {
Response->set("Connection", "close"); Response->set("Connection", "close");
Response->setKeepAlive(false); Response->setKeepAlive(false);
@@ -2038,12 +2032,40 @@ namespace OpenWifi {
} }
} }
/* inline void AddCORS() {
SetCommonHeaders();
auto Origin = Request->find("Origin");
if (Origin != Request->end()) {
Response->set("Access-Control-Allow-Origin", Origin->second);
Response->set("Vary", "Origin");
} else {
Response->set("Access-Control-Allow-Origin", "*");
}
Response->set("Access-Control-Allow-Headers", "*");
Response->set("Access-Control-Allow-Methods", MakeList(Methods_));
Response->set("Access-Control-Max-Age", "86400");
}
*/
inline void ProcessOptions() { inline void ProcessOptions() {
// try to figure out if we are doing a CORS options or plain OPTIONS Response->setVersion(Poco::Net::HTTPMessage::HTTP_1_1);
AddCORS(); Response->setChunkedTransferEncoding(true);
Response->set("Vary", "Origin, Access-Control-Request-Headers, Access-Control-Request-Method"); auto Origin = Request->find("Origin");
SetCommonHeaders(); if (Origin != Request->end()) {
Response->set("Access-Control-Allow-Credentials", "true"); Response->set("Access-Control-Allow-Origin", Origin->second);
} else {
Response->set("Access-Control-Allow-Origin", "*");
}
Response->set("Access-Control-Allow-Methods", MakeList(Methods_));
auto RequestHeaders = Request->find("Access-Control-Request-Headers");
if(RequestHeaders!=Request->end())
Response->set("Access-Control-Allow-Headers", RequestHeaders->second);
Response->set("Vary", "Origin, Accept-Encoding");
Response->set("Access-Control-Allow-Credentials", "true");
Response->set("Access-Control-Max-Age", "86400");
Response->set("Connection", "Keep-Alive");
Response->set("Keep-Alive", "timeout=30, max=1000");
Response->setContentLength(0); Response->setContentLength(0);
Response->setStatus(Poco::Net::HTTPResponse::HTTP_OK); Response->setStatus(Poco::Net::HTTPResponse::HTTP_OK);
Response->send(); Response->send();
@@ -2052,7 +2074,6 @@ namespace OpenWifi {
inline void PrepareResponse(Poco::Net::HTTPResponse::HTTPStatus Status = Poco::Net::HTTPResponse::HTTP_OK, inline void PrepareResponse(Poco::Net::HTTPResponse::HTTPStatus Status = Poco::Net::HTTPResponse::HTTP_OK,
bool CloseConnection = false) { bool CloseConnection = false) {
Response->setStatus(Status); Response->setStatus(Status);
AddCORS();
SetCommonHeaders(CloseConnection); SetCommonHeaders(CloseConnection);
} }
@@ -2128,7 +2149,7 @@ namespace OpenWifi {
inline void SendCompressedTarFile(const std::string & FileName, const std::string & Content) { inline void SendCompressedTarFile(const std::string & FileName, const std::string & Content) {
Response->setStatus(Poco::Net::HTTPResponse::HTTPStatus::HTTP_OK); Response->setStatus(Poco::Net::HTTPResponse::HTTPStatus::HTTP_OK);
AddCORS(); SetCommonHeaders();
Response->set("Content-Type","application/gzip"); Response->set("Content-Type","application/gzip");
Response->set("Content-Disposition", "attachment; filename=" + FileName ); Response->set("Content-Disposition", "attachment; filename=" + FileName );
Response->set("Content-Transfer-Encoding","binary"); Response->set("Content-Transfer-Encoding","binary");
@@ -2144,7 +2165,7 @@ namespace OpenWifi {
inline void SendFile(Poco::File & File, const std::string & UUID) { inline void SendFile(Poco::File & File, const std::string & UUID) {
Response->setStatus(Poco::Net::HTTPResponse::HTTPStatus::HTTP_OK); Response->setStatus(Poco::Net::HTTPResponse::HTTPStatus::HTTP_OK);
AddCORS(); SetCommonHeaders();
Response->set("Content-Type","application/octet-stream"); Response->set("Content-Type","application/octet-stream");
Response->set("Content-Disposition", "attachment; filename=" + UUID ); Response->set("Content-Disposition", "attachment; filename=" + UUID );
Response->set("Content-Transfer-Encoding","binary"); Response->set("Content-Transfer-Encoding","binary");
@@ -2157,7 +2178,7 @@ namespace OpenWifi {
inline void SendFile(Poco::File & File) { inline void SendFile(Poco::File & File) {
Response->setStatus(Poco::Net::HTTPResponse::HTTPStatus::HTTP_OK); Response->setStatus(Poco::Net::HTTPResponse::HTTPStatus::HTTP_OK);
AddCORS(); SetCommonHeaders();
Poco::Path P(File.path()); Poco::Path P(File.path());
auto MT = Utils::FindMediaType(File); auto MT = Utils::FindMediaType(File);
if(MT.Encoding==Utils::BINARY) { if(MT.Encoding==Utils::BINARY) {
@@ -2171,7 +2192,7 @@ namespace OpenWifi {
inline void SendFile(Poco::TemporaryFile &TempAvatar, [[maybe_unused]] const std::string &Type, const std::string & Name) { inline void SendFile(Poco::TemporaryFile &TempAvatar, [[maybe_unused]] const std::string &Type, const std::string & Name) {
Response->setStatus(Poco::Net::HTTPResponse::HTTPStatus::HTTP_OK); Response->setStatus(Poco::Net::HTTPResponse::HTTPStatus::HTTP_OK);
AddCORS(); SetCommonHeaders();
auto MT = Utils::FindMediaType(Name); auto MT = Utils::FindMediaType(Name);
if(MT.Encoding==Utils::BINARY) { if(MT.Encoding==Utils::BINARY) {
Response->set("Content-Transfer-Encoding","binary"); Response->set("Content-Transfer-Encoding","binary");
@@ -2187,7 +2208,7 @@ namespace OpenWifi {
inline void SendFileContent(const std::string &Content, const std::string &Type, const std::string & Name) { inline void SendFileContent(const std::string &Content, const std::string &Type, const std::string & Name) {
Response->setStatus(Poco::Net::HTTPResponse::HTTPStatus::HTTP_OK); Response->setStatus(Poco::Net::HTTPResponse::HTTPStatus::HTTP_OK);
AddCORS(); SetCommonHeaders();
auto MT = Utils::FindMediaType(Name); auto MT = Utils::FindMediaType(Name);
if(MT.Encoding==Utils::BINARY) { if(MT.Encoding==Utils::BINARY) {
Response->set("Content-Transfer-Encoding","binary"); Response->set("Content-Transfer-Encoding","binary");
@@ -2206,7 +2227,7 @@ namespace OpenWifi {
inline void SendHTMLFileBack(Poco::File & File, inline void SendHTMLFileBack(Poco::File & File,
const Types::StringPairVec & FormVars) { const Types::StringPairVec & FormVars) {
Response->setStatus(Poco::Net::HTTPResponse::HTTPStatus::HTTP_OK); Response->setStatus(Poco::Net::HTTPResponse::HTTPStatus::HTTP_OK);
AddCORS(); SetCommonHeaders();
Response->set("Pragma", "private"); Response->set("Pragma", "private");
Response->set("Expires", "Mon, 26 Jul 2027 05:00:00 GMT"); Response->set("Expires", "Mon, 26 Jul 2027 05:00:00 GMT");
std::string FormContent = Utils::LoadFile(File.path()); std::string FormContent = Utils::LoadFile(File.path());