From 2e303e55e6442b3f9a2fd25e15934e7c9c84d5ad Mon Sep 17 00:00:00 2001 From: Antonio Matraia <63372602+iu5jae@users.noreply.github.com> Date: Sat, 8 Jul 2023 20:57:03 +0200 Subject: [PATCH] updated YSFGateway Remote control management compatible with pistar uk. If the requested room does not exist, the gw remains on the previously set one --- YSFGateway/WiresX.cpp | 6 +++++- YSFGateway/YSFGateway.cpp | 14 ++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/YSFGateway/WiresX.cpp b/YSFGateway/WiresX.cpp index 179f0aa..909d584 100644 --- a/YSFGateway/WiresX.cpp +++ b/YSFGateway/WiresX.cpp @@ -373,7 +373,11 @@ WX_STATUS CWiresX::processConnect(const unsigned char* source, const unsigned ch std::string id = std::string((char*)data, 5U); - m_reflector = m_reflectors.findById(id); + CYSFReflector* reflector_tmp; + reflector_tmp = m_reflectors.findById(id); + if (reflector_tmp != NULL) + m_reflector = reflector_tmp; + if (m_reflector == NULL) return WXS_NONE; diff --git a/YSFGateway/YSFGateway.cpp b/YSFGateway/YSFGateway.cpp index 2c8cffe..638d3f1 100644 --- a/YSFGateway/YSFGateway.cpp +++ b/YSFGateway/YSFGateway.cpp @@ -892,10 +892,11 @@ void CYSFGateway::processRemoteCommands() int res = m_remoteSocket->read(buffer, 200U, addr, addrLen); if (res > 0) { buffer[res] = '\0'; - if ((::memcmp(buffer + 0U, "LinkYSF", 7U) == 0) && (strlen((char*)buffer + 0U) > 8)) { - std::string id = std::string((char*)(buffer + 8U)); + if ((::memcmp(buffer + 0U, "LinkYSF", 7U) == 0) && (strlen((char*)buffer + 0U) > 8) && (m_ysfNetwork != NULL)) { + std::string id = std::string((char*)(buffer + 7U)); // Left trim - id.erase(id.begin(), std::find_if(id.begin(), id.end(), std::not1(std::ptr_fun(std::isspace)))); + // id.erase(id.begin(), std::find_if(id.begin(), id.end(), std::not1(std::ptr_fun(std::isspace)))); + id.erase(std::remove_if(id.begin(), id.end(), [](char c) { return !std::isalnum(c); }), id.end()); CYSFReflector* reflector = m_reflectors->findById(id); if (reflector == NULL) reflector = m_reflectors->findByName(id); @@ -923,10 +924,11 @@ void CYSFGateway::processRemoteCommands() LogWarning("Invalid YSF reflector id/name - \"%s\"", id.c_str()); return; } - } else if ((::memcmp(buffer + 0U, "LinkFCS", 7U) == 0) && (strlen((char*)buffer + 0U) > 8)) { - std::string raw = std::string((char*)(buffer + 8U)); + } else if ((::memcmp(buffer + 0U, "LinkFCS", 7U) == 0) && (strlen((char*)buffer + 0U) > 8) && (m_fcsNetwork != NULL)) { + std::string raw = std::string((char*)(buffer + 7U)); // Left trim - raw.erase(raw.begin(), std::find_if(raw.begin(), raw.end(), std::not1(std::ptr_fun(std::isspace)))); + // raw.erase(raw.begin(), std::find_if(raw.begin(), raw.end(), std::not1(std::ptr_fun(std::isspace)))); + raw.erase(std::remove_if(raw.begin(), raw.end(), [](char c) { return !std::isalnum(c); }), raw.end()); std::string id = "FCS00"; std::string idShort = "FCS"; if (raw.length() == 3U) {