X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_check.cpp;h=5e7b4847cf0ee7968b31cafb8a9e16964ee54556;hb=9dd72b7003963d868a23da930a91300b49ab4959;hp=68c677d09c956fc410a9978a2251821192bfa5b0;hpb=8b02407d93810de79cf62e7aee38e725912d63db;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_check.cpp b/src/modules/m_check.cpp index 68c677d09..5e7b4847c 100644 --- a/src/modules/m_check.cpp +++ b/src/modules/m_check.cpp @@ -26,6 +26,9 @@ using namespace std; /* $ModDesc: Provides the /check command to retrieve information on a user, channel, or IP address */ +extern user_hash clientlist; +extern bool match(const char *, const char *); + static Server *Srv; class cmd_check : public command_t @@ -67,7 +70,7 @@ class cmd_check : public command_t Srv->SendTo(NULL, user, checkstr + " nuh " + targuser->GetFullHost()); Srv->SendTo(NULL, user, checkstr + " realnuh " + targuser->GetFullRealHost()); Srv->SendTo(NULL, user, checkstr + " realname " + targuser->fullname); - Srv->SendTo(NULL, user, checkstr + " modes +" + targuser->modes); + Srv->SendTo(NULL, user, checkstr + " modes +" + targuser->FormatModes()); Srv->SendTo(NULL, user, checkstr + " server " + targuser->server); if (targuser->awaymsg[0] != 0) { @@ -154,6 +157,35 @@ class cmd_check : public command_t else { /* /check on an IP address, or something that doesn't exist */ + struct sockaddr_in addr; + long x = 0; + + if (inet_aton(parameters[0], &addr.sin_addr) == 0) + { + /* hostname or other */ + for (user_hash::const_iterator a = clientlist.begin(); a != clientlist.end(); a++) + { + if (match(a->second->host, parameters[0]) || match(a->second->dhost, parameters[0])) + { + /* host or vhost matches mask */ + Srv->SendTo(NULL, user, checkstr + " match " + ConvToStr(++x) + " " + a->second->GetFullRealHost()); + } + } + } + else + { + /* IP address */ + for (user_hash::const_iterator a = clientlist.begin(); a != clientlist.end(); a++) + { + if (addr.sin_addr.s_addr == a->second->ip4.s_addr) + { + /* same IP. */ + Srv->SendTo(NULL, user, checkstr + " match " + ConvToStr(++x) + " " + a->second->GetFullRealHost()); + } + } + } + + Srv->SendTo(NULL, user, checkstr + " matches " + ConvToStr(x)); } Srv->SendTo(NULL, user, checkstr + " END " + std::string(parameters[0]));