#5 always get ip from nick

pull/32/head
Geoffrey Merck 4 years ago
parent 88cdfd4a15
commit 0afad78fbc

@ -449,7 +449,7 @@ void IRCDDBApp::userChanOp(const std::string& nick, bool op)
static const int numberOfTables = 2;
std::string IRCDDBApp::getIPAddress(std::string& zonerp_cs)
std::string IRCDDBApp::getIPAddressFromCall(std::string& zonerp_cs)
{
unsigned int max_usn = 0;
std::string ipAddr;
@ -474,13 +474,24 @@ std::string IRCDDBApp::getIPAddress(std::string& zonerp_cs)
return ipAddr;
}
std::string IRCDDBApp::getIPAddressFromNick(std::string& ircUser)
{
std::string ipAddress;
if (m_d->m_userMap.count(ircUser) == 1) {
ipAddress.assign(m_d->m_userMap[ircUser].m_host);
}
return ipAddress;
}
bool IRCDDBApp::findGateway(const std::string& gwCall)
{
std::string s = gwCall.substr(0,6);
IRCMessage *m2 = new IRCMessage("IDRT_GATEWAY");
m2->addParam(gwCall);
m2->addParam(getIPAddress(s));
m2->addParam(getIPAddressFromCall(s));
m_d->m_replyQ.putMessage(m2);
return true;
@ -545,7 +556,7 @@ bool IRCDDBApp::findRepeater(const std::string& rptrCall)
IRCMessage * m2 = new IRCMessage("IDRT_REPEATER");
m2->addParam(rptrCall);
m2->addParam(zonerp_cs);
m2->addParam(getIPAddress(s));
m2->addParam(getIPAddressFromCall(s));
m_d->m_replyQ.putMessage(m2);
return true;
@ -819,7 +830,7 @@ void IRCDDBApp::doUpdate(std::string& msg)
IRCMessage *m2 = new IRCMessage("IDRT_REPEATER");
m2->addParam(arearp_cs);
m2->addParam(zonerp_cs);
m2->addParam(getIPAddress(value));
m2->addParam(getIPAddressFromCall(value));
m_d->m_replyQ.putMessage(m2);
}
} else if (0==tableID && m_d->m_initReady) {
@ -831,19 +842,24 @@ void IRCDDBApp::doUpdate(std::string& msg)
CUtils::ReplaceChar(userCallsign, '_', ' ');
CUtils::ReplaceChar(arearp_cs, '_', ' ');
std::smatch sm1;
std::string nick;
if(std::regex_search(msg, sm1, m_d->m_fromPattern))
nick = sm1[1];
if (1 == m_d->m_rptrMap.count(value)) {
CLog::logTrace("doUptate RPTR already present");
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);
ip_addr = nick.empty() ? getIPAddressFromCall(zonerp_cs) : getIPAddressFromNick(nick);
zonerp_cs.push_back('G');
}
else {
CLog::logTrace("doUptate RPTR not present");
zonerp_cs = arearp_cs.substr(0, arearp_cs.length() - 1U);
ip_addr = getIPAddress(zonerp_cs);
ip_addr = nick.empty() ? getIPAddressFromCall(zonerp_cs) : getIPAddressFromNick(nick);
zonerp_cs.push_back('G');
if(!ip_addr.empty()) {

@ -90,7 +90,8 @@ protected:
private:
void doUpdate(std::string& msg);
void doNotFound(std::string& msg, std::string& retval);
std::string getIPAddress(std::string& zonerp_cs);
std::string getIPAddressFromCall(std::string& zonerp_cs);
std::string getIPAddressFromNick(std::string& ircUser);
bool findServerUser();
unsigned int calculateUsn(const std::string& nick);
std::string getLastEntryTime(int tableID);

Loading…
Cancel
Save

Powered by TurnKey Linux.