фикс ошибок: пустая строка qos.class.filters.proto в запросе, не применяющиеся настройки сети, нет шага у "ACM*" и "*ослабление"
This commit is contained in:
parent
200dfef698
commit
cc354b73e3
@ -425,21 +425,21 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void setNetworkSettings(TerminalNetworkSettings& s, bool readback = true) {
|
void setNetworkSettings(TerminalNetworkSettings& s, bool readback = true) {
|
||||||
const auto [mAddr, mMask] = splitIpAndMask(s.managementIp);
|
const auto mang = splitIpAndMask(s.managementIp);
|
||||||
const auto [dAddr, dMask] = splitIpAndMask(s.dataIp);
|
std::pair<std::string, std::string> data;
|
||||||
bool isL2;
|
bool isL2;
|
||||||
if (s.mode == "l2") { isL2 = true; }
|
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"); }
|
else { throw std::runtime_error("invalid mode"); }
|
||||||
|
|
||||||
std::lock_guard lock(this->cpApiMutex);
|
std::lock_guard lock(this->cpApiMutex);
|
||||||
CP_SetDmaDebug(sid, "begin_save_config", "");
|
CP_SetDmaDebug(sid, "begin_save_config", "");
|
||||||
CP_SetNetwork(sid, "mode", isL2 ? "tap" : "tun");
|
CP_SetNetwork(sid, "mode", isL2 ? "tap" : "tun");
|
||||||
CP_SetNetwork(sid, "addr", mAddr.c_str());
|
CP_SetNetwork(sid, "addr", mang.first.c_str());
|
||||||
CP_SetNetwork(sid, "mask", mMask.c_str());
|
CP_SetNetwork(sid, "mask", mang.second.c_str());
|
||||||
CP_SetNetwork(sid, "gateway", s.managementGateway.c_str());
|
CP_SetNetwork(sid, "gateway", s.managementGateway.c_str());
|
||||||
if (!isL2) {
|
if (!isL2) {
|
||||||
CP_SetNetwork(sid, "data_addr", dAddr.c_str());
|
CP_SetNetwork(sid, "data_addr", data.first.c_str());
|
||||||
// TODO маска не устанавливается, потому что в API этого нет
|
// TODO маска не устанавливается, потому что в API этого нет
|
||||||
}
|
}
|
||||||
// TODO MTU не устанавливается, потому что в API этого нет
|
// TODO MTU не устанавливается, потому что в API этого нет
|
||||||
@ -447,6 +447,7 @@ public:
|
|||||||
if (readback) {
|
if (readback) {
|
||||||
std::string tmp;
|
std::string tmp;
|
||||||
s.reset();
|
s.reset();
|
||||||
|
s.managementIp.clear();
|
||||||
CP_GetNetwork(sid, "addr", &s.managementIp);
|
CP_GetNetwork(sid, "addr", &s.managementIp);
|
||||||
CP_GetNetwork(sid, "mask", &tmp);
|
CP_GetNetwork(sid, "mask", &tmp);
|
||||||
s.managementIp += "/";
|
s.managementIp += "/";
|
||||||
|
@ -185,7 +185,7 @@
|
|||||||
</label>
|
</label>
|
||||||
<label>
|
<label>
|
||||||
<span>Ослабление, дБ</span>
|
<span>Ослабление, дБ</span>
|
||||||
<input v-model="param.tx.attenuation" type="number"/>
|
<input v-model="param.tx.attenuation" type="number" step="0.01"/>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -270,7 +270,7 @@
|
|||||||
</label>
|
</label>
|
||||||
<label v-show="param.dvbs2.mode === 'acm'">
|
<label v-show="param.dvbs2.mode === 'acm'">
|
||||||
<span>Запас ОСШ</span>
|
<span>Запас ОСШ</span>
|
||||||
<input v-model="param.dvbs2.snrReserve" type="number">
|
<input v-model="param.dvbs2.snrReserve" type="number" step="0.01">
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<h3>Авто-регулировка мощности</h3>
|
<h3>Авто-регулировка мощности</h3>
|
||||||
@ -283,15 +283,15 @@
|
|||||||
</label>
|
</label>
|
||||||
<label>
|
<label>
|
||||||
<span>Максимальное ослабление</span>
|
<span>Максимальное ослабление</span>
|
||||||
<input v-model="param.acm.maxAttenuation" type="number"/>
|
<input v-model="param.acm.maxAttenuation" type="number" step="0.01"/>
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label>
|
||||||
<span>Минимальное ослабление</span>
|
<span>Минимальное ослабление</span>
|
||||||
<input v-model="param.acm.minAttenuation" type="number"/>
|
<input v-model="param.acm.minAttenuation" type="number" step="0.01"/>
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label>
|
||||||
<span>Требуемое ОСШ</span>
|
<span>Требуемое ОСШ</span>
|
||||||
<input v-model="param.acm.requiredSnr" type="number"/>
|
<input v-model="param.acm.requiredSnr" type="number" step="0.01"/>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="settings-set-container">
|
<div class="settings-set-container">
|
||||||
@ -349,15 +349,15 @@
|
|||||||
<h3 v-show="param.cinc.mode === 'positional'">Настройки позиционирования</h3>
|
<h3 v-show="param.cinc.mode === 'positional'">Настройки позиционирования</h3>
|
||||||
<label v-show="param.cinc.mode === 'positional'">
|
<label v-show="param.cinc.mode === 'positional'">
|
||||||
<span>Широта станции</span>
|
<span>Широта станции</span>
|
||||||
<input v-model="param.cinc.position.station.latitude" type="number" step="0.0001"/>
|
<input v-model="param.cinc.position.station.latitude" type="number" step="0.000001"/>
|
||||||
</label>
|
</label>
|
||||||
<label v-show="param.cinc.mode === 'positional'">
|
<label v-show="param.cinc.mode === 'positional'">
|
||||||
<span>Долгота станции</span>
|
<span>Долгота станции</span>
|
||||||
<input v-model="param.cinc.position.station.longitude" type="number" step="0.0001"/>
|
<input v-model="param.cinc.position.station.longitude" type="number" step="0.000001"/>
|
||||||
</label>
|
</label>
|
||||||
<label v-show="param.cinc.mode === 'positional'">
|
<label v-show="param.cinc.mode === 'positional'">
|
||||||
<span>Подспутниковая точка</span>
|
<span>Подспутниковая точка</span>
|
||||||
<input v-model="param.cinc.position.satelliteLongitude" type="number" step="0.0001"/>
|
<input v-model="param.cinc.position.satelliteLongitude" type="number" step="0.000001"/>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<h3 v-show="param.cinc.mode === 'delay'">Задержка до спутника</h3>
|
<h3 v-show="param.cinc.mode === 'delay'">Задержка до спутника</h3>
|
||||||
@ -1173,7 +1173,7 @@
|
|||||||
for (const fi in qc.filters) {
|
for (const fi in qc.filters) {
|
||||||
let filter = {}
|
let filter = {}
|
||||||
if (qc['filters'][fi].vlan !== "") { filter['vlan'] = qc['filters'][fi].vlan }
|
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 = "";
|
let tmp = "";
|
||||||
for (let pid = 0; pid < qc['filters'][fi].proto.length; pid++) {
|
for (let pid = 0; pid < qc['filters'][fi].proto.length; pid++) {
|
||||||
if (pid !== 0) { tmp += ',' }
|
if (pid !== 0) { tmp += ',' }
|
||||||
@ -1192,6 +1192,10 @@
|
|||||||
|
|
||||||
res.filters.push(filter)
|
res.filters.push(filter)
|
||||||
}
|
}
|
||||||
|
if (res.filters.length === 0) {
|
||||||
|
// автоматическое выключение класса, если правил нет
|
||||||
|
res.disabled = true
|
||||||
|
}
|
||||||
|
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user