]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_cgiirc.cpp
Register a few extensions that weren't registered
[user/henk/code/inspircd.git] / src / modules / m_cgiirc.cpp
index f6ad5992a78df10e66c3e3353fa1f599892e0dcb..63efd6bae8caf541b844c181cf800c8225b51ddc 100644 (file)
@@ -89,11 +89,15 @@ class CommandWebirc : public Command
                                        {
                                                realhost.set(user, user->host);
                                                realip.set(user, user->GetIPString());
+
+                                               bool host_ok = (parameters[2].length() < 64);
+                                               const std::string& newhost = (host_ok ? parameters[2] : parameters[3]);
+
                                                if (notify)
-                                                       ServerInstance->SNO->WriteGlobalSno('a', "Connecting user %s detected as using CGI:IRC (%s), changing real host to %s from %s", user->nick.c_str(), user->host.c_str(), parameters[2].c_str(), user->host.c_str());
+                                                       ServerInstance->SNO->WriteGlobalSno('a', "Connecting user %s detected as using CGI:IRC (%s), changing real host to %s from %s", user->nick.c_str(), user->host.c_str(), newhost.c_str(), user->host.c_str());
 
                                                // Check if we're happy with the provided hostname. If it's problematic then make sure we won't set a host later, just the IP
-                                               if (parameters[2].length() < 64)
+                                               if (host_ok)
                                                        webirc_hostname.set(user, parameters[2]);
                                                else
                                                        webirc_hostname.unset(user);
@@ -221,15 +225,11 @@ public:
        void init()
        {
                OnRehash(NULL);
-               ServerInstance->AddCommand(&cmd);
-               ServerInstance->Extensions.Register(&cmd.realhost);
-               ServerInstance->Extensions.Register(&cmd.realip);
-               ServerInstance->Extensions.Register(&cmd.webirc_hostname);
-               ServerInstance->Extensions.Register(&cmd.webirc_ip);
-               ServerInstance->Extensions.Register(&waiting);
+               ServiceProvider* providerlist[] = { &cmd, &cmd.realhost, &cmd.realip, &cmd.webirc_hostname, &cmd.webirc_ip, &waiting };
+               ServerInstance->Modules->AddServices(providerlist, sizeof(providerlist)/sizeof(ServiceProvider*));
 
                Implementation eventlist[] = { I_OnRehash, I_OnUserRegister, I_OnCheckReady };
-               ServerInstance->Modules->Attach(eventlist, this, 3);
+               ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation));
        }
 
        void OnRehash(User* user)