]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modes/cmode_o.cpp
Dont allow keys of length >= 32
[user/henk/code/inspircd.git] / src / modes / cmode_o.cpp
index 85eb08c381a1ced66a9a593e14a96992d36b7024..a66818005eb2b198a3a0acd5735e2f925ce60ff6 100644 (file)
@@ -32,6 +32,33 @@ ModePair ModeChannelOp::ModeSet(userrec* source, userrec* dest, chanrec* channel
        return std::make_pair(false, parameter);
 }
 
+
+void ModeChannelOp::RemoveMode(chanrec* channel)
+{
+       CUList* list = channel->GetOppedUsers();
+       CUList copy;
+       char moderemove[MAXBUF];
+       userrec* n = new userrec(ServerInstance);
+       n->SetFd(FD_MAGIC_NUMBER);
+
+       for (CUList::iterator i = list->begin(); i != list->end(); i++)
+       {
+               userrec* n = i->second;
+               copy.insert(std::make_pair(n,n));
+       }
+       for (CUList::iterator i = copy.begin(); i != copy.end(); i++)
+       {
+               sprintf(moderemove,"-%c",this->GetModeChar());
+               const char* parameters[] = { channel->name, moderemove, i->second->nick };
+               ServerInstance->SendMode(parameters, 3, n);
+       }
+       delete n;
+}
+
+void ModeChannelOp::RemoveMode(userrec* user)
+{
+}
+
 ModeAction ModeChannelOp::OnModeChange(userrec* source, userrec* dest, chanrec* channel, std::string &parameter, bool adding)
 {
        int status = channel->GetStatus(source);
@@ -50,7 +77,10 @@ ModeAction ModeChannelOp::OnModeChange(userrec* source, userrec* dest, chanrec*
         * the return value and is always MODEACTION_DENY if the mode is supposed to have
         * a parameter.
         */
-       return MODEACTION_ALLOW;
+       if (parameter.length())
+               return MODEACTION_ALLOW;
+       else
+               return MODEACTION_DENY;
 }
 
 std::string ModeChannelOp::AddOp(userrec *user,const char* dest,chanrec *chan,int status)