diff --git a/src/terminal_api_driver.cpp b/src/terminal_api_driver.cpp index e68c727..63a3185 100644 --- a/src/terminal_api_driver.cpp +++ b/src/terminal_api_driver.cpp @@ -425,21 +425,21 @@ public: } void setNetworkSettings(TerminalNetworkSettings& s, bool readback = true) { - const auto [mAddr, mMask] = splitIpAndMask(s.managementIp); - const auto [dAddr, dMask] = splitIpAndMask(s.dataIp); + const auto mang = splitIpAndMask(s.managementIp); + std::pair data; bool isL2; if (s.mode == "l2") { isL2 = true; } - else if (s.mode == "l3") { isL2 = false; } + else if (s.mode == "l3") { isL2 = false; data = splitIpAndMask(s.dataIp); } else { throw std::runtime_error("invalid mode"); } std::lock_guard lock(this->cpApiMutex); CP_SetDmaDebug(sid, "begin_save_config", ""); CP_SetNetwork(sid, "mode", isL2 ? "tap" : "tun"); - CP_SetNetwork(sid, "addr", mAddr.c_str()); - CP_SetNetwork(sid, "mask", mMask.c_str()); + CP_SetNetwork(sid, "addr", mang.first.c_str()); + CP_SetNetwork(sid, "mask", mang.second.c_str()); CP_SetNetwork(sid, "gateway", s.managementGateway.c_str()); if (!isL2) { - CP_SetNetwork(sid, "data_addr", dAddr.c_str()); + CP_SetNetwork(sid, "data_addr", data.first.c_str()); // TODO маска не устанавливается, потому что в API этого нет } // TODO MTU не устанавливается, потому что в API этого нет @@ -447,6 +447,7 @@ public: if (readback) { std::string tmp; s.reset(); + s.managementIp.clear(); CP_GetNetwork(sid, "addr", &s.managementIp); CP_GetNetwork(sid, "mask", &tmp); s.managementIp += "/"; diff --git a/static/main.html b/static/main.html index 7a48544..4d139a0 100644 --- a/static/main.html +++ b/static/main.html @@ -185,7 +185,7 @@ @@ -270,7 +270,7 @@

Авто-регулировка мощности

@@ -283,15 +283,15 @@
@@ -349,15 +349,15 @@

Настройки позиционирования

Задержка до спутника

@@ -1173,7 +1173,7 @@ for (const fi in qc.filters) { let filter = {} if (qc['filters'][fi].vlan !== "") { filter['vlan'] = qc['filters'][fi].vlan } - if (qc['filters'][fi].proto !== "") { + if (qc['filters'][fi].proto.length > 0) { let tmp = ""; for (let pid = 0; pid < qc['filters'][fi].proto.length; pid++) { if (pid !== 0) { tmp += ',' } @@ -1192,6 +1192,10 @@ res.filters.push(filter) } + if (res.filters.length === 0) { + // автоматическое выключение класса, если правил нет + res.disabled = true + } return res }