X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_cgiirc.cpp;h=96d2d97a2ac88b978a838e0aa43fe4b13981b630;hb=495ea4be05859f46cbf99c10541210fa3590f01a;hp=73cc95f541f1a6acea2f250c5146f2ee2e438ed3;hpb=8de87c2a9b5f5e68caac1ca06b1021ed69cb3d6a;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_cgiirc.cpp b/src/modules/m_cgiirc.cpp index 73cc95f54..96d2d97a2 100644 --- a/src/modules/m_cgiirc.cpp +++ b/src/modules/m_cgiirc.cpp @@ -2,8 +2,8 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * InspIRCd: (C) 2002-2008 InspIRCd Development Team - * See: http://www.inspircd.org/wiki/index.php/Credits + * InspIRCd: (C) 2002-2009 InspIRCd Development Team + * See: http://wiki.inspircd.org/Credits * * This program is free but copyrighted software; see * the file COPYING for details. @@ -68,7 +68,7 @@ class CommandWebirc : public Command for(CGIHostlist::iterator iter = Hosts.begin(); iter != Hosts.end(); iter++) { - if(InspIRCd::Match(user->host, iter->hostmask) || InspIRCd::MatchCIDR(user->GetIPString(), iter->hostmask)) + if(InspIRCd::Match(user->host, iter->hostmask, ascii_case_insensitive_map) || InspIRCd::MatchCIDR(user->GetIPString(), iter->hostmask, ascii_case_insensitive_map)) { if(iter->type == WEBIRC && parameters[0] == iter->password) { @@ -82,6 +82,8 @@ class CommandWebirc : public Command } } } + + ServerInstance->SNO->WriteToSnoMask('A', "Connecting user %s tried to use WEBIRC, but didn't match any configured webirc blocks.", user->GetFullRealHost().c_str()); return CMD_FAILURE; } }; @@ -112,9 +114,11 @@ class CGIResolver : public Resolver them->host.assign(result,0, 64); them->dhost.assign(result, 0, 64); + if (querytype) + them->SetSockAddr(them->GetProtocolFamily(), result.c_str(), them->GetPort()); them->ident.assign("~cgiirc", 0, 8); them->InvalidateCache(); - them->CheckLines(); + them->CheckLines(true); } } @@ -152,7 +156,7 @@ public: virtual void Prioritize() { - ServerInstance->Modules->SetPriority(this, I_OnUserConnect, PRIO_FIRST); + ServerInstance->Modules->SetPriority(this, I_OnUserConnect, PRIORITY_FIRST); } virtual void OnRehash(User* user, const std::string ¶meter) @@ -262,30 +266,30 @@ public: { for(CGIHostlist::iterator iter = Hosts.begin(); iter != Hosts.end(); iter++) { - if(InspIRCd::Match(user->host, iter->hostmask) || InspIRCd::MatchCIDR(user->GetIPString(), iter->hostmask)) + if(InspIRCd::Match(user->host, iter->hostmask, ascii_case_insensitive_map) || InspIRCd::MatchCIDR(user->GetIPString(), iter->hostmask, ascii_case_insensitive_map)) { // Deal with it... if(iter->type == PASS) { CheckPass(user); // We do nothing if it fails so... - user->CheckLines(); + user->CheckLines(true); } else if(iter->type == PASSFIRST && !CheckPass(user)) { // If the password lookup failed, try the ident CheckIdent(user); // If this fails too, do nothing - user->CheckLines(); + user->CheckLines(true); } else if(iter->type == IDENT) { CheckIdent(user); // Nothing on failure. - user->CheckLines(); + user->CheckLines(true); } else if(iter->type == IDENTFIRST && !CheckIdent(user)) { // If the ident lookup fails, try the password. CheckPass(user); - user->CheckLines(); + user->CheckLines(true); } else if(iter->type == WEBIRC) { @@ -310,25 +314,15 @@ public: } if(user->GetExt("cgiirc_webirc_ip", webirc_ip)) { - bool valid=false; ServerInstance->Users->RemoveCloneCounts(user); -#ifdef IPV6 - valid = (inet_pton(AF_INET6, webirc_ip->c_str(), &((sockaddr_in6*)user->ip)->sin6_addr) > 0); - - if(!valid) - valid = (inet_aton(webirc_ip->c_str(), &((sockaddr_in*)user->ip)->sin_addr)); -#else - if (inet_aton(webirc_ip->c_str(), &((sockaddr_in*)user->ip)->sin_addr)) - valid = true; -#endif - + user->SetSockAddr(user->GetProtocolFamily(), webirc_ip->c_str(), user->GetPort()); delete webirc_ip; user->InvalidateCache(); user->Shrink("cgiirc_webirc_ip"); ServerInstance->Users->AddLocalClone(user); ServerInstance->Users->AddGlobalClone(user); user->CheckClass(); - user->CheckLines(); + user->CheckLines(true); } } @@ -410,12 +404,7 @@ public: user->Extend("cgiirc_realhost", new std::string(user->host)); user->Extend("cgiirc_realip", new std::string(user->GetIPString())); ServerInstance->Users->RemoveCloneCounts(user); -#ifdef IPV6 - if (user->GetProtocolFamily() == AF_INET6) - inet_pton(AF_INET6, newip, &((sockaddr_in6*)user->ip)->sin6_addr); - else -#endif - inet_aton(newip, &((sockaddr_in*)user->ip)->sin_addr); + user->SetSockAddr(user->GetProtocolFamily(), newip, user->GetPort()); ServerInstance->Users->AddLocalClone(user); ServerInstance->Users->AddGlobalClone(user); user->CheckClass();