]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_ojoin.cpp
Fix iteration of oper blocks by SSLINFO
[user/henk/code/inspircd.git] / src / modules / m_ojoin.cpp
index 8b8c1401e3f81334802c8df7204a4462ba884a3f..176a0e613e648259b9ea960080e7bf562a4d12b6 100644 (file)
@@ -2,7 +2,7 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  InspIRCd: (C) 2002-2009 InspIRCd Development Team
+ *  InspIRCd: (C) 2002-2010 InspIRCd Development Team
  * See: http://wiki.inspircd.org/Credits
  *
  * This program is free but copyrighted software; see
@@ -70,7 +70,7 @@ class CommandOjoin : public Command
                        if (notice)
                        {
                                channel = ServerInstance->FindChan(parameters[0]);
-                               channel->WriteChannelWithServ(ServerInstance->Config->ServerName, "NOTICE %s :%s joined on official network business.",
+                               channel->WriteChannelWithServ(ServerInstance->Config->ServerName.c_str(), "NOTICE %s :%s joined on official network business.",
                                        parameters[0].c_str(), user->nick.c_str());
                                ServerInstance->PI->SendChannelNotice(channel, 0, std::string(user->nick) + " joined on official network business.");
                        }
@@ -95,7 +95,7 @@ class CommandOjoin : public Command
 class NetworkPrefix : public ModeHandler
 {
  public:
-       NetworkPrefix(Module* parent) : ModeHandler(parent, 'Y', PARAM_ALWAYS, MODETYPE_CHANNEL)
+       NetworkPrefix(Module* parent) : ModeHandler(parent, "official-join", 'Y', PARAM_ALWAYS, MODETYPE_CHANNEL)
        {
                list = true;
                prefix = NPrefix;
@@ -103,31 +103,6 @@ class NetworkPrefix : public ModeHandler
                m_paramtype = TR_NICK;
        }
 
-       ModePair ModeSet(User* source, User* dest, Channel* channel, const std::string &parameter)
-       {
-               User* x = ServerInstance->FindNick(parameter);
-               if (x)
-               {
-                       Membership* m = channel->GetUser(x);
-                       if (!m)
-                       {
-                               return std::make_pair(false, parameter);
-                       }
-                       else
-                       {
-                               if (m->hasMode('Y'))
-                               {
-                                       return std::make_pair(true, x->nick);
-                               }
-                               else
-                               {
-                                       return std::make_pair(false, parameter);
-                               }
-                       }
-               }
-               return std::make_pair(false, parameter);
-       }
-
        void RemoveMode(Channel* channel, irc::modestacker* stack)
        {
                const UserMembList* cl = channel->GetUsers();
@@ -212,7 +187,6 @@ class NetworkPrefix : public ModeHandler
                        ((source == theuser) && (!adding)) ||
                        (ServerInstance->ULine(source->nick.c_str())) ||
                        (ServerInstance->ULine(source->server)) ||
-                       (!*source->server) ||
                        (!IS_LOCAL(source))
                        )
                {
@@ -237,6 +211,10 @@ class ModuleOjoin : public Module
 
        ModuleOjoin()
                : np(NULL), mycommand(this)
+       {
+       }
+
+       void init()
        {
                /* Load config stuff */
                OnRehash(NULL);
@@ -244,16 +222,11 @@ class ModuleOjoin : public Module
                /* Initialise module variables */
                np = new NetworkPrefix(this);
 
-               if (!ServerInstance->Modes->AddMode(np))
-               {
-                       delete np;
-                       throw ModuleException("Could not add new mode!");
-               }
-
-               ServerInstance->AddCommand(&mycommand);
+               ServerInstance->Modules->AddService(*np);
+               ServerInstance->Modules->AddService(mycommand);
 
-               Implementation eventlist[] = { I_OnUserPreJoin, I_OnUserKick, I_OnUserPart, I_OnUserPreKick, I_OnRehash };
-               ServerInstance->Modules->Attach(eventlist, this, 5);
+               Implementation eventlist[] = { I_OnUserPreJoin, I_OnUserPreKick, I_OnRehash };
+               ServerInstance->Modules->Attach(eventlist, this, 3);
        }
 
        ModResult OnUserPreJoin(User *user, Channel *chan, const char *cname, std::string &privs, const std::string &keygiven)
@@ -289,7 +262,7 @@ class ModuleOjoin : public Module
 
        ModResult OnUserPreKick(User* source, Membership* memb, const std::string &reason)
        {
-               if ((ServerInstance->ULine(source->nick.c_str())) || (ServerInstance->ULine(source->server)) || (!*source->server))
+               if ((ServerInstance->ULine(source->nick.c_str())) || ServerInstance->ULine(source->server))
                        return MOD_RES_PASSTHRU;
 
                // Don't do anything if they're not +Y
@@ -306,7 +279,6 @@ class ModuleOjoin : public Module
 
        ~ModuleOjoin()
        {
-               ServerInstance->Modes->DelMode(np);
                delete np;
        }
 
@@ -317,7 +289,7 @@ class ModuleOjoin : public Module
 
        Version GetVersion()
        {
-               return Version("Network Buisness Join", VF_COMMON | VF_VENDOR);
+               return Version("Network Buisness Join", VF_VENDOR);
        }
 };