1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- class MainRouter : public AsyncWebHandler {
- public:
- MainRouter() {}
- virtual ~MainRouter() {}
- bool canHandle(AsyncWebServerRequest *request) {
- String requestURI = request->url().c_str();
- if (requestURI.equals("/upload")) {
-
- return false;
- } else if (requestURI.startsWith("/api/")) {
-
- return false;
- }
- return true;
- }
-
- void handleRequest(AsyncWebServerRequest *request) {
- String requestURI = request->url().c_str();
-
- if (requestURI.indexOf("./") > 0) {
- requestURI.replace("./", "");
- AsyncWebServerResponse *response = request->beginResponse(307);
- response->addHeader("Cache-Control", "no-cache");
- response->addHeader("Location", requestURI);
- request->send(response);
- return;
- }
-
-
-
- if (requestURI == "/") {
- request->redirect("/index.html");
- return;
- }
-
- if (requestURI.startsWith("/store/")) {
-
- AsyncWebServerResponse *response = request->beginResponse(401, "text/html", "403 - Forbidden");
- request->send(response);
- return;
- }
-
- Serial.println("URI: " + requestURI + " | MIME: " + getMime(requestURI));
-
- if (SD.exists("/www" + requestURI)) {
-
- if (IsDir("/www" + requestURI)) {
-
- if (!requestURI.endsWith("/")) {
-
- request->redirect(requestURI + "/");
- return;
- }
- if (SD.exists("/www" + requestURI + "index.html")) {
- request->send(SDFS, "/www" + requestURI + "/index.html", "text/html", false);
- } else {
- HandleDirRender(request, requestURI , "/www" + requestURI);
- }
- } else {
- request->send(SDFS, "/www" + requestURI, getMime(requestURI), false);
- }
- } else {
-
- AsyncResponseStream *response = request->beginResponseStream("text/html");
- Serial.println("NOT FOUND: " + requestURI);
- prettyPrintRequest(request);
- response->print("<!DOCTYPE html><html><head><title>Not Found</title></head><body>");
- response->print("<p>404 - Not Found</p>");
- response->printf("<p>Requesting http://%s with URI: %s</p>", request->host().c_str(), request->url().c_str());
- response->print("</body></html>");
- request->send(response);
- }
- }
- };
|