]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_cgiirc.cpp
m_remove, m_services_account Don't check whether nicks are u-lined, checking the...
[user/henk/code/inspircd.git] / src / modules / m_cgiirc.cpp
index 6f01d37259ffeacf4359dc8715d8f23effff0466..fc55cc47fa268652e2672ef90aeb276b08664c71 100644 (file)
 
 #include "inspircd.h"
 
-#ifndef WINDOWS
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#endif
-
 /* $ModDesc: Change user's hosts connecting from known CGI:IRC hosts */
 
 enum CGItype { INVALID, PASS, IDENT, PASSFIRST, IDENTFIRST, WEBIRC };
@@ -183,15 +177,8 @@ public:
                ServerInstance->Extensions.Register(&cmd.webirc_ip);
                ServerInstance->Extensions.Register(&waiting);
 
-               Implementation eventlist[] = { I_OnRehash, I_OnUserRegister, I_OnCheckReady, I_OnUserConnect };
-               ServerInstance->Modules->Attach(eventlist, this, 4);
-       }
-
-       void Prioritize()
-       {
-               ServerInstance->Modules->SetPriority(this, I_OnUserConnect, PRIORITY_FIRST);
-               Module* umodes = ServerInstance->Modules->Find("m_conn_umodes.so");
-               ServerInstance->Modules->SetPriority(this, I_OnUserConnect, PRIORITY_BEFORE, &umodes);
+               Implementation eventlist[] = { I_OnRehash, I_OnUserRegister, I_OnCheckReady };
+               ServerInstance->Modules->Attach(eventlist, this, 3);
        }
 
        void OnRehash(User* user)
@@ -246,6 +233,32 @@ public:
        {
                if (waiting.get(user))
                        return MOD_RES_DENY;
+
+               std::string *webirc_ip = cmd.webirc_ip.get(user);
+               if (!webirc_ip)
+                       return MOD_RES_PASSTHRU;
+
+               ServerInstance->Users->RemoveCloneCounts(user);
+               user->SetClientIP(webirc_ip->c_str());
+               cmd.webirc_ip.unset(user);
+
+               std::string* webirc_hostname = cmd.webirc_hostname.get(user);
+               if (webirc_hostname && webirc_hostname->length() < 64)
+                       user->host = user->dhost = *webirc_hostname;
+               else
+                       user->host = user->dhost = user->GetIPString();
+
+               user->InvalidateCache();
+               cmd.webirc_hostname.unset(user);
+
+               ServerInstance->Users->AddLocalClone(user);
+               ServerInstance->Users->AddGlobalClone(user);
+               user->SetClass();
+               user->CheckClass();
+               user->CheckLines(true);
+               if (user->quitting)
+                       return MOD_RES_DENY;
+
                return MOD_RES_PASSTHRU;
        }
 
@@ -288,29 +301,6 @@ public:
                return MOD_RES_PASSTHRU;
        }
 
-       virtual void OnUserConnect(LocalUser* user)
-       {
-               std::string *webirc_hostname = cmd.webirc_hostname.get(user);
-               std::string *webirc_ip = cmd.webirc_ip.get(user);
-               if (!webirc_ip)
-                       return;
-               ServerInstance->Users->RemoveCloneCounts(user);
-               user->SetClientIP(webirc_ip->c_str());
-               user->InvalidateCache();
-               if (webirc_hostname && webirc_hostname->length() < 64)
-                       user->host = user->dhost = *webirc_hostname;
-               else
-                       user->host = user->dhost = user->GetIPString();
-               user->InvalidateCache();
-               ServerInstance->Users->AddLocalClone(user);
-               ServerInstance->Users->AddGlobalClone(user);
-               user->SetClass();
-               user->CheckClass();
-               user->CheckLines(true);
-               cmd.webirc_ip.unset(user);
-               cmd.webirc_hostname.unset(user);
-       }
-
        bool CheckPass(LocalUser* user)
        {
                if(IsValidHost(user->password))