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 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 handleWifi() { // Check for args with connection settings if(server.args() > 0){ String temp = ""; temp = server.arg("ap"); if(temp.length() > 0){ quick_setup->CLIENT_SSID = temp; }else{ quick_setup->CLIENT_SSID = ""; } temp = server.arg("pw"); if(temp.length() > 0){ quick_setup->CLIENT_Password = temp; }else{ quick_setup->CLIENT_Password = ""; } // Save Settings quick_setup->SaveClientSettings(); quick_setup->Mode = CLIENT_MODE; wifi_helper->wifiSetup(); } String body = wifi_html; body.replace("$Network$",String(quick_setup->Mode == CLIENT_MODE ? quick_setup->CLIENT_SSID : quick_setup->AP_SSID)); body.replace("$Status$",String(quick_setup->Mode == CLIENT_MODE ? quick_setup->CLIENT_State : quick_setup->AP_State)); body.replace("$IP$",String(wifi_helper->IPtoString(quick_setup->Mode == CLIENT_MODE ? quick_setup->CLIENT_IP : quick_setup->AP_IP))); body.replace("$Mode$",String(quick_setup->Mode == CLIENT_MODE ? "Wifi Client" : "Access Point")); server.send(200, "text/html", body); }
// DELETEメソッドに対応 void handleDelete(){ if(server.args() == 0) return returnFail("BAD ARGS"); String path = server.arg(0); if(path == "/" || !SD.exists((char *)path.c_str())) { returnFail("BAD PATH"); return; } deleteRecursive(path); returnOK(); }
// PUTメソッドに対応 void handleCreate(){ if(server.args() == 0) return returnFail("BAD ARGS"); String path = server.arg(0); if(path == "/" || SD.exists((char *)path.c_str())) { returnFail("BAD PATH"); return; } if(path.indexOf('.') > 0){ File file = SD.open((char *)path.c_str(), FILE_WRITE); if(file){ file.write((const char *)0); file.close(); } } else { SD.mkdir((char *)path.c_str()); } returnOK(); }
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; }