web username and password
This commit is contained in:
parent
19cfaf6cba
commit
daaabe5f26
4 changed files with 119 additions and 2 deletions
|
@ -14,6 +14,7 @@ ESPMegaWebServer::~ESPMegaWebServer()
|
|||
|
||||
void ESPMegaWebServer::begin()
|
||||
{
|
||||
this->loadCredentialsFromFRAM();
|
||||
this->server->begin();
|
||||
auto bindedDashboardHandler = std::bind(&ESPMegaWebServer::dashboardHandler, this, std::placeholders::_1);
|
||||
this->server->on("/", HTTP_GET, bindedDashboardHandler);
|
||||
|
@ -26,6 +27,83 @@ void ESPMegaWebServer::loop()
|
|||
// AsyncWebServer doesn't have a loop function
|
||||
}
|
||||
|
||||
void ESPMegaWebServer::bindFRAM(FRAM *fram)
|
||||
{
|
||||
this->fram = fram;
|
||||
}
|
||||
|
||||
void ESPMegaWebServer::loadCredentialsFromFRAM()
|
||||
{
|
||||
this->fram->read(301, (uint8_t*)this->webUsername, 32);
|
||||
this->fram->read(333, (uint8_t*)this->webPassword, 32);
|
||||
// Verify if credentials are valid
|
||||
// A valid username and password is null terminated
|
||||
// Scan for null terminator
|
||||
bool validUsername = false;
|
||||
bool validPassword = false;
|
||||
for (int i = 0; i < 32; i++)
|
||||
{
|
||||
if (this->webUsername[i] == '\0')
|
||||
{
|
||||
validUsername = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < 32; i++)
|
||||
{
|
||||
if (this->webPassword[i] == '\0')
|
||||
{
|
||||
validPassword = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!validUsername || !validPassword)
|
||||
{
|
||||
this->resetCredentials();
|
||||
return;
|
||||
}
|
||||
// A valid username and password is at least 1 character long
|
||||
if(strlen(this->webUsername) == 0 || strlen(this->webPassword) == 0)
|
||||
{
|
||||
this->resetCredentials();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void ESPMegaWebServer::saveCredentialsToFRAM()
|
||||
{
|
||||
this->fram->write(301, (uint8_t*)this->webUsername, 32);
|
||||
this->fram->write(333, (uint8_t*)this->webPassword, 32);
|
||||
}
|
||||
|
||||
void ESPMegaWebServer::resetCredentials()
|
||||
{
|
||||
// The default username and password is "admin"
|
||||
strcpy(this->webUsername, "admin");
|
||||
strcpy(this->webPassword, "admin");
|
||||
this->saveCredentialsToFRAM();
|
||||
}
|
||||
|
||||
char* ESPMegaWebServer::getWebUsername()
|
||||
{
|
||||
return this->webUsername;
|
||||
}
|
||||
|
||||
char* ESPMegaWebServer::getWebPassword()
|
||||
{
|
||||
return this->webPassword;
|
||||
}
|
||||
|
||||
void ESPMegaWebServer::setWebUsername(const char* username)
|
||||
{
|
||||
strcpy(this->webUsername, username);
|
||||
}
|
||||
|
||||
void ESPMegaWebServer::setWebPassword(const char* password)
|
||||
{
|
||||
strcpy(this->webPassword, password);
|
||||
}
|
||||
|
||||
void ESPMegaWebServer::dashboardHandler(AsyncWebServerRequest *request)
|
||||
{
|
||||
auto bindedDashboardProcessor = std::bind(&ESPMegaWebServer::dashboardProcessor, this, std::placeholders::_1);
|
||||
|
@ -123,5 +201,20 @@ String ESPMegaWebServer::configProcessor(const String &var)
|
|||
{
|
||||
return String(mqttConfig->base_topic);
|
||||
}
|
||||
else if (var == "web_username")
|
||||
{
|
||||
return String(this->webUsername);
|
||||
}
|
||||
else if (var == "web_password")
|
||||
{
|
||||
return String(this->webPassword);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
void ESPMegaWebServer::otaHandler(AsyncWebServerRequest *request)
|
||||
{
|
||||
// Prepare to receive firmware
|
||||
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue