#raw #include #include #include #include #include "defines.h" #include "configuration.h" #end raw tConfigBlock configBlock; const uint32_t MAGIC = $magic; const char* CONFIG_SSID = "$confWifiSsid"; extern ESP8266WebServer webServer; bool configSaved = false; static bool checkAuthentication() { return webServer.authenticate(configBlock.confUser, configBlock.confPasswd); } void configServeIndex() { if (! checkAuthentication()) { return webServer.requestAuthentication(); } bool configValid = (configBlock.magic == MAGIC); if (! configValid) { #for $configItem in $configItems #if $configItem.label != "_" #if $configItem.type == "C" strcpy(configBlock.$configItem.key, "$configItem.default"); #else if $configItem.type == "I" configBlock.$configItem.key = $configItem.default; #end if #end if #end for } String buffer = "" " " " $appName" " " " " "

$appName - ESP8266 Configuration Page

"; if (configSaved) { configSaved = false; buffer += "

Configuration saved

"; } buffer += "
" " " #for $configItem in $configItems #if $configItem.label != "_" " " " " #end if #end for " " " " " " "
" " " " " " " "
" " " "
" "
" " " ""; webServer.send(200, "text/html", buffer); #ifdef DEBUG Serial.println("indexHtml request served"); #endif } void configServeGetConfiguration() { if (! checkAuthentication()) { return webServer.requestAuthentication(); } String arg; #for $configItem in $configItems #if $configItem.label != "_" arg = webServer.arg("$configItem.key"); #if $configItem.type == "C" strcpy(configBlock.$configItem.key, arg.c_str()); #else if $configItem.type == "I" configBlock.$configItem.key = atoi(arg.c_str()); #end if #end if #end for configBlock.magic = MAGIC; showConfiguration(); EEPROM.begin(512); EEPROM.put(EEPROM_ADDR, configBlock); EEPROM.commit(); Serial.println("EEPROM saved"); configSaved = true; webServer.sendHeader("Location", String("/"), true); webServer.send(302, "text/plain", ""); //webServer.send(200, "text/html", "configuration saved"); } void showConfiguration() { Serial.println("Configuration is"); #for $configItem in $configItems Serial.print("$configItem.key = <"); Serial.print(configBlock.$configItem.key); Serial.println(">"); #end for Serial.println("---"); }