added back format console command

This commit is contained in:
proddy
2020-07-08 19:14:47 +02:00
parent 8a413b19de
commit ca130576fd
3 changed files with 57 additions and 18 deletions

View File

@@ -2,14 +2,14 @@
using namespace std::placeholders; using namespace std::placeholders;
FactoryResetService::FactoryResetService(AsyncWebServer* server, FS* fs, SecurityManager* securityManager) : fs(fs) { FactoryResetService::FactoryResetService(AsyncWebServer * server, FS * fs, SecurityManager * securityManager)
: fs(fs) {
server->on(FACTORY_RESET_SERVICE_PATH, server->on(FACTORY_RESET_SERVICE_PATH,
HTTP_POST, HTTP_POST,
securityManager->wrapRequest(std::bind(&FactoryResetService::handleRequest, this, _1), securityManager->wrapRequest(std::bind(&FactoryResetService::handleRequest, this, _1), AuthenticationPredicates::IS_ADMIN));
AuthenticationPredicates::IS_ADMIN));
} }
void FactoryResetService::handleRequest(AsyncWebServerRequest* request) { void FactoryResetService::handleRequest(AsyncWebServerRequest * request) {
request->onDisconnect(std::bind(&FactoryResetService::factoryReset, this)); request->onDisconnect(std::bind(&FactoryResetService::factoryReset, this));
request->send(200); request->send(200);
} }

View File

@@ -152,6 +152,27 @@ void System::restart() {
#endif #endif
} }
// format fs
// format the FS. Wipes everything.
void System::format(uuid::console::Shell & shell) {
auto msg = F("Resetting all settings to defaults");
shell.logger().warning(msg);
shell.flush();
#ifndef EMSESP_STANDALONE
EMSuart::stop();
#if defined(ESP8266)
LittleFS.format();
#elif defined(ESP32)
SPIFFS.format();
#endif
System::restart();
#endif
}
// return free heap mem as a percentage // return free heap mem as a percentage
uint8_t System::free_mem() { uint8_t System::free_mem() {
#ifndef EMSESP_STANDALONE #ifndef EMSESP_STANDALONE
@@ -444,6 +465,23 @@ void System::console_commands(Shell & shell, unsigned int context) {
restart(); restart();
}); });
EMSESPShell::commands->add_command(ShellContext::SYSTEM,
CommandFlags::ADMIN,
flash_string_vector{F_(format)},
[](Shell & shell, const std::vector<std::string> & arguments __attribute__((unused))) {
shell.enter_password(F_(password_prompt), [=](Shell & shell, bool completed, const std::string & password) {
if (completed) {
EMSESP::esp8266React.getSecuritySettingsService()->read([&](SecuritySettings & securitySettings) {
if (securitySettings.jwtSecret.equals(password.c_str())) {
format(shell);
} else {
shell.println(F("incorrect password"));
}
});
}
});
});
EMSESPShell::commands->add_command(ShellContext::SYSTEM, EMSESPShell::commands->add_command(ShellContext::SYSTEM,
CommandFlags::ADMIN, CommandFlags::ADMIN,
flash_string_vector{F_(passwd)}, flash_string_vector{F_(passwd)},

View File

@@ -43,6 +43,7 @@ class System {
void loop(); void loop();
static void restart(); static void restart();
static void format(uuid::console::Shell & shell);
static uint8_t free_mem(); static uint8_t free_mem();
void syslog_init(); void syslog_init();
void set_heartbeat(bool system_heartbeat); void set_heartbeat(bool system_heartbeat);