diff --git a/app/app.ino b/app/app.ino index 0931bec..fc21f75 100644 --- a/app/app.ino +++ b/app/app.ino @@ -6,31 +6,82 @@ ESP8266WebServer server(80); +bool handleFile(String fileName, String dataType) { + Serial.println(fileName); + + File dataFile = SPIFFS.open(fileName, "r"); + if(!dataFile){ + server.send(404, "text/plain", "Sorry file not found"); + return false; + } + server.streamFile(dataFile, dataType); + dataFile.close(); + return true; +} + +const char *form-fields[] = {"device-id" "wifi-ssid" "wifi-password"}; + +bool handlePayload() { + Serial.println(server.args()); + + if(server.args()!=3) + server.send(404, "text/plain", "Missing params"); + + Serial.println("saving"); + + File dataFile = SPIFFS.open("/config.txt", "w"); + for (int i = 0; i < server.args(); i++) { + + if(server.argName(i) == "device-id") { + dataFile.println(server.arg(i)); + } + if(server.argName(i) == "wifi-ssid") { + dataFile.println(server.arg(i)); + } + if(server.argName(i) == "wifi-password") { + dataFile.println(server.arg(i)); + } + } + dataFile.close(); + server.send(200, "text/plain", "success"); + return true; +} + + //https://steve.fi/Hardware/d1-flash/ -void handleNotFound() { +bool handleNotFound() { // If we could serve from flash we're good. - Serial.println(server.uri()); - return; - //if (loadFromSpiffs(server.uri())) - // return; + Serial.println("handle file"); + if(server.args()){ + Serial.println("handle payload"); - // Otherwise a generic 404. - String message = "File 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"; + return handlePayload(); } - server.send(404, "text/plain", message); - Serial.println(message); + if(server.method() == HTTP_POST){ + Serial.println("POST data"); + Serial.println(server.args()); + } + + // jut hard code one js css and html file + // may handle multiple images + if (server.uri().endsWith(".js")) + return handleFile("/main.js", "text/javascript"); + if (server.uri().endsWith(".css")) + return handleFile("/tachyon.css", "text/css"); + if (server.uri().endsWith(".html")) + return handleFile("/index.html", "text/html"); + if (server.uri().endsWith(".txt")) + return handleFile("/config.txt", "text/plain"); + if (server.uri().endsWith(".png")) + return handleFile(server.uri(), "image/png"); + + File dataFile = SPIFFS.open("/index.html", "r"); + if(!dataFile) + return false; + server.streamFile(dataFile, "text/html"); + dataFile.close(); + } void setup_mode() { @@ -45,6 +96,8 @@ void setup_mode() { server.onNotFound(handleNotFound); server.begin(); + Serial.println("Server started"); + } void connect() { @@ -97,5 +150,4 @@ void setup() { //ESP.restart(); void loop() { server.handleClient(); - //delay(2000); } diff --git a/app/data/index.html b/app/data/index.html index ad8a2d1..3206e14 100644 --- a/app/data/index.html +++ b/app/data/index.html @@ -1,8 +1,12 @@ - -
- - - -Welcome - + + + + + + + + +- -
- - - - - - -