mirror of
https://github.com/Laxilef/OTGateway.git
synced 2025-12-10 18:24:27 +05:00
feat: added mDNS settings
This commit is contained in:
@@ -55,6 +55,7 @@ protected:
|
|||||||
bool webServerEnabled = false;
|
bool webServerEnabled = false;
|
||||||
bool dnsServerEnabled = false;
|
bool dnsServerEnabled = false;
|
||||||
unsigned long webServerChangeState = 0;
|
unsigned long webServerChangeState = 0;
|
||||||
|
bool mDnsState = false;
|
||||||
|
|
||||||
#if defined(ARDUINO_ARCH_ESP32)
|
#if defined(ARDUINO_ARCH_ESP32)
|
||||||
const char* getTaskName() override {
|
const char* getTaskName() override {
|
||||||
@@ -874,8 +875,14 @@ protected:
|
|||||||
this->startWebServer();
|
this->startWebServer();
|
||||||
Log.straceln(FPSTR(L_PORTAL_WEBSERVER), F("Started: AP up or STA connected"));
|
Log.straceln(FPSTR(L_PORTAL_WEBSERVER), F("Started: AP up or STA connected"));
|
||||||
|
|
||||||
if (MDNS.begin(networkSettings.hostname)) {
|
// Enabling mDNS
|
||||||
MDNS.addService("http", "tcp", 80);
|
if (!this->mDnsState && settings.portal.mdns) {
|
||||||
|
if (MDNS.begin(networkSettings.hostname)) {
|
||||||
|
MDNS.addService("http", "tcp", 80);
|
||||||
|
this->mDnsState = true;
|
||||||
|
|
||||||
|
Log.straceln(FPSTR(L_PORTAL_WEBSERVER), F("mDNS enabled and service added"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ARDUINO_ARCH_ESP8266
|
#ifdef ARDUINO_ARCH_ESP8266
|
||||||
@@ -886,13 +893,27 @@ protected:
|
|||||||
this->stopWebServer();
|
this->stopWebServer();
|
||||||
Log.straceln(FPSTR(L_PORTAL_WEBSERVER), F("Stopped: AP and STA down"));
|
Log.straceln(FPSTR(L_PORTAL_WEBSERVER), F("Stopped: AP and STA down"));
|
||||||
|
|
||||||
MDNS.end();
|
// Disabling mDNS
|
||||||
|
if (this->mDnsState) {
|
||||||
|
MDNS.end();
|
||||||
|
this->mDnsState = false;
|
||||||
|
|
||||||
|
Log.straceln(FPSTR(L_PORTAL_WEBSERVER), F("mDNS disabled"));
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef ARDUINO_ARCH_ESP8266
|
#ifdef ARDUINO_ARCH_ESP8266
|
||||||
::optimistic_yield(1000);
|
::optimistic_yield(1000);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Disabling mDNS if disabled in settings
|
||||||
|
if (this->mDnsState && !settings.portal.mdns) {
|
||||||
|
MDNS.end();
|
||||||
|
this->mDnsState = false;
|
||||||
|
|
||||||
|
Log.straceln(FPSTR(L_PORTAL_WEBSERVER), F("mDNS disabled"));
|
||||||
|
}
|
||||||
|
|
||||||
// dns server
|
// dns server
|
||||||
if (!this->stateDnsServer() && !network->isConnected() && network->isApEnabled() && this->stateWebServer()) {
|
if (!this->stateDnsServer() && !network->isConnected() && network->isApEnabled() && this->stateWebServer()) {
|
||||||
this->startDnsServer();
|
this->startDnsServer();
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ struct Settings {
|
|||||||
bool auth = false;
|
bool auth = false;
|
||||||
char login[13] = DEFAULT_PORTAL_LOGIN;
|
char login[13] = DEFAULT_PORTAL_LOGIN;
|
||||||
char password[33] = DEFAULT_PORTAL_PASSWORD;
|
char password[33] = DEFAULT_PORTAL_PASSWORD;
|
||||||
|
bool mdns = true;
|
||||||
} portal;
|
} portal;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
|
|||||||
@@ -122,6 +122,7 @@ const char S_MAX_MODULATION[] PROGMEM = "maxModulation";
|
|||||||
const char S_MAX_POWER[] PROGMEM = "maxPower";
|
const char S_MAX_POWER[] PROGMEM = "maxPower";
|
||||||
const char S_MAX_TEMP[] PROGMEM = "maxTemp";
|
const char S_MAX_TEMP[] PROGMEM = "maxTemp";
|
||||||
const char S_MAX_TEMP_SYNC_WITH_TARGET_TEMP[] PROGMEM = "maxTempSyncWithTargetTemp";
|
const char S_MAX_TEMP_SYNC_WITH_TARGET_TEMP[] PROGMEM = "maxTempSyncWithTargetTemp";
|
||||||
|
const char S_MDNS[] PROGMEM = "mdns";
|
||||||
const char S_MEMBER_ID[] PROGMEM = "memberId";
|
const char S_MEMBER_ID[] PROGMEM = "memberId";
|
||||||
const char S_MIN[] PROGMEM = "min";
|
const char S_MIN[] PROGMEM = "min";
|
||||||
const char S_MIN_FREE[] PROGMEM = "minFree";
|
const char S_MIN_FREE[] PROGMEM = "minFree";
|
||||||
|
|||||||
10
src/utils.h
10
src/utils.h
@@ -440,6 +440,7 @@ void settingsToJson(const Settings& src, JsonVariant dst, bool safe = false) {
|
|||||||
portal[FPSTR(S_AUTH)] = src.portal.auth;
|
portal[FPSTR(S_AUTH)] = src.portal.auth;
|
||||||
portal[FPSTR(S_LOGIN)] = src.portal.login;
|
portal[FPSTR(S_LOGIN)] = src.portal.login;
|
||||||
portal[FPSTR(S_PASSWORD)] = src.portal.password;
|
portal[FPSTR(S_PASSWORD)] = src.portal.password;
|
||||||
|
portal[FPSTR(S_MDNS)] = src.portal.mdns;
|
||||||
|
|
||||||
auto opentherm = dst[FPSTR(S_OPENTHERM)].to<JsonObject>();
|
auto opentherm = dst[FPSTR(S_OPENTHERM)].to<JsonObject>();
|
||||||
opentherm[FPSTR(S_UNIT_SYSTEM)] = static_cast<uint8_t>(src.opentherm.unitSystem);
|
opentherm[FPSTR(S_UNIT_SYSTEM)] = static_cast<uint8_t>(src.opentherm.unitSystem);
|
||||||
@@ -707,6 +708,15 @@ bool jsonToSettings(const JsonVariantConst src, Settings& dst, bool safe = false
|
|||||||
changed = true;
|
changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (src[FPSTR(S_PORTAL)][FPSTR(S_MDNS)].is<bool>()) {
|
||||||
|
bool value = src[FPSTR(S_PORTAL)][FPSTR(S_MDNS)].as<bool>();
|
||||||
|
|
||||||
|
if (value != dst.portal.mdns) {
|
||||||
|
dst.portal.mdns = value;
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// opentherm
|
// opentherm
|
||||||
if (!src[FPSTR(S_OPENTHERM)][FPSTR(S_UNIT_SYSTEM)].isNull()) {
|
if (!src[FPSTR(S_OPENTHERM)][FPSTR(S_UNIT_SYSTEM)].isNull()) {
|
||||||
|
|||||||
@@ -296,7 +296,8 @@
|
|||||||
"portal": {
|
"portal": {
|
||||||
"login": "Login",
|
"login": "Login",
|
||||||
"password": "Password",
|
"password": "Password",
|
||||||
"auth": "Require authentication"
|
"auth": "Require authentication",
|
||||||
|
"mdns": "Use mDNS"
|
||||||
},
|
},
|
||||||
|
|
||||||
"system": {
|
"system": {
|
||||||
|
|||||||
@@ -296,7 +296,8 @@
|
|||||||
"portal": {
|
"portal": {
|
||||||
"login": "Login",
|
"login": "Login",
|
||||||
"password": "Password",
|
"password": "Password",
|
||||||
"auth": "Richiede autenticazione"
|
"auth": "Richiede autenticazione",
|
||||||
|
"mdns": "Usa mDNS"
|
||||||
},
|
},
|
||||||
|
|
||||||
"system": {
|
"system": {
|
||||||
|
|||||||
@@ -296,7 +296,8 @@
|
|||||||
"portal": {
|
"portal": {
|
||||||
"login": "Логин",
|
"login": "Логин",
|
||||||
"password": "Пароль",
|
"password": "Пароль",
|
||||||
"auth": "Требовать аутентификацию"
|
"auth": "Требовать аутентификацию",
|
||||||
|
"mdns": "Использовать mDNS"
|
||||||
},
|
},
|
||||||
|
|
||||||
"system": {
|
"system": {
|
||||||
|
|||||||
@@ -57,6 +57,11 @@
|
|||||||
<input type="checkbox" name="portal[auth]" value="true">
|
<input type="checkbox" name="portal[auth]" value="true">
|
||||||
<span data-i18n>settings.portal.auth</span>
|
<span data-i18n>settings.portal.auth</span>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" name="portal[mdns]" value="true">
|
||||||
|
<span data-i18n>settings.portal.mdns</span>
|
||||||
|
</label>
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
<button type="submit" data-i18n>button.save</button>
|
<button type="submit" data-i18n>button.save</button>
|
||||||
@@ -773,6 +778,7 @@
|
|||||||
setCheckboxValue("[name='portal[auth]']", data.portal.auth);
|
setCheckboxValue("[name='portal[auth]']", data.portal.auth);
|
||||||
setInputValue("[name='portal[login]']", data.portal.login);
|
setInputValue("[name='portal[login]']", data.portal.login);
|
||||||
setInputValue("[name='portal[password]']", data.portal.password);
|
setInputValue("[name='portal[password]']", data.portal.password);
|
||||||
|
setCheckboxValue("[name='portal[mdns]']", data.portal.mdns);
|
||||||
setBusy('#portal-settings-busy', '#portal-settings', false);
|
setBusy('#portal-settings-busy', '#portal-settings', false);
|
||||||
|
|
||||||
// Opentherm
|
// Opentherm
|
||||||
|
|||||||
Reference in New Issue
Block a user