Beispiel #1
0
    void RemoveMode(Channel* channel, char mc, irc::modestacker* stack)
    {
        CUList* cl = channel->GetUsers();
        std::string item = extend + std::string(channel->name);
        std::vector<std::string> mode_junk;
        mode_junk.push_back(channel->name);
        irc::modestacker modestack(MyInstance, false);
        std::deque<std::string> stackresult;

        for (CUList::iterator i = cl->begin(); i != cl->end(); i++)
        {
            if (i->first->GetExt(item))
            {
                if (stack)
                    stack->Push(mc, i->first->nick);
                else
                    modestack.Push(mc, i->first->nick);
            }
        }

        if (stack)
            return;

        while (modestack.GetStackedLine(stackresult))
        {
            mode_junk.insert(mode_junk.end(), stackresult.begin(), stackresult.end());
            MyInstance->SendMode(mode_junk, MyInstance->FakeClient);
            mode_junk.erase(mode_junk.begin() + 1, mode_junk.end());
        }
    }
Beispiel #2
0
	void RemoveMode(chanrec* channel, char mc)
	{
		unload_kludge = true;
		CUList* cl = channel->GetUsers();
		std::string item = extend + std::string(channel->name);
		const char* mode_junk[MAXMODES+2];
		userrec* n = new userrec(MyInstance);
		n->SetFd(FD_MAGIC_NUMBER);
		mode_junk[0] = channel->name;
		irc::modestacker modestack(false);
		std::deque<std::string> stackresult;				
		for (CUList::iterator i = cl->begin(); i != cl->end(); i++)
		{
			if (i->first->GetExt(item, dummyptr))
			{
				modestack.Push(mc, i->first->nick);
			}
		}

		while (modestack.GetStackedLine(stackresult))
		{
			for (size_t j = 0; j < stackresult.size(); j++)
			{
				mode_junk[j+1] = stackresult[j].c_str();
			}
			MyInstance->SendMode(mode_junk, stackresult.size() + 1, n);
		}
		
		delete n;
		unload_kludge = false;
	}
Beispiel #3
0
 User* FindAndVerify(std::string &parameter, Channel* channel)
 {
     User* theuser = MyInstance->FindNick(parameter);
     if ((!theuser) || (!channel->HasUser(theuser)))
     {
         parameter.clear();
         return NULL;
     }
     return theuser;
 }
Beispiel #4
0
 ModePair ModeSet(User* source, User* dest, Channel* channel, const std::string &parameter)
 {
     User* x = MyInstance->FindNick(parameter);
     if (x)
     {
         if (!channel->HasUser(x))
         {
             return std::make_pair(false, parameter);
         }
         else
         {
             std::string item = extend+std::string(channel->name);
             if (x->GetExt(item))
             {
                 return std::make_pair(true, x->nick);
             }
             else
             {
                 return std::make_pair(false, parameter);
             }
         }
     }
     return std::make_pair(false, parameter);
 }
Beispiel #5
0
	ModePair ModeSet(userrec* source, userrec* dest, chanrec* channel, const std::string &parameter)
	{
		userrec* x = MyInstance->FindNick(parameter);
		if (x)
		{
			if (!channel->HasUser(x))
			{
				return std::make_pair(false, parameter);
			}
			else
			{
				std::string item = extend+std::string(channel->name);
				if (x->GetExt(item,dummyptr))
				{
					return std::make_pair(true, x->nick);
				}
				else
				{
					return std::make_pair(false, parameter);
				}
			}
		}
		return std::make_pair(false, parameter);
	}
Beispiel #6
0
	ModuleGeneralException(InspIRCd* serv)
	: Module::Module(serv), Srv(serv)
	{
		be = new GeneralException(serv);
		Srv->AddMode(be, 'x');
	}