X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_xmlsocket.cpp;h=0e29cb99347432d81a47007bdc15f9caba4e5ef4;hb=31b232eec07d0b85ce2cc7c4ebc5d5387f781dcb;hp=2e4b17fc6e8012e355c8a21a7d62b49a8d08bf35;hpb=d1b20f95198858c0ffd2974fb7fd622a0d945a81;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_xmlsocket.cpp b/src/modules/m_xmlsocket.cpp index 2e4b17fc6..0e29cb993 100644 --- a/src/modules/m_xmlsocket.cpp +++ b/src/modules/m_xmlsocket.cpp @@ -30,9 +30,15 @@ class ModuleXMLSocket : public Module ServerInstance->Modules->Attach(eventlist, this, 6); } - bool isin(const std::string &hostandport, const std::vector &portlist) + bool isin(const std::string &host, int port, const std::vector &portlist) { - return std::find(portlist.begin(), portlist.end(), hostandport) != portlist.end(); + if (std::find(portlist.begin(), portlist.end(), "*:" + ConvToStr(port)) != portlist.end()) + return true; + + if (std::find(portlist.begin(), portlist.end(), ":" + ConvToStr(port)) != portlist.end()) + return true; + + return std::find(portlist.begin(), portlist.end(), host + ":" + ConvToStr(port)) != portlist.end(); } virtual void OnRehash(User* user, const std::string ¶m) @@ -51,6 +57,7 @@ class ModuleXMLSocket : public Module // Get the port we're meant to be listening on with SSL std::string port = Conf->ReadValue("bind", "port", i); std::string addr = Conf->ReadValue("bind", "address", i); + irc::portparser portrange(port, false); long portno = -1; while ((portno = portrange.GetToken())) @@ -59,12 +66,12 @@ class ModuleXMLSocket : public Module { listenports.push_back(addr + ":" + ConvToStr(portno)); for (size_t j = 0; j < ServerInstance->Config->ports.size(); j++) - if ((ServerInstance->Config->ports[i]->GetPort() == portno) && (ServerInstance->Config->ports[i]->GetIP() == addr)) + if ((ServerInstance->Config->ports[j]->GetPort() == portno) && (ServerInstance->Config->ports[j]->GetIP() == addr)) ServerInstance->Config->ports[j]->SetDescription("xml"); } catch (ModuleException &e) { - ServerInstance->Logs->Log("m_xmlsocket",DEFAULT, "m_xmlsocket.so: FAILED to enable XMLSocket on port %d: %s. Maybe you have another similar module loaded?", portno, e.GetReason()); + ServerInstance->Logs->Log("m_xmlsocket",DEFAULT, "m_xmlsocket.so: FAILED to enable XMLSocket on port %ld: %s. Maybe you have another similar module loaded?", portno, e.GetReason()); } } } @@ -90,7 +97,7 @@ class ModuleXMLSocket : public Module } } - virtual void OnCleanup(int target_type, void* item) + virtual void OnCleanup(int target_type, void* item) { if(target_type == TYPE_USER) { @@ -107,7 +114,7 @@ class ModuleXMLSocket : public Module virtual void OnHookUserIO(User* user, const std::string &targetip) { - if (!user->io && isin(targetip+":"+ConvToStr(user->GetPort()),listenports)) + if (!user->io && isin(targetip,user->GetPort(),listenports)) { /* Hook the user with our module */ user->io = this;