]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
More work on /check.. now gives basic information on a user, no channel list yet...
authorw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>
Tue, 7 Mar 2006 01:34:26 +0000 (01:34 +0000)
committerw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>
Tue, 7 Mar 2006 01:34:26 +0000 (01:34 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@3503 e03df62e-2008-0410-955e-edbf42e46eb7

src/modules/m_check.cpp

index 15db15de54788794187e22ae1570d721fa6bc0d1..c6d8b08de006f8f5bb073105f47944894e8adfda 100644 (file)
@@ -34,7 +34,58 @@ class cmd_check : public command_t
 
        void Handle (char **parameters, int pcnt, userrec *user)
        {
+               userrec *targuser;
+               chanrec *targchan;
+               std::string checkstr;
 
+               checkstr = "304 " + std::string(user->nick) + " :CHECK";
+
+               targuser = Srv->FindNick(std::string(parameters[0]));
+               targchan = Srv->FindChannel(std::string(parameters[0]));
+
+               /*
+                * Syntax of a /check reply:
+                *  :server.name 304 target :CHECK START <target>
+                *  :server.name 304 target :CHECK <field> <value>
+                *  :server.name 304 target :CHECK END
+                */
+
+               Srv->SendTo(NULL, user, checkstr + " START " + std::string(parameters[0]));
+
+               if (targuser)
+               {
+                       /* /check on a user */
+                       Srv->SendTo(NULL, user, checkstr + " nuh " + std::string(targuser->GetFullHost()));
+                       Srv->SendTo(NULL, user, checkstr + " realnuh " + std::string(targuser->GetFullRealHost()));
+                       Srv->SendTo(NULL, user, checkstr + " realname " + std::string(targuser->fullname));
+                       Srv->SendTo(NULL, user, checkstr + " modes +" + std::string(targuser->modes));
+                       Srv->SendTo(NULL, user, checkstr + " server " + std::string(targuser->server));
+                       if (targuser->awaymsg[0] != 0)
+                       {
+                               /* user is away */
+                               Srv->SendTo(NULL, user, checkstr + " awaymsg " + std::string(targuser->awaymsg));
+                       }
+                       if (targuser->oper[0] != 0)
+                       {
+                               /* user is an oper of type ____ */
+                               Srv->SendTo(NULL, user, checkstr + " opertype " + std::string(targuser->oper));
+                       }
+                       if (IS_LOCAL(targuser))
+                       {
+                               /* port information is only held for a local user! */
+                               Srv->SendTo(NULL, user, checkstr + " onport " + ConvToStr(targuser->port));
+                       }
+               }
+               else if (targchan)
+               {
+                       /* /check on a channel */
+               }
+               else
+               {
+                       /*  /check on an IP address, or something that doesn't exist */
+               }
+
+               Srv->SendTo(NULL, user, "304 " + std::string(user->nick) + " :CHECK END " + std::string(parameters[0]));
        }
 };