компилируемая версия веб-сервера, находится на стадии отладки
This commit is contained in:
parent
55fc322c13
commit
e5e6878351
@ -201,6 +201,51 @@ void api_driver::TerminalApiDaemon::getDeviceState(obj::TerminalDeviceState &des
|
|||||||
dest = stateDev;
|
dest = stateDev;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
api_driver::obj::TerminalRxTxSettings api_driver::TerminalApiDaemon::getSettingsRxTx() {
|
||||||
|
obj::TerminalRxTxSettings s;
|
||||||
|
{
|
||||||
|
std::shared_lock _olock(this->settingsMutex);
|
||||||
|
s = settingsRxTx;
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
void api_driver::TerminalApiDaemon::setSettingsRxTx(obj::TerminalRxTxSettings &s) {
|
||||||
|
std::lock_guard _olock(settingsMutex);
|
||||||
|
settingsRxTx = s;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef API_OBJECT_NETWORK_SETTINGS_ENABLE
|
||||||
|
api_driver::obj::TerminalNetworkSettings api_driver::TerminalApiDaemon::getNetworkSettings() {
|
||||||
|
obj::TerminalNetworkSettings s;
|
||||||
|
{
|
||||||
|
std::shared_lock _olock(this->settingsMutex);
|
||||||
|
s = settingsNetwork;
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
void api_driver::TerminalApiDaemon::setNetworkSettings(obj::TerminalNetworkSettings &s) {
|
||||||
|
std::lock_guard _olock(settingsMutex);
|
||||||
|
settingsNetwork = s;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef API_OBJECT_QOS_SETTINGS_ENABLE
|
||||||
|
api_driver::obj::TerminalQosSettings api_driver::TerminalApiDaemon::getQosSettings() {
|
||||||
|
obj::TerminalQosSettings s;
|
||||||
|
{
|
||||||
|
std::shared_lock _olock(this->settingsMutex);
|
||||||
|
s = settingsQos;
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
void api_driver::TerminalApiDaemon::setQosSettings(obj::TerminalQosSettings &s) {
|
||||||
|
std::lock_guard _olock(settingsMutex);
|
||||||
|
settingsQos = s;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
api_driver::obj::TerminalFirmwareVersion api_driver::TerminalApiDaemon::getFirmware() {
|
api_driver::obj::TerminalFirmwareVersion api_driver::TerminalApiDaemon::getFirmware() {
|
||||||
obj::TerminalFirmwareVersion res;
|
obj::TerminalFirmwareVersion res;
|
||||||
|
@ -52,17 +52,17 @@ namespace api_driver {
|
|||||||
// * Получение настроек, копирует текущие значения в структуры, переданные по указателю. Если передан пустой указатель, копирования не произойдет.
|
// * Получение настроек, копирует текущие значения в структуры, переданные по указателю. Если передан пустой указатель, копирования не произойдет.
|
||||||
// * Установка настроек просто копирует настройки и устанавливает их текущими
|
// * Установка настроек просто копирует настройки и устанавливает их текущими
|
||||||
// */
|
// */
|
||||||
obj::TerminalRxTxSettings getSettingsRxTx() const;
|
obj::TerminalRxTxSettings getSettingsRxTx();
|
||||||
void setSettingsRxTx(obj::TerminalRxTxSettings &s);
|
void setSettingsRxTx(obj::TerminalRxTxSettings &s);
|
||||||
|
|
||||||
#ifdef API_OBJECT_NETWORK_SETTINGS_ENABLE
|
#ifdef API_OBJECT_NETWORK_SETTINGS_ENABLE
|
||||||
obj::TerminalNetworkSettings getNetworkSettings() const;
|
obj::TerminalNetworkSettings getNetworkSettings();
|
||||||
void setNetworkSettings(obj::TerminalNetworkSettings &s);
|
void setNetworkSettings(obj::TerminalNetworkSettings &s);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef API_OBJECT_QOS_SETTINGS_ENABLE
|
#ifdef API_OBJECT_QOS_SETTINGS_ENABLE
|
||||||
obj::TerminalQosSettings getQosSettings() const;
|
obj::TerminalQosSettings getQosSettings();
|
||||||
void setQosSettings(bool enabled, const std::string &str);
|
void setQosSettings(obj::TerminalQosSettings &s);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
obj::TerminalFirmwareVersion getFirmware();
|
obj::TerminalFirmwareVersion getFirmware();
|
||||||
|
@ -67,6 +67,7 @@ void api_driver::proxy::CpProxy::setDemodSettings(demodulator_settings &dest) {
|
|||||||
CPAPI_PROXY_CALL_HELPER("CpProxy::setDemodSettings", CP_SetDemodulatorSettings, (sid, dest), "struct {...}");
|
CPAPI_PROXY_CALL_HELPER("CpProxy::setDemodSettings", CP_SetDemodulatorSettings, (sid, dest), "struct {...}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef API_STRUCT_ACM_ENABLE
|
||||||
void api_driver::proxy::CpProxy::getAcmSettings(ACM_parameters_serv_ &dest) {
|
void api_driver::proxy::CpProxy::getAcmSettings(ACM_parameters_serv_ &dest) {
|
||||||
CPAPI_PROXY_CALL_HELPER("CpProxy::getAcmSettings", CP_GetAcmParams, (sid, &dest), "");
|
CPAPI_PROXY_CALL_HELPER("CpProxy::getAcmSettings", CP_GetAcmParams, (sid, &dest), "");
|
||||||
}
|
}
|
||||||
@ -74,11 +75,13 @@ void api_driver::proxy::CpProxy::getAcmSettings(ACM_parameters_serv_ &dest) {
|
|||||||
void api_driver::proxy::CpProxy::setAcmSettings(ACM_parameters_serv_ &dest) {
|
void api_driver::proxy::CpProxy::setAcmSettings(ACM_parameters_serv_ &dest) {
|
||||||
CPAPI_PROXY_CALL_HELPER("CpProxy::setAcmSettings", CP_GetAcmParams, (sid, &dest), "struct {...}");
|
CPAPI_PROXY_CALL_HELPER("CpProxy::setAcmSettings", CP_GetAcmParams, (sid, &dest), "struct {...}");
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void api_driver::proxy::CpProxy::getDeviceState(device_state &dest) {
|
void api_driver::proxy::CpProxy::getDeviceState(device_state &dest) {
|
||||||
CPAPI_PROXY_CALL_HELPER("CpProxy::getDeviceState", CP_GetDeviceState, (sid, dest), "");
|
CPAPI_PROXY_CALL_HELPER("CpProxy::getDeviceState", CP_GetDeviceState, (sid, dest), "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef API_OBJECT_QOS_SETTINGS_ENABLE
|
||||||
std::tuple<std::string, bool> api_driver::proxy::CpProxy::getQosSettings() {
|
std::tuple<std::string, bool> api_driver::proxy::CpProxy::getQosSettings() {
|
||||||
std::string rules;
|
std::string rules;
|
||||||
bool en;
|
bool en;
|
||||||
@ -89,7 +92,9 @@ std::tuple<std::string, bool> api_driver::proxy::CpProxy::getQosSettings() {
|
|||||||
void api_driver::proxy::CpProxy::setQosSettings(const std::string &rules, bool enable) {
|
void api_driver::proxy::CpProxy::setQosSettings(const std::string &rules, bool enable) {
|
||||||
CPAPI_PROXY_CALL_HELPER("CpProxy::setQosSettings", CP_SetQoSSettings, (sid, rules, enable), "`" << rules << "`, " << (enable ? "true" : "false"));
|
CPAPI_PROXY_CALL_HELPER("CpProxy::setQosSettings", CP_SetQoSSettings, (sid, rules, enable), "`" << rules << "`, " << (enable ? "true" : "false"));
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef API_OBJECT_DPDI_SETTINGS_ENABLE
|
||||||
void api_driver::proxy::CpProxy::getDpdiSettings(DPDI_parmeters &dest) {
|
void api_driver::proxy::CpProxy::getDpdiSettings(DPDI_parmeters &dest) {
|
||||||
CPAPI_PROXY_CALL_HELPER("CpProxy::getDpdiSettings", CP_GetDpdiParams, (sid, &dest), "");
|
CPAPI_PROXY_CALL_HELPER("CpProxy::getDpdiSettings", CP_GetDpdiParams, (sid, &dest), "");
|
||||||
}
|
}
|
||||||
@ -97,7 +102,9 @@ void api_driver::proxy::CpProxy::getDpdiSettings(DPDI_parmeters &dest) {
|
|||||||
void api_driver::proxy::CpProxy::setDpdiSettings(DPDI_parmeters &dest) {
|
void api_driver::proxy::CpProxy::setDpdiSettings(DPDI_parmeters &dest) {
|
||||||
CPAPI_PROXY_CALL_HELPER("CpProxy::setDpdiSettings", CP_SetDpdiParams, (sid, dest), "struct {...}");
|
CPAPI_PROXY_CALL_HELPER("CpProxy::setDpdiSettings", CP_SetDpdiParams, (sid, dest), "struct {...}");
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef API_OBJECT_BUCLNB_SETTINGS_ENABLE
|
||||||
void api_driver::proxy::CpProxy::getBuclnbSettings(buc_lnb_settings &dest) {
|
void api_driver::proxy::CpProxy::getBuclnbSettings(buc_lnb_settings &dest) {
|
||||||
CPAPI_PROXY_CALL_HELPER("CpProxy::getBuclnbSettings", CP_GetBUC_LNB_settings, (sid, dest), "");
|
CPAPI_PROXY_CALL_HELPER("CpProxy::getBuclnbSettings", CP_GetBUC_LNB_settings, (sid, dest), "");
|
||||||
}
|
}
|
||||||
@ -105,14 +112,25 @@ void api_driver::proxy::CpProxy::getBuclnbSettings(buc_lnb_settings &dest) {
|
|||||||
void api_driver::proxy::CpProxy::setBuclnbSettings(buc_lnb_settings &dest) {
|
void api_driver::proxy::CpProxy::setBuclnbSettings(buc_lnb_settings &dest) {
|
||||||
CPAPI_PROXY_CALL_HELPER("CpProxy::setBuclnbSettings", CP_SetBUC_LNB_settings, (sid, dest), "struct {...}");
|
CPAPI_PROXY_CALL_HELPER("CpProxy::setBuclnbSettings", CP_SetBUC_LNB_settings, (sid, dest), "struct {...}");
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef MODEM_IS_SCPC
|
||||||
void api_driver::proxy::CpProxy::getCincState(CinC_state &dest) {
|
void api_driver::proxy::CpProxy::getCincState(CinC_state &dest) {
|
||||||
CPAPI_PROXY_CALL_HELPER("CpProxy::getCincState", CP_GetCinCState, (sid, dest), "");
|
CPAPI_PROXY_CALL_HELPER("CpProxy::getCincState", CP_GetCinCState, (sid, dest), "");
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef API_OBJECT_DEBUG_METRICS_ENABLE
|
||||||
void api_driver::proxy::CpProxy::getDebugMetrics(debug_metrics &dest) {
|
void api_driver::proxy::CpProxy::getDebugMetrics(debug_metrics &dest) {
|
||||||
CPAPI_PROXY_CALL_HELPER("CpProxy::getDebugMetrics", CP_GetDebugMetrics, (sid, dest), "");
|
CPAPI_PROXY_CALL_HELPER("CpProxy::getDebugMetrics", CP_GetDebugMetrics, (sid, dest), "");
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef MODEM_IS_TDMA
|
||||||
|
void api_driver::proxy::CpProxy::getUpdateStatus(progress_msg &dest) {
|
||||||
|
CPAPI_PROXY_CALL_HELPER("CpProxy::getUpdateStatus", CP_GetUpdateStatus, (sid, dest), "");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
api_driver::proxy::CpProxy::~CpProxy() {
|
api_driver::proxy::CpProxy::~CpProxy() {
|
||||||
disconnect();
|
disconnect();
|
||||||
|
@ -217,7 +217,7 @@ void api_driver::obj::TerminalNetworkSettings::updateCallback(proxy::CpProxy &cp
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void api_driver::obj::TerminalNetworkSettings::updateFromJson(nlohmann::json &data) {
|
void api_driver::obj::TerminalNetworkSettings::updateFromJson(const nlohmann::json &data) {
|
||||||
managementIp = data.value("managementIp", managementIp);
|
managementIp = data.value("managementIp", managementIp);
|
||||||
isL2 = data.value("isL2", isL2);
|
isL2 = data.value("isL2", isL2);
|
||||||
dataIp = data.value("dataIp", dataIp);
|
dataIp = data.value("dataIp", dataIp);
|
||||||
@ -279,7 +279,7 @@ void api_driver::obj::TerminalQosSettings::updateCallback(proxy::CpProxy &cp) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void api_driver::obj::TerminalQosSettings::updateFromJson(nlohmann::json &data) {
|
void api_driver::obj::TerminalQosSettings::updateFromJson(const nlohmann::json &data) {
|
||||||
qosEnabled = data.value("en", qosEnabled);
|
qosEnabled = data.value("en", qosEnabled);
|
||||||
qosSettingsJson = data.value("profile", qosSettingsJson);
|
qosSettingsJson = data.value("profile", qosSettingsJson);
|
||||||
}
|
}
|
||||||
@ -402,7 +402,6 @@ nlohmann::json api_driver::obj::TerminalState::asJson() {
|
|||||||
|
|
||||||
res["initState"] = fInitState;
|
res["initState"] = fInitState;
|
||||||
res["testState"] = fIsTest;
|
res["testState"] = fIsTest;
|
||||||
res["fTxState"] = fIsTest;
|
|
||||||
#ifdef MODEM_IS_SCPC
|
#ifdef MODEM_IS_SCPC
|
||||||
res["isCinC"] = fIsCinC;
|
res["isCinC"] = fIsCinC;
|
||||||
#endif
|
#endif
|
||||||
@ -431,6 +430,7 @@ nlohmann::json api_driver::obj::TerminalState::asJson() {
|
|||||||
res["rx"]["packetsDummy"] = fRxPacketsDummy;
|
res["rx"]["packetsDummy"] = fRxPacketsDummy;
|
||||||
|
|
||||||
res["tx"]["modcod"] = fTxModcod;
|
res["tx"]["modcod"] = fTxModcod;
|
||||||
|
res["tx"]["state"] = fTxState;
|
||||||
res["tx"]["speedOnTxKbit"] = fTxSpeedOnTxKbit;
|
res["tx"]["speedOnTxKbit"] = fTxSpeedOnTxKbit;
|
||||||
res["tx"]["speedOnIifKbit"] = fTxSpeedOnIifKbit;
|
res["tx"]["speedOnIifKbit"] = fTxSpeedOnIifKbit;
|
||||||
#ifdef MODEM_IS_SCPC
|
#ifdef MODEM_IS_SCPC
|
||||||
@ -703,38 +703,38 @@ static std::tuple<uint8_t, uint8_t> translateCoordinates(double abs) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void api_driver::obj::TerminalRxTxSettings::updateDpdiSettings(const nlohmann::json &data) {
|
void api_driver::obj::TerminalRxTxSettings::updateDpdiSettings(const nlohmann::json &data) {
|
||||||
dpdi.is_delay_window = !data.value("dpdiIsPositional", !dpdi.is_delay_window);
|
dpdi.is_delay_window = !data.value("isPositional", !dpdi.is_delay_window);
|
||||||
#ifdef MODEM_IS_SCPC
|
#ifdef MODEM_IS_SCPC
|
||||||
dpdi.freq_offset = data.value("dpdiSearchBandwidth", dpdi.freq_offset);
|
dpdi.freq_offset = data.value("searchBandwidth", dpdi.freq_offset);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (data["dpdiPositionStationLatitude"]) {
|
if (data["positionStationLatitude"]) {
|
||||||
const double pos = data["dpdiPositionStationLatitude"];
|
const double pos = data["positionStationLatitude"];
|
||||||
const auto [g, m] = translateCoordinates(pos);
|
const auto [g, m] = translateCoordinates(pos);
|
||||||
dpdi.latitude_station_grad = g;
|
dpdi.latitude_station_grad = g;
|
||||||
dpdi.latitude_station_minute = m;
|
dpdi.latitude_station_minute = m;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data["dpdiPositionStationLongitude"]) {
|
if (data["positionStationLongitude"]) {
|
||||||
const double pos = data["dpdiPositionStationLongitude"];
|
const double pos = data["positionStationLongitude"];
|
||||||
const auto [g, m] = translateCoordinates(pos);
|
const auto [g, m] = translateCoordinates(pos);
|
||||||
dpdi.longitude_station_grad = g;
|
dpdi.longitude_station_grad = g;
|
||||||
dpdi.longitude_station_minute = m;
|
dpdi.longitude_station_minute = m;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data["dpdiPositionSatelliteLongitude"]) {
|
if (data["positionSatelliteLongitude"]) {
|
||||||
const double pos = data["dpdiPositionSatelliteLongitude"];
|
const double pos = data["positionSatelliteLongitude"];
|
||||||
const auto [g, m] = translateCoordinates(pos);
|
const auto [g, m] = translateCoordinates(pos);
|
||||||
dpdi.longitude_sattelite_grad = g;
|
dpdi.longitude_sattelite_grad = g;
|
||||||
dpdi.longitude_sattelite_minute = m;
|
dpdi.longitude_sattelite_minute = m;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MODEM_IS_SCPC
|
#ifdef MODEM_IS_SCPC
|
||||||
dpdi.min_delay = data.value("dpdiDelayMin", dpdi.min_delay);
|
dpdi.min_delay = data.value("delayMin", dpdi.min_delay);
|
||||||
dpdi.max_delay = data.value("dpdiDelayMax", dpdi.max_delay);
|
dpdi.max_delay = data.value("delayMax", dpdi.max_delay);
|
||||||
#else
|
#else
|
||||||
s.min_delay = 0;
|
dpdi.min_delay = 0;
|
||||||
s.max_delay = data.value("dpdiDelay", dpdi.max_delay);
|
dpdi.max_delay = data.value("dpdiDelay", dpdi.max_delay);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
void api_driver::obj::TerminalRxTxSettings::storeDpdiSettings(proxy::CpProxy &cp) {
|
void api_driver::obj::TerminalRxTxSettings::storeDpdiSettings(proxy::CpProxy &cp) {
|
||||||
|
@ -79,7 +79,7 @@ namespace api_driver::obj {
|
|||||||
void loadDefaults();
|
void loadDefaults();
|
||||||
|
|
||||||
void updateCallback(proxy::CpProxy& cp);
|
void updateCallback(proxy::CpProxy& cp);
|
||||||
void updateFromJson(nlohmann::json& data);
|
void updateFromJson(const nlohmann::json& data);
|
||||||
void store(proxy::CpProxy& cp);
|
void store(proxy::CpProxy& cp);
|
||||||
nlohmann::json asJson();
|
nlohmann::json asJson();
|
||||||
|
|
||||||
@ -101,7 +101,7 @@ namespace api_driver::obj {
|
|||||||
void loadDefaults();
|
void loadDefaults();
|
||||||
|
|
||||||
void updateCallback(proxy::CpProxy& cp);
|
void updateCallback(proxy::CpProxy& cp);
|
||||||
void updateFromJson(nlohmann::json& data);
|
void updateFromJson(const nlohmann::json& data);
|
||||||
void store(proxy::CpProxy& cp);
|
void store(proxy::CpProxy& cp);
|
||||||
nlohmann::json asJson();
|
nlohmann::json asJson();
|
||||||
|
|
||||||
|
138
src/main.cpp
138
src/main.cpp
@ -104,6 +104,8 @@ public:
|
|||||||
static constexpr const char* INDEX_HTML = "/main-tdma.html";
|
static constexpr const char* INDEX_HTML = "/main-tdma.html";
|
||||||
#elif defined(MODEM_IS_SCPC)
|
#elif defined(MODEM_IS_SCPC)
|
||||||
static constexpr const char* INDEX_HTML = "/main-scpc.html";
|
static constexpr const char* INDEX_HTML = "/main-scpc.html";
|
||||||
|
#elif defined(MODEM_IS_SHPS)
|
||||||
|
static constexpr const char* INDEX_HTML = "/main-shps.html";
|
||||||
#else
|
#else
|
||||||
#error "Modem type not defined!"
|
#error "Modem type not defined!"
|
||||||
#endif
|
#endif
|
||||||
@ -179,7 +181,7 @@ public:
|
|||||||
try {
|
try {
|
||||||
auto reqJson = nlohmann::json::parse(std::string(req.payload.begin(), req.payload.end()));
|
auto reqJson = nlohmann::json::parse(std::string(req.payload.begin(), req.payload.end()));
|
||||||
|
|
||||||
auto u = auth.doAuth(reqJson["username"], reqJson["username"], req, rep);
|
auto u = auth.doAuth(reqJson["username"], reqJson["password"], req, rep);
|
||||||
if (u == nullptr) {
|
if (u == nullptr) {
|
||||||
throw std::runtime_error("invalid session");
|
throw std::runtime_error("invalid session");
|
||||||
}
|
}
|
||||||
@ -217,10 +219,21 @@ public:
|
|||||||
http::server::stockReply(http::server::bad_request, rep);
|
http::server::stockReply(http::server::bad_request, rep);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
rep.status = http::server::ok;
|
rep.status = http::server::ok;
|
||||||
rep.headers.push_back({.name = "Content-Type", .value = toString(mime_types::json)});
|
rep.headers.push_back({.name = "Content-Type", .value = toString(mime_types::json)});
|
||||||
const auto result = api->loadTerminalState();
|
nlohmann::json resultJson;
|
||||||
|
|
||||||
|
try {
|
||||||
|
resultJson["status"] = "ok";
|
||||||
|
resultJson["state"] = api->loadTerminalState();
|
||||||
|
} catch (std::exception& e) {
|
||||||
|
BOOST_LOG_TRIVIAL(error) << "WebHandle(/api/set/qos): Can't set QoS settings: " << e.what();
|
||||||
|
resultJson.clear();
|
||||||
|
resultJson["status"] = "error";
|
||||||
|
resultJson["error"] = e.what();
|
||||||
|
}
|
||||||
|
|
||||||
|
auto result = resultJson.dump();
|
||||||
rep.content.insert(rep.content.end(), result.c_str(), result.c_str() + result.size());
|
rep.content.insert(rep.content.end(), result.c_str(), result.c_str() + result.size());
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@ -229,12 +242,22 @@ public:
|
|||||||
http::server::stockReply(http::server::bad_request, rep);
|
http::server::stockReply(http::server::bad_request, rep);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
rep.status = http::server::ok;
|
rep.status = http::server::ok;
|
||||||
rep.headers.push_back({.name = "Content-Type", .value = toString(mime_types::json)});
|
rep.headers.push_back({.name = "Content-Type", .value = toString(mime_types::json)});
|
||||||
std::string result = R"({"settings":)";
|
nlohmann::json resultJson;
|
||||||
result += api->loadSettings();
|
|
||||||
result += "}";
|
try {
|
||||||
|
resultJson["status"] = "ok";
|
||||||
|
resultJson["settings"] = api->loadSettings();
|
||||||
|
} catch (std::exception& e) {
|
||||||
|
BOOST_LOG_TRIVIAL(error) << "WebHandle(/api/get/settings): Can't get object: " << e.what();
|
||||||
|
resultJson.clear();
|
||||||
|
rep.status = http::server::internal_server_error;
|
||||||
|
resultJson["status"] = "error";
|
||||||
|
resultJson["error"] = e.what();
|
||||||
|
}
|
||||||
|
|
||||||
|
auto result = resultJson.dump();
|
||||||
rep.content.insert(rep.content.end(), result.c_str(), result.c_str() + result.size());
|
rep.content.insert(rep.content.end(), result.c_str(), result.c_str() + result.size());
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@ -246,7 +269,20 @@ public:
|
|||||||
|
|
||||||
rep.status = http::server::ok;
|
rep.status = http::server::ok;
|
||||||
rep.headers.push_back({.name = "Content-Type", .value = toString(mime_types::json)});
|
rep.headers.push_back({.name = "Content-Type", .value = toString(mime_types::json)});
|
||||||
const auto result = api->loadFirmwareVersion();
|
nlohmann::json resultJson;
|
||||||
|
|
||||||
|
try {
|
||||||
|
resultJson["status"] = "ok";
|
||||||
|
resultJson["firmware"] = api->loadFirmwareVersion();
|
||||||
|
} catch (std::exception& e) {
|
||||||
|
BOOST_LOG_TRIVIAL(error) << "WebHandle(/api/get/aboutFirmware): Can't get object: " << e.what();
|
||||||
|
resultJson.clear();
|
||||||
|
rep.status = http::server::internal_server_error;
|
||||||
|
resultJson["status"] = "error";
|
||||||
|
resultJson["error"] = e.what();
|
||||||
|
}
|
||||||
|
|
||||||
|
auto result = resultJson.dump();
|
||||||
rep.content.insert(rep.content.end(), result.c_str(), result.c_str() + result.size());
|
rep.content.insert(rep.content.end(), result.c_str(), result.c_str() + result.size());
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@ -451,6 +487,12 @@ public:
|
|||||||
http::server::stockReply(http::server::bad_request, rep);
|
http::server::stockReply(http::server::bad_request, rep);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rep.status = http::server::ok;
|
||||||
|
rep.headers.push_back({.name = "Content-Type", .value = toString(mime_types::json)});
|
||||||
|
nlohmann::json resultJson;
|
||||||
|
|
||||||
|
try {
|
||||||
this->upgradeOrRebootRunning = true;
|
this->upgradeOrRebootRunning = true;
|
||||||
#ifdef MODEM_IS_TDMA
|
#ifdef MODEM_IS_TDMA
|
||||||
if (req.url->params.find("ota") != req.url->params.end()) {
|
if (req.url->params.find("ota") != req.url->params.end()) {
|
||||||
@ -461,10 +503,15 @@ public:
|
|||||||
#else
|
#else
|
||||||
doTerminalUpgrade();
|
doTerminalUpgrade();
|
||||||
#endif
|
#endif
|
||||||
rep.status = http::server::ok;
|
resultJson["status"] = "ok";
|
||||||
rep.headers.clear();
|
} catch (std::exception& e) {
|
||||||
rep.headers.push_back({.name = "Content-Type", .value = toString(mime_types::json)});
|
BOOST_LOG_TRIVIAL(error) << "WebHandle(/api/doFirmwareUpgrade): Error: " << e.what();
|
||||||
const auto result = api->loadFirmwareVersion();
|
resultJson.clear();
|
||||||
|
resultJson["status"] = "error";
|
||||||
|
resultJson["error"] = e.what();
|
||||||
|
}
|
||||||
|
|
||||||
|
auto result = resultJson.dump();
|
||||||
rep.content.insert(rep.content.end(), result.c_str(), result.c_str() + result.size());
|
rep.content.insert(rep.content.end(), result.c_str(), result.c_str() + result.size());
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@ -483,28 +530,67 @@ public:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const auto func = req.url->params["f"];
|
const auto func = req.url->params["f"];
|
||||||
std::string result = R"({"status":"ok"})";
|
rep.status = http::server::ok;
|
||||||
|
rep.headers.push_back({.name = "Content-Type", .value = toString(mime_types::json)});
|
||||||
|
nlohmann::json resultJson;
|
||||||
|
|
||||||
|
try {
|
||||||
|
resultJson["status"] = "error";
|
||||||
if (func == "SetDmaDebug") {
|
if (func == "SetDmaDebug") {
|
||||||
if (req.url->params.find("param") == req.url->params.end()) { http::server::stockReply(http::server::bad_request, rep); return; }
|
if (req.url->params.find("param") == req.url->params.end()) {
|
||||||
if (req.url->params.find("value") == req.url->params.end()) { http::server::stockReply(http::server::bad_request, rep); return; }
|
rep.status = http::server::bad_request;
|
||||||
|
resultJson["error"] = "missing required adgument: `param`";
|
||||||
|
} else if (req.url->params.find("value") == req.url->params.end()) {
|
||||||
|
rep.status = http::server::bad_request;
|
||||||
|
resultJson["error"] = "missing required adgument: `value`";
|
||||||
|
} else {
|
||||||
this->api->executeInApi([&](auto& cp) {
|
this->api->executeInApi([&](auto& cp) {
|
||||||
cp.setDmaDebug(req.url->params["param"], req.url->params["value"]);
|
cp.setDmaDebug(req.url->params["param"], req.url->params["value"]);
|
||||||
});
|
});
|
||||||
|
}
|
||||||
} else if (func == "GetDmaDebug") {
|
} else if (func == "GetDmaDebug") {
|
||||||
if (req.url->params.find("param") == req.url->params.end()) { http::server::stockReply(http::server::bad_request, rep); return; }
|
if (req.url->params.find("param") == req.url->params.end()) {
|
||||||
this->api->executeInApi([&](auto& cp) {
|
rep.status = http::server::bad_request;
|
||||||
nlohmann::json tmp;
|
resultJson["error"] = "missing required adgument: `param`";
|
||||||
tmp["status"] = "ok";
|
|
||||||
tmp["result"] = cp.getDmaDebug(req.url->params["param"]);
|
|
||||||
result = tmp.dump();
|
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
http::server::stockReply(http::server::not_implemented, rep);
|
this->api->executeInApi([&](auto& cp) {
|
||||||
return;
|
resultJson["status"] = "ok";
|
||||||
|
resultJson["result"] = cp.getDmaDebug(req.url->params["param"]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else if (func == "SetNetwork") {
|
||||||
|
if (req.url->params.find("param") == req.url->params.end()) {
|
||||||
|
rep.status = http::server::bad_request;
|
||||||
|
resultJson["error"] = "missing required adgument: `param`";
|
||||||
|
} else if (req.url->params.find("value") == req.url->params.end()) {
|
||||||
|
rep.status = http::server::bad_request;
|
||||||
|
resultJson["error"] = "missing required adgument: `value`";
|
||||||
|
} else {
|
||||||
|
this->api->executeInApi([&](auto& cp) {
|
||||||
|
cp.setNetwork(req.url->params["param"], req.url->params["value"]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else if (func == "GetNetwork") {
|
||||||
|
if (req.url->params.find("param") == req.url->params.end()) {
|
||||||
|
rep.status = http::server::bad_request;
|
||||||
|
resultJson["error"] = "missing required adgument: `param`";
|
||||||
|
} else {
|
||||||
|
this->api->executeInApi([&](auto& cp) {
|
||||||
|
resultJson["status"] = "ok";
|
||||||
|
resultJson["result"] = cp.getNetwork(req.url->params["param"]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
resultJson["error"] = "function not supported";
|
||||||
|
}
|
||||||
|
} catch (std::exception& e) {
|
||||||
|
BOOST_LOG_TRIVIAL(error) << "WebHandle(/api/set/qos): Can't set QoS settings: " << e.what();
|
||||||
|
resultJson.clear();
|
||||||
|
resultJson["status"] = "error";
|
||||||
|
resultJson["error"] = e.what();
|
||||||
}
|
}
|
||||||
|
|
||||||
rep.status = http::server::ok;
|
auto result = resultJson.dump();
|
||||||
rep.headers.push_back({.name = "Content-Type", .value = toString(mime_types::json)});
|
|
||||||
rep.content.insert(rep.content.end(), result.c_str(), result.c_str() + result.size());
|
rep.content.insert(rep.content.end(), result.c_str(), result.c_str() + result.size());
|
||||||
}));
|
}));
|
||||||
#ifdef API_OBJECT_DEBUG_METRICS_ENABLE
|
#ifdef API_OBJECT_DEBUG_METRICS_ENABLE
|
||||||
|
@ -71,10 +71,10 @@ nlohmann::json api_driver::ApiDriver::loadSettings() const {
|
|||||||
|
|
||||||
nlohmann::json res = daemon->getSettingsRxTx().asJson();
|
nlohmann::json res = daemon->getSettingsRxTx().asJson();
|
||||||
#ifdef API_OBJECT_QOS_SETTINGS_ENABLE
|
#ifdef API_OBJECT_QOS_SETTINGS_ENABLE
|
||||||
res.update(daemon->getQosSettings().asJson());
|
res["qos"] = (daemon->getQosSettings().asJson());
|
||||||
#endif
|
#endif
|
||||||
#ifdef API_OBJECT_NETWORK_SETTINGS_ENABLE
|
#ifdef API_OBJECT_NETWORK_SETTINGS_ENABLE
|
||||||
res.update(daemon->getNetworkSettings().asJson());
|
res["network"] = (daemon->getNetworkSettings().asJson());
|
||||||
#endif
|
#endif
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
@ -116,17 +116,53 @@ void api_driver::ApiDriver::setDpdiSettings(const nlohmann::json& data) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef API_OBJECT_BUCLNB_SETTINGS_ENABLE
|
||||||
void api_driver::ApiDriver::setBucLnbSettings(const nlohmann::json& data) {
|
void api_driver::ApiDriver::setBucLnbSettings(const nlohmann::json& data) {
|
||||||
// TODO
|
auto rxtx = daemon->getSettingsRxTx();
|
||||||
}
|
rxtx.updateBuclnbSettings(data);
|
||||||
|
|
||||||
|
std::lock_guard _lapi(this->daemon->cpApiMutex);
|
||||||
|
this->daemon->cp.setDmaDebug("begin_save_config", "");
|
||||||
|
rxtx.storeBuclnbSettings(this->daemon->cp);
|
||||||
|
this->daemon->cp.setDmaDebug("save_config", "");
|
||||||
|
rxtx.updateCallback(this->daemon->cp);
|
||||||
|
{
|
||||||
|
daemon->setSettingsRxTx(rxtx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef API_OBJECT_QOS_SETTINGS_ENABLE
|
||||||
void api_driver::ApiDriver::setQosSettings(const nlohmann::json& data) {
|
void api_driver::ApiDriver::setQosSettings(const nlohmann::json& data) {
|
||||||
// TODO
|
auto qos = daemon->getQosSettings();
|
||||||
}
|
qos.updateFromJson(data);
|
||||||
|
|
||||||
void api_driver::ApiDriver::setNetworkSettings(const nlohmann::json& data) {
|
std::lock_guard _lapi(this->daemon->cpApiMutex);
|
||||||
// TODO
|
this->daemon->cp.setDmaDebug("begin_save_config", "");
|
||||||
|
qos.store(this->daemon->cp);
|
||||||
|
this->daemon->cp.setDmaDebug("save_config", "");
|
||||||
|
qos.updateCallback(this->daemon->cp);
|
||||||
|
{
|
||||||
|
daemon->setQosSettings(qos);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef API_OBJECT_NETWORK_SETTINGS_ENABLE
|
||||||
|
void api_driver::ApiDriver::setNetworkSettings(const nlohmann::json& data) {
|
||||||
|
auto net = daemon->getNetworkSettings();
|
||||||
|
net.updateFromJson(data);
|
||||||
|
|
||||||
|
std::lock_guard _lapi(this->daemon->cpApiMutex);
|
||||||
|
this->daemon->cp.setDmaDebug("begin_save_config", "");
|
||||||
|
net.store(this->daemon->cp);
|
||||||
|
this->daemon->cp.setDmaDebug("save_config", "");
|
||||||
|
net.updateCallback(this->daemon->cp);
|
||||||
|
{
|
||||||
|
daemon->setNetworkSettings(net);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void api_driver::ApiDriver::resetDefaultSettings() {
|
void api_driver::ApiDriver::resetDefaultSettings() {
|
||||||
daemon->resetDefaultSettings();
|
daemon->resetDefaultSettings();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user