MCPcopy Create free account
hub / github.com/BruceDevices/firmware / configureWebServer

Function configureWebServer

src/core/wifi/webInterface.cpp:402–748  ·  view source on GitHub ↗

** Function: configureWebServer ** configure web server **********************************************************************/

Source from the content-addressed store, hash-verified

400** configure web server
401**********************************************************************/
402void configureWebServer() {
403 mdnsRunning = startMdnsResponder();
404 DefaultHeaders::Instance().addHeader("Access-Control-Allow-Origin", "*");
405 server->onNotFound(notFound);
406
407 // Index
408 server->on("/", HTTP_GET, [](AsyncWebServerRequest *request) {
409 if (checkUserWebAuth(request, true)) {
410 serveWebUIFile(request, "index.html", "text/html", true, index_html, index_html_size);
411 }
412 });
413
414 // Login
415 server->on("/login", HTTP_POST, [](AsyncWebServerRequest *request) {
416 if (request->hasParam("username", true) && request->hasParam("password", true)) {
417 String username = request->getParam("username", true)->value();
418 String password = request->getParam("password", true)->value();
419
420 if (username == bruceConfig.webUI.user && password == bruceConfig.webUI.pwd) {
421 String token = generateToken();
422 AsyncWebServerResponse *response = request->beginResponse(302);
423 response->addHeader("Location", "/");
424 response->addHeader("Set-Cookie", "BRUCESESSION=" + token + "; Path=/; HttpOnly");
425 request->send(response);
426 bruceConfig.addWebUISession(token);
427 return;
428 }
429 }
430 AsyncWebServerResponse *response = request->beginResponse(302);
431 response->addHeader("Location", "/?failed");
432 request->send(response);
433 });
434
435 // Logout
436 server->on("/logout", HTTP_GET, [](AsyncWebServerRequest *request) {
437 if (request->hasHeader("Cookie")) {
438 const AsyncWebHeader *cookie = request->getHeader("Cookie");
439 String c = cookie->value();
440 int idx = c.indexOf("BRUCESESSION=");
441 if (idx != -1) {
442 int start = idx + 13;
443 int end = c.indexOf(';', start);
444 if (end == -1) end = c.length();
445 String token = c.substring(start, end);
446 bruceConfig.removeWebUISession(token);
447 }
448 }
449 AsyncWebServerResponse *response = request->beginResponse(302);
450 response->addHeader("Location", "/?loggedout");
451 response->addHeader("Set-Cookie", "BRUCESESSION=0; Path=/; Expires=Thu, 01 Jan 1970 00:00:00 GMT");
452 request->send(response);
453 });
454
455 // Static files
456 server->on("/theme.css", HTTP_GET, [](AsyncWebServerRequest *request) {
457 serveWebUIFile(request, "theme.css", "text/css");
458 });
459 server->on("/index.css", HTTP_GET, [](AsyncWebServerRequest *request) {

Callers 1

startWebUiFunction · 0.85

Calls 15

startMdnsResponderFunction · 0.85
checkUserWebAuthFunction · 0.85
serveWebUIFileFunction · 0.85
generateTokenFunction · 0.85
humanReadableSizeFunction · 0.85
millisFunction · 0.85
parseSerialCommandFunction · 0.85
deleteFromSdFunction · 0.85
setupSdCardFunction · 0.85
addWebUISessionMethod · 0.80
removeWebUISessionMethod · 0.80
getBinLogMethod · 0.80

Tested by

no test coverage detected