Compare commits
2 Commits
b89604edc3
...
3c824bfc92
Author | SHA1 | Date | |
---|---|---|---|
3c824bfc92 | |||
9ea541a1b4 |
@ -28,7 +28,7 @@ xhr.onreadystatechange = function(){
|
||||
}
|
||||
|
||||
function reloadTerminal() {
|
||||
xhr.open("GET", "/terminal", true);
|
||||
xhr.open("POST", "/app=terminal", true);
|
||||
xhr.send();
|
||||
setTimeout(reloadTerminal, 1000);
|
||||
};
|
||||
|
@ -1,17 +1,42 @@
|
||||
#include "httpserver.h"
|
||||
|
||||
bool HTTPServer::start() {
|
||||
if(!mount_fs()) {
|
||||
logf("cant mount filesystem, EXIT !\n\r");
|
||||
return false;
|
||||
}
|
||||
logf("[HTTPServer] LittleFS mounted !\n\r");
|
||||
logf("[HTTPServer] root:\n\r");
|
||||
this->listRoot();
|
||||
logf("\n\r");
|
||||
|
||||
bool HTTPServer::addRootFileHandler() {
|
||||
// default handler
|
||||
this->onNotFound([this]() {
|
||||
String message = "File Not Found\n\n";
|
||||
message += "URI: ";
|
||||
message += uri();
|
||||
message += "\nMethod: ";
|
||||
message += (method() == HTTP_GET) ? "GET" : "POST";
|
||||
message += "\nArguments: ";
|
||||
message += args();
|
||||
message += "\n";
|
||||
|
||||
// //experimental, see doku.md
|
||||
// server.serveStatic("/compressed", LittleFS, "/compressed.html.gzip");
|
||||
for (uint8_t i = 0; i < args(); i++) {
|
||||
message += " " + argName(i) + ": " + arg(i) + "\n";
|
||||
}
|
||||
send(404, "text/plain", message);
|
||||
});
|
||||
|
||||
this->serveStatic("", LittleFS, "/index.html");
|
||||
this->serveStatic("/", LittleFS, "/index.html");
|
||||
this->serveStatic("/#", LittleFS, "/index.html");
|
||||
this->serveStatic("/style.css", LittleFS, "/style.css");
|
||||
this->serveStatic("/input.js", LittleFS, "/input.js");
|
||||
this->serveStatic("/favicon.png", LittleFS, "/favicon.png");
|
||||
// add static root file handler for http
|
||||
this->serveStatic("/", LittleFS, "/");
|
||||
|
||||
// application handler
|
||||
this->on("/app=terminal", HTTP_POST, [this]() {
|
||||
String log_msg = "terminal: millis: ";
|
||||
log_msg += millis();
|
||||
send(200, "text/plain", log_msg);
|
||||
});
|
||||
|
||||
return true;
|
||||
}
|
||||
this->begin();
|
||||
Serial.printf("[HTTPServer] Server active on Port 80 !\n\r");
|
||||
}
|
@ -1,19 +1,30 @@
|
||||
#pragma once
|
||||
|
||||
#include "filesys.h"
|
||||
#include <ESP8266WebServer.h>
|
||||
#include <stdarg.h>
|
||||
#include "filesys.h"
|
||||
|
||||
// debug log <ESP8266WebServer.h>
|
||||
// #define DEBUGV(f,...) do { Serial.printf(PSTR(f), ##__VA_ARGS__); } while (0)
|
||||
|
||||
#define LOG_STR "[HTTPServer]"
|
||||
|
||||
|
||||
class HTTPServer : public ESP8266WebServer {
|
||||
|
||||
private:
|
||||
const char* rootDir;
|
||||
const char* rootDir = "/";
|
||||
|
||||
bool addRootFileHandler();
|
||||
bool formatFS() {
|
||||
return format_fs();
|
||||
}
|
||||
void listRoot() {
|
||||
ls(rootDir);
|
||||
}
|
||||
void logf(const char *format, ...) {
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
Serial.print(LOG_STR);
|
||||
Serial.printf(format, args);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
public:
|
||||
HTTPServer(const int _port, const char* _rootDir) :
|
||||
@ -24,71 +35,5 @@ public:
|
||||
Serial.printf("[HTTPServer] shut down ...\n\r");
|
||||
}
|
||||
|
||||
bool start() {
|
||||
if(!mount_fs())
|
||||
return false;
|
||||
Serial.printf("[HTTPServer] LittleFS mounted !\n\r");
|
||||
|
||||
Serial.printf("[HTTPServer] root:\n\r");
|
||||
this->listRoot();
|
||||
Serial.printf("\n\r");
|
||||
|
||||
// https://stackoverflow.com/questions/7627098/what-is-a-lambda-expression-in-c11
|
||||
on("/compress.html", [this]() {
|
||||
File f = open("/compress.html.gz");
|
||||
if (!f) {
|
||||
Serial.println("Failed to open file for reading");
|
||||
send(404, "text/plain", "Failed to open file for reading");
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.println("Streaming /compress.html.gz to client");
|
||||
const String cont = "text/html";
|
||||
streamFile(f, cont);
|
||||
}
|
||||
});
|
||||
on("/comp.html", [this]() {
|
||||
File f = open("/comp.html.gz");
|
||||
if (!f) {
|
||||
Serial.println("Failed to open file for reading");
|
||||
send(404, "text/plain", "Failed to open file for reading");
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.println("Streaming /comp.html.gz to client");
|
||||
const String cont = "text/html";
|
||||
streamFile(f, cont);
|
||||
}
|
||||
});
|
||||
|
||||
on("/terminal", [this]() {
|
||||
String log_msg = "terminal: millis: ";
|
||||
log_msg += millis();
|
||||
send(200, "text/plain", log_msg);
|
||||
});
|
||||
|
||||
onNotFound([this]() {
|
||||
String message = "File Not Found\n\n";
|
||||
message += "URI: ";
|
||||
message += uri();
|
||||
message += "\nMethod: ";
|
||||
message += (method() == HTTP_GET) ? "GET" : "POST";
|
||||
message += "\nArguments: ";
|
||||
message += args();
|
||||
message += "\n";
|
||||
|
||||
for (uint8_t i = 0; i < args(); i++) {
|
||||
message += " " + argName(i) + ": " + arg(i) + "\n";
|
||||
}
|
||||
send(404, "text/plain", message);
|
||||
});
|
||||
|
||||
if( this->addRootFileHandler() ){
|
||||
this->begin();
|
||||
Serial.printf("[HTTPServer] Server active on Port 80 !\n\r");
|
||||
return true;
|
||||
}
|
||||
Serial.printf("[HTTPServer] Not starting Server, something went wrong !\n\r");
|
||||
return false;
|
||||
}
|
||||
bool start();
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user