void handleNotFound(){ if(loadFromSpiffs(httpd.uri())) return; String message = "File Not Found\n\n"; message += "URI: "; message += httpd.uri(); message += "\nMethod: "; message += (httpd.method() == HTTP_GET)?"GET":"POST"; message += "\nArguments: "; message += httpd.args(); message += "\n"; for (uint8_t i=0; i<httpd.args(); i++){ message += " NAME:"+httpd.argName(i) + "\n VALUE:" + httpd.arg(i) + "\n"; } httpd.send(404, "text/plain", message); // Serial.println(message); }
void handleNotFound(){ if(hasSD && loadFromSdCard(server.uri())) return; String message = "SDCARD Not Detected\n\n"; message += "URI: "; message += server.uri(); message += "\nMethod: "; message += (server.method() == HTTP_GET)?"GET":"POST"; message += "\nArguments: "; message += server.args(); message += "\n"; for (uint8_t i=0; i<server.args(); i++){ message += " NAME:"+server.argName(i) + "\n VALUE:" + server.arg(i) + "\n"; } server.send(404, "text/plain", message); DBG_OUTPUT_PORT.print(message); }
void handleNotFound() { String message = "File Not Found\n\n"; message += "URI: "; message += server.uri(); message += "\nMethod: "; message += (server.method() == HTTP_GET) ? "GET" : "POST"; message += "\nArguments: "; message += server.args(); message += "\n"; for (uint8_t i = 0; i < server.args(); i++) { message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; } server.send(404, "text/plain", message); }
void handleFileUpload(){ if(server.uri() != "/edit") return; HTTPUpload& upload = server.upload(); if(upload.status == UPLOAD_FILE_START){ if(SD.exists((char *)upload.filename.c_str())) SD.remove((char *)upload.filename.c_str()); uploadFile = SD.open(upload.filename.c_str(), FILE_WRITE); DBG_OUTPUT_PORT.print("Upload: START, filename: "); DBG_OUTPUT_PORT.println(upload.filename); } else if(upload.status == UPLOAD_FILE_WRITE){ if(uploadFile) uploadFile.write(upload.buf, upload.currentSize); DBG_OUTPUT_PORT.print("Upload: WRITE, Bytes: "); DBG_OUTPUT_PORT.println(upload.currentSize); } else if(upload.status == UPLOAD_FILE_END){ if(uploadFile) uploadFile.close(); DBG_OUTPUT_PORT.print("Upload: END, Size: "); DBG_OUTPUT_PORT.println(upload.totalSize); } }
void Threm::start() { _thremContext->isStarted = true; #ifdef LOG LOG << "Threm::start" << endl; LOG << "Free heap " << ESP.getFreeHeap() << endl; #endif spiffsOk = SPIFFS.begin(); if (!spiffsOk) { #ifdef LOG LOG << "SPIFFS failed" << endl; #endif } ESP8266WebServer* server = _thremContext->getServer(); IThremPlugin* plugin; PluginMeta* meta; for (int i = 0; i < _plugins->size(); i++) { plugin = _plugins->get(i); bool canEnable = true; int pluginId = plugin->getUniqueId(); { String state = getJsonStateFor(pluginId); yield(); StaticJsonBuffer<JSON_BUFFER_SIZE> jsonBuffer; JsonObject& root = jsonBuffer.parseObject(state); if (!root.success()) { #ifdef LOG LOG << "Failed to parse config for " << String(plugin->getUniqueId()) << endl; #endif } else { bool isDisabled = root["off"]; if (isDisabled) { canEnable = false; } } if (canEnable) { canEnable = plugin->init(_thremContext, root); } } meta = _pluginMeta->get(i); meta->isEnabled = canEnable; #ifdef DEBUG DEBUG << String(plugin->getName()) << " enabled=" << canEnable << endl; #endif _pluginMeta->set(i, meta); yield(); } #ifdef DEBUG DEBUG << "Plugins declared: " << _plugins->size() << endl; #endif #ifdef LOG LOG << getJsonState() << endl; #endif #ifdef DEBUG DEBUG << "default callbacks setup." << endl; #endif server->onNotFound([=](){ IThremPlugin*plugin; PluginMeta* meta; String uri = server->uri(); for (int i = 0; i < _plugins->size(); i++) { plugin = _plugins->get(i); meta = _pluginMeta->get(i); if (meta->isEnabled) { if (plugin->handleNotFound(_thremContext, uri)) { #ifdef LOG LOG << "NotFound handled by: " << plugin->getName() << endl; #endif return; } } } String message = "File Not Found\n\n"; message += "URI: "; message += server->uri(); message += "\nMethod: "; message += (server->method() == HTTP_GET) ? "GET" : "POST"; message += "\nArguments: "; message += server->args(); message += "\n"; for (uint8_t i = 0; i < server->args(); i++) { message += " " + server->argName(i) + ": " + server->arg(i) + "\n"; } server->sendHeader("Cache-Control", "no-cache, no-store, must-revalidate"); server->sendHeader("Pragma", "no-cache"); server->sendHeader("Expires", "-1"); server->send(404, "text/plain", message); }); #ifdef DEBUG DEBUG << "Starting webserver." << endl; #endif server->begin(); #ifdef DEBUG DEBUG << "Web server started." << endl; #endif }
bool MyFunctionRequestHandler::handle(ESP8266WebServer& server, HTTPMethod requestMethod, String requestUri){ server.client().setNoDelay(true); requestUri.toLowerCase(); Serial.println(String(F("handle(")) + String(requestMethod) + String(F(", ")) + requestUri + String(F(")"))); if (requestMethod == HTTP_GET){ if (requestUri.equals(F("/")) || requestUri.equals(F("/index.html"))){ server.sendHeader(F("cache-control"), F("private, max-age=0, no-cache, no-store")); server.sendHeader(F("Content-Encoding"), F("gzip")); server.send_P(200, String(F("text/html")).c_str(), index_html_gz, sizeof(index_html_gz)); return true; } if (requestUri.equals(F("/font.woff"))){ server.send_P(200, String(F("text/html")).c_str(), font_woff, sizeof(font_woff)); return true; } /*if (handleStatic(server, requestUri, F("/"), F("/index_comb.html.gz"), F("text/html"), false)) return true; if (handleStatic(server, requestUri, F("/"), F("/index.html"), F("text/html"), false)) return true; if (handleStatic(server, requestUri, F("/index.html"), F("/index_comb.html.gz"), F("text/html"), false)) return true; if (handleStatic(server, requestUri, F("/index.html"), F("/index.html"), F("text/html"), false)) return true; if (handleStatic(server, requestUri, F("/phonon.min.css"), F("/phonon.min.css"), F("text/css"), true)) return true; if (handleStatic(server, requestUri, F("/phonon.min.js"), F("/phonon.min.js"), F("application/javascript"), true)) return true; if (handleStatic(server, requestUri, F("/forms.min.css"), F("/forms.min.css"), F("text/css"), true)) return true; if (handleStatic(server, requestUri, F("/forms.min.js"), F("/forms.min.js"), F("application/javascript"), true)) return true; if (handleStatic(server, requestUri, F("/icons.min.css"), F("/icons.min.css"), F("text/css"), true)) return true; if (handleStatic(server, requestUri, F("/lists.min.css"), F("/lists.min.css"), F("text/css"), true)) return true; if (handleStatic(server, requestUri, F("/phonon-base.min.css"), F("/phonon-base.min.css"), F("text/css"), true)) return true; if (handleStatic(server, requestUri, F("/phonon-core.min.js"), F("/phonon-core.min.js"), F("application/javascript"), true)) return true; if (handleStatic(server, requestUri, F("/font.woff"), F("/font.woff"), F("application/font.woff"), true)) return true; if (handleStatic(server, requestUri, F("/font.eot"), F("/font.eot"), F("application/font.eot"), true)) return true; if (handleStatic(server, requestUri, F("/font.svg"), F("/font.svg"), F("application/font.svg"), true)) return true; if (handleStatic(server, requestUri, F("/font.ttf"), F("/font.ttf"), F("application/font.ttf"), true)) return true; */ if (requestUri.startsWith(F("/api"))){ apiHandler(server); return true; } if (requestUri.startsWith(F("/info"))){ infoHandler(server); return true; } if (requestUri.startsWith(F("/dtintinfo"))){ dtIntegrationHandler(server); return true; } } else if (requestMethod == HTTP_POST){ if (requestUri.startsWith(F("/update"))){ StreamString error; if (Update.hasError()) { Update.printError(error); } if (mbRebootRequired) httpReboot(server, (Update.hasError()) ? error : String(F("Upload succeeded! ")) + String(miUploadSize) + String(F(" bytes transferred<p>"))); else{ server.sendHeader(F("location"), F("/")); server.send(302); return true; } } if (requestUri.equals(F("/dynatrace"))){ dynatracePostHandler(server); return true; } } //Now we really need to respond with 404 String message = F("File Not Found\n\n"); message += F("URI: "); message += server.uri(); message += F("\nMethod: "); message += (server.method() == HTTP_GET ) ? F("GET") : F("POST"); message += F("\nArguments: "); message += server.args(); message += F("\n"); for ( uint8_t i = 0; i < server.args(); i++ ) { message += " " + server.argName ( i ) + ": " + server.arg ( i ) + "\n"; } server.sendHeader(F("cache-control"), F("private, max-age=0, no-cache, no-store")); server.send (404, F("text/plain"), message); return true; }