diff --git a/.vscode/tasks.json b/.vscode/tasks.json index ac3f100..168ca95 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -12,7 +12,10 @@ "ENABLE_DEBUG=1", "USE_GPSD=1" ], - "group": "build", + "group": { + "kind": "build", + "isDefault": true + }, "problemMatcher": [] }, { @@ -25,10 +28,7 @@ "ENABLE_DEBUG=1", "USE_GPSD=1" ], - "group": { - "kind": "build", - "isDefault": true - }, + "group": "build", "problemMatcher": [] } ] diff --git a/IRCDDBApp.cpp b/IRCDDBApp.cpp index 7599bd8..9615cb6 100644 --- a/IRCDDBApp.cpp +++ b/IRCDDBApp.cpp @@ -87,6 +87,7 @@ public: , m_datePattern("^20[0-9][0-9]-((1[0-2])|(0[1-9]))-((3[01])|([12][0-9])|(0[1-9]))$") , m_timePattern("^((2[0-3])|([01][0-9])):[0-5][0-9]:[0-5][0-9]$") , m_dbPattern("^[0-9A-Z_]{8}$") + , m_fromPattern("\\(from: (.*)\\)") { } @@ -108,6 +109,7 @@ public: std::regex m_datePattern; std::regex m_timePattern; std::regex m_dbPattern; + std::regex m_fromPattern; bool m_initReady; bool m_terminateThread; @@ -830,12 +832,25 @@ void IRCDDBApp::doUpdate(std::string& msg) CUtils::ReplaceChar(arearp_cs, '_', ' '); if (1 == m_d->m_rptrMap.count(value)) { + CLog::logTrace("doUptate RPTR already prsent"); IRCDDBAppRptrObject o = m_d->m_rptrMap[value]; zonerp_cs = o.m_zonerp_cs; CUtils::ReplaceChar(zonerp_cs, '_', ' '); zonerp_cs.resize(7, ' '); + ip_addr = getIPAddress(zonerp_cs); zonerp_cs.push_back('G'); - ip_addr = getIPAddress(o.m_zonerp_cs); + } + else { + CLog::logTrace("doUptate RPTR not present"); + zonerp_cs = arearp_cs.substr(0, arearp_cs.length() - 1U); + ip_addr = getIPAddress(zonerp_cs); + zonerp_cs.push_back('G'); + + if(!ip_addr.empty()) { + auto tmp = boost::replace_all_copy(zonerp_cs, " ", "_"); + IRCDDBAppRptrObject newRptr(dt, value, tmp, m_maxTime); + m_d->m_rptrMap[value] = newRptr; + } } IRCMessage *m2 = new IRCMessage("IDRT_USER");