diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/channels.c | 2 | ||||
-rw-r--r-- | src/core/cs_topic.c | 2 | ||||
-rw-r--r-- | src/core/os_oline.c | 2 | ||||
-rw-r--r-- | src/core/os_umode.c | 2 | ||||
-rw-r--r-- | src/modes.cpp | 6 | ||||
-rw-r--r-- | src/modules/cs_appendtopic.c | 2 | ||||
-rw-r--r-- | src/protocol.cpp | 6 | ||||
-rw-r--r-- | src/protocol/bahamut.c | 22 | ||||
-rw-r--r-- | src/protocol/inspircd11.c | 13 | ||||
-rw-r--r-- | src/protocol/inspircd12.cpp | 19 | ||||
-rw-r--r-- | src/protocol/ratbox.c | 12 | ||||
-rw-r--r-- | src/protocol/unreal32.c | 29 | ||||
-rw-r--r-- | src/regchannel.cpp | 2 | ||||
-rw-r--r-- | src/users.c | 41 |
14 files changed, 86 insertions, 74 deletions
diff --git a/src/channels.c b/src/channels.c index 997432d88..bb4b04cff 100644 --- a/src/channels.c +++ b/src/channels.c @@ -876,7 +876,7 @@ void chan_set_user_status(Channel * chan, User * user, int16 status) user->nick, status, chan->name); } - user->SetMode(um); + user->SetMode(NULL, um); } for (uc = user->chans; uc; uc = uc->next) { diff --git a/src/core/cs_topic.c b/src/core/cs_topic.c index 2187a61e1..2da85af64 100644 --- a/src/core/cs_topic.c +++ b/src/core/cs_topic.c @@ -59,7 +59,7 @@ class CommandCSTopic : public Command if (ircd->join2set && whosends(ci) == findbot(Config.s_ChanServ)) { ircdproto->SendJoin(findbot(Config.s_ChanServ), c->name, c->creation_time); - ircdproto->SendMode(NULL, c->name, "+o %s", Config.s_ChanServ); + ircdproto->SendMode(NULL, c, "+o %s", Config.s_ChanServ); } ircdproto->SendTopic(whosends(ci), c, u->nick, topic ? topic : ""); if (ircd->join2set && whosends(ci) == findbot(Config.s_ChanServ)) diff --git a/src/core/os_oline.c b/src/core/os_oline.c index d8c407ee5..4e13388c5 100644 --- a/src/core/os_oline.c +++ b/src/core/os_oline.c @@ -34,7 +34,7 @@ class CommandOSOLine : public Command else if (u2 && flag[0] == '+') { ircdproto->SendSVSO(Config.s_OperServ, nick, flag); - u2->SetMode(UMODE_OPER); + u2->SetMode(findbot(Config.s_OperServ), UMODE_OPER); notice_lang(Config.s_OperServ, u2, OPER_OLINE_IRCOP); notice_lang(Config.s_OperServ, u, OPER_OLINE_SUCCESS, flag, nick); ircdproto->SendGlobops(findbot(Config.s_OperServ), "\2%s\2 used OLINE for %s", u->nick, nick); diff --git a/src/core/os_umode.c b/src/core/os_umode.c index bf4faa34a..70edf8ddc 100644 --- a/src/core/os_umode.c +++ b/src/core/os_umode.c @@ -42,7 +42,7 @@ class CommandOSUMode : public Command notice_lang(Config.s_OperServ, u, NICK_X_NOT_IN_USE, nick); else { - u2->SetModes(modes); + u2->SetModes(findbot(Config.s_OperServ), modes); notice_lang(Config.s_OperServ, u, OPER_UMODE_SUCCESS, nick); notice_lang(Config.s_OperServ, u2, OPER_UMODE_CHANGED, u->nick); diff --git a/src/modes.cpp b/src/modes.cpp index 57780985c..90a3a648c 100644 --- a/src/modes.cpp +++ b/src/modes.cpp @@ -243,7 +243,7 @@ void ChannelModeBan::AddMask(Channel *chan, const char *mask) if (entry_match(ban, bi->nick, bi->user, bi->host, 0)) { - ircdproto->SendMode(bi, chan->name, "-b %s", mask); + ircdproto->SendMode(bi, chan, "-b %s", mask); entry_delete(chan->bans, ban); return; } @@ -820,9 +820,9 @@ void ModeManager::ProcessModes() for (std::list<std::string>::iterator lit = ModeStrings.begin(); lit != ModeStrings.end(); ++lit) { if (c) - ircdproto->SendMode(s->bi, c->name, lit->c_str()); + ircdproto->SendMode(s->bi, c, lit->c_str()); else if (u) - ircdproto->SendMode(u, lit->c_str()); + ircdproto->SendMode(s->bi, u, lit->c_str()); } delete it->second; } diff --git a/src/modules/cs_appendtopic.c b/src/modules/cs_appendtopic.c index 1fa885559..324a660ae 100644 --- a/src/modules/cs_appendtopic.c +++ b/src/modules/cs_appendtopic.c @@ -102,7 +102,7 @@ class CommandCSAppendTopic : public Command if (whosends(ci) == findbot(Config.s_ChanServ)) { ircdproto->SendJoin(findbot(Config.s_ChanServ), c->name, c->creation_time); - ircdproto->SendMode(NULL, c->name, "+o %s", Config.s_ChanServ); + ircdproto->SendMode(NULL, c, "+o %s", Config.s_ChanServ); } } ircdproto->SendTopic(whosends(ci), c, u->nick, topic); diff --git a/src/protocol.cpp b/src/protocol.cpp index efeb43990..c7d8a8eab 100644 --- a/src/protocol.cpp +++ b/src/protocol.cpp @@ -67,7 +67,7 @@ void IRCDProto::SendSVSKill(BotInfo *source, User *user, const char *fmt, ...) SendSVSKillInternal(source, user, buf); } -void IRCDProto::SendMode(BotInfo *bi, const char *dest, const char *fmt, ...) +void IRCDProto::SendMode(BotInfo *bi, Channel *dest, const char *fmt, ...) { va_list args; char buf[BUFSIZE] = ""; @@ -77,14 +77,14 @@ void IRCDProto::SendMode(BotInfo *bi, const char *dest, const char *fmt, ...) SendModeInternal(bi, dest, buf); } -void IRCDProto::SendMode(User *u, const char *fmt, ...) +void IRCDProto::SendMode(BotInfo *bi, User *u, const char *fmt, ...) { va_list args; char buf[BUFSIZE] = ""; va_start(args, fmt); vsnprintf(buf, BUFSIZE - 1, fmt, args); va_end(args); - SendModeInternal(u, buf); + SendModeInternal(bi, u, buf); } void IRCDProto::SendKick(BotInfo *bi, Channel *chan, User *user, const char *fmt, ...) diff --git a/src/protocol/bahamut.c b/src/protocol/bahamut.c index 288b36329..6ec072b87 100644 --- a/src/protocol/bahamut.c +++ b/src/protocol/bahamut.c @@ -141,17 +141,17 @@ void bahamut_cmd_chghost(const char *nick, const char *vhost) class BahamutIRCdProto : public IRCDProto { - void SendModeInternal(BotInfo *source, const char *dest, const char *buf) + void SendModeInternal(BotInfo *source, Channel *dest, const char *buf) { if (!buf) return; - if (ircdcap->tsmode && (uplink_capab & ircdcap->tsmode)) send_cmd(source->nick, "MODE %s 0 %s", dest, buf); - else send_cmd(source->nick, "MODE %s %s", dest, buf); + if (ircdcap->tsmode && (uplink_capab & ircdcap->tsmode)) send_cmd(source->nick, "MODE %s 0 %s", dest->name, buf); + else send_cmd(source->nick, "MODE %s %s", dest->name, buf); } - void SendModeInternal(User *u, const char *buf) + void SendModeInternal(BotInfo *bi, User *u, const char *buf) { if (!buf) return; - send_cmd(Config.ServerName, "SVSMODE %s %ld %s", u->nick, static_cast<long>(u->timestamp), buf); + send_cmd(bi ? bi->nick : Config.ServerName, "SVSMODE %s %ld %s", u->nick, static_cast<long>(u->timestamp), buf); } /* SVSHOLD - set */ @@ -271,7 +271,7 @@ class BahamutIRCdProto : public IRCDProto */ void SendSVSMode(User *u, int ac, const char **av) { - this->SendModeInternal(u, merge_args(ac, av)); + this->SendModeInternal(NULL, u, merge_args(ac, av)); } void SendEOB() @@ -302,8 +302,9 @@ class BahamutIRCdProto : public IRCDProto /* nc_change was = 1, and there is no na->status */ void SendUnregisteredNick(User *u) { - u->RemoveMode(UMODE_REGISTERED); - ircdproto->SendMode(u, "+d 1"); + BotInfo *bi = findbot(Config.s_NickServ); + u->RemoveMode(bi, UMODE_REGISTERED); + ircdproto->SendMode(bi, u, "+d 1"); } /* SERVER */ @@ -340,8 +341,9 @@ class BahamutIRCdProto : public IRCDProto u->nc->Extend("authenticationtoken", sstrdup(svidbuf)); - u->SetMode(UMODE_REGISTERED); - ircdproto->SendMode(u, "+d %s", svidbuf); + BotInfo *bi = findbot(Config.s_NickServ); + u->SetMode(bi, UMODE_REGISTERED); + ircdproto->SendMode(bi, u, "+d %s", svidbuf); } } ircd_proto; diff --git a/src/protocol/inspircd11.c b/src/protocol/inspircd11.c index 84aa044de..1eb6ba56e 100644 --- a/src/protocol/inspircd11.c +++ b/src/protocol/inspircd11.c @@ -197,7 +197,7 @@ class InspIRCdProto : public IRCDProto void SendSVSMode(User *u, int ac, const char **av) { - this->SendModeInternal(u, merge_args(ac, av)); + this->SendModeInternal(NULL, u, merge_args(ac, av)); } void SendNumericInternal(const char *source, int numeric, const char *dest, const char *buf) @@ -210,17 +210,16 @@ class InspIRCdProto : public IRCDProto send_cmd(Config.ServerName, "NICK %ld %s %s %s %s +%s 0.0.0.0 :%s", static_cast<long>(time(NULL)), nick, host, host, user, modes, real); } - void SendModeInternal(BotInfo *source, const char *dest, const char *buf) + void SendModeInternal(BotInfo *source, Channel *dest, const char *buf) { if (!buf) return; - Channel *c = findchan(dest); - send_cmd(source ? source->nick : Config.s_OperServ, "FMODE %s %u %s", dest, static_cast<unsigned>(c ? c->creation_time : time(NULL)), buf); + send_cmd(source ? source->nick : Config.s_OperServ, "FMODE %s %u %s", dest->name, static_cast<unsigned>(dest->creation_time), buf); } - void SendModeInternal(User *u, const char *buf) + void SendModeInternal(BotInfo *bi, User *u, const char *buf) { if (!buf) return; - send_cmd(Config.s_NickServ, "MODE %s %s", u->nick, buf); + send_cmd(bi ? bi->nick : Config.ServerName, "MODE %s %s", u->nick, buf); } void SendClientIntroduction(const char *nick, const char *user, const char *host, const char *real, const char *modes, const char *uid) @@ -331,7 +330,7 @@ class InspIRCdProto : public IRCDProto /* SVSMODE +- */ void SendUnregisteredNick(User *u) { - u->RemoveMode(UMODE_REGISTERED); + u->RemoveMode(findbot(Config.s_NickServ), UMODE_REGISTERED); } void SendSVSJoin(const char *source, const char *nick, const char *chan, const char *param) diff --git a/src/protocol/inspircd12.cpp b/src/protocol/inspircd12.cpp index 2b232fe81..5161fdc22 100644 --- a/src/protocol/inspircd12.cpp +++ b/src/protocol/inspircd12.cpp @@ -204,7 +204,7 @@ class InspIRCdProto : public IRCDProto void SendSVSMode(User *u, int ac, const char **av) { - this->SendModeInternal(u, merge_args(ac, av)); + this->SendModeInternal(NULL, u, merge_args(ac, av)); } void SendNumericInternal(const char *source, int numeric, const char *dest, const char *buf) @@ -217,16 +217,15 @@ class InspIRCdProto : public IRCDProto send_cmd(TS6SID, "UID %ld %s %s %s %s +%s 0.0.0.0 :%s", static_cast<long>(time(NULL)), nick, host, host, user, modes, real); } - void SendModeInternal(BotInfo *source, const char *dest, const char *buf) + void SendModeInternal(BotInfo *source, Channel *dest, const char *buf) { - Channel *c = findchan(dest); - send_cmd(source ? source->uid : TS6SID, "FMODE %s %u %s", dest, static_cast<unsigned>(c ? c->creation_time : time(NULL)), buf); + send_cmd(source ? source->uid : TS6SID, "FMODE %s %u %s", dest->name, static_cast<unsigned>(dest->creation_time), buf); } - void SendModeInternal(User *u, const char *buf) + void SendModeInternal(BotInfo *bi, User *u, const char *buf) { if (!buf) return; - send_cmd(findbot(Config.s_NickServ)->uid, "MODE %s %s", u->GetUID().c_str(), buf); + send_cmd(bi ? bi->uid : TS6SID, "MODE %s %s", u->GetUID().c_str(), buf); } void SendClientIntroduction(const char *nick, const char *user, const char *host, const char *real, const char *modes, const char *uid) @@ -338,7 +337,7 @@ class InspIRCdProto : public IRCDProto /* SVSMODE -r */ void SendUnregisteredNick(User *u) { - u->RemoveMode(UMODE_REGISTERED); + u->RemoveMode(findbot(Config.s_NickServ), UMODE_REGISTERED); } void SendSVSJoin(const char *source, const char *nick, const char *chan, const char *param) @@ -398,7 +397,7 @@ class InspIRCdProto : public IRCDProto if (!u->nc) return; - u->SetMode(UMODE_REGISTERED); + u->SetMode(findbot(Config.s_NickServ), UMODE_REGISTERED); } } ircd_proto; @@ -839,7 +838,7 @@ int anope_event_uid(const char *source, int ac, const char **av) { validate_user(user); if (user->HasMode(UMODE_REGISTERED)) - user->RemoveMode(UMODE_REGISTERED); + user->RemoveMode(findbot(Config.s_NickServ), UMODE_REGISTERED); } user = NULL; @@ -1125,7 +1124,7 @@ int anope_event_endburst(const char *source, int ac, const char **av) { validate_user(u); if (u->HasMode(UMODE_REGISTERED)) - u->RemoveMode(UMODE_REGISTERED); + u->RemoveMode(findbot(Config.s_NickServ), UMODE_REGISTERED); } alog("Processed ENDBURST for %s", s->name); diff --git a/src/protocol/ratbox.c b/src/protocol/ratbox.c index 3996bf736..f10c86206 100644 --- a/src/protocol/ratbox.c +++ b/src/protocol/ratbox.c @@ -219,7 +219,7 @@ class RatboxProto : public IRCDTS6Proto void SendSVSMode(User *u, int ac, const char **av) { - this->SendModeInternal(u, merge_args(ac, av)); + this->SendModeInternal(NULL, u, merge_args(ac, av)); } /* SERVER name hop descript */ @@ -259,19 +259,19 @@ class RatboxProto : public IRCDTS6Proto send_cmd(TS6SID, "%03d %s %s", numeric, dest, buf); } - void SendModeInternal(BotInfo *bi, const char *dest, const char *buf) + void SendModeInternal(BotInfo *bi, Channel *dest, const char *buf) { if (bi) { - send_cmd(bi->uid, "MODE %s %s", dest, buf); + send_cmd(bi->uid, "MODE %s %s", dest->name, buf); } - else send_cmd(TS6SID, "MODE %s %s", dest, buf); + else send_cmd(TS6SID, "MODE %s %s", dest->name, buf); } - void SendModeInternal(User *u, const char *buf) + void SendModeInternal(BotInfo *bi, User *u, const char *buf) { if (!buf) return; - send_cmd(TS6SID, "SVSMODE %s %s", u->nick, buf); + send_cmd(bi ? bi->uid : TS6SID, "SVSMODE %s %s", u->nick, buf); } void SendKickInternal(BotInfo *bi, Channel *chan, User *user, const char *buf) diff --git a/src/protocol/unreal32.c b/src/protocol/unreal32.c index fb52d3129..7dc55a452 100644 --- a/src/protocol/unreal32.c +++ b/src/protocol/unreal32.c @@ -186,9 +186,12 @@ class UnrealIRCdProto : public IRCDProto void SendVhostDel(User *u) { - u->RemoveMode(UMODE_CLOAK); - u->RemoveMode(UMODE_VHOST); - u->SetMode(UMODE_CLOAK); + BotInfo *bi = findbot(Config.s_HostServ); + u->RemoveMode(bi, UMODE_CLOAK); + u->RemoveMode(bi, UMODE_VHOST); + ModeManager::ProcessModes(); + u->SetMode(bi, UMODE_CLOAK); + ModeManager::ProcessModes(); } void SendAkill(Akill *ak) @@ -215,20 +218,20 @@ class UnrealIRCdProto : public IRCDProto { if (ac >= 1) { if (!u || !av[0]) return; - this->SendModeInternal(u, merge_args(ac, av)); + this->SendModeInternal(NULL, u, merge_args(ac, av)); } } - void SendModeInternal(BotInfo *source, const char *dest, const char *buf) + void SendModeInternal(BotInfo *source, Channel *dest, const char *buf) { if (!buf) return; - send_cmd(source->nick, "G %s %s", dest, buf); + send_cmd(source->nick, "G %s %s", dest->name, buf); } - void SendModeInternal(User *u, const char *buf) + void SendModeInternal(BotInfo *bi, User *u, const char *buf) { if (!buf) return; - send_cmd(Config.ServerName, "v %s %s", u->nick, buf); + send_cmd(bi ? bi->nick : Config.ServerName, "v %s %s", u->nick, buf); } void SendClientIntroduction(const char *nick, const char *user, const char *host, const char *real, const char *modes, const char *uid) @@ -462,14 +465,16 @@ class UnrealIRCdProto : public IRCDProto u->nc->Extend("authenticationtoken", sstrdup(svidbuf)); - u->SetMode(UMODE_REGISTERED); - ircdproto->SendMode(u, "+d %s", svidbuf); + BotInfo *bi = findbot(Config.s_NickServ); + u->SetMode(bi, UMODE_REGISTERED); + ircdproto->SendMode(bi, u, "+d %s", svidbuf); } void SendUnregisteredNick(User *u) { - u->RemoveMode(UMODE_REGISTERED); - ircdproto->SendMode(u, "+d 1"); + BotInfo *bi = findbot(Config.s_NickServ); + u->RemoveMode(bi, UMODE_REGISTERED); + ircdproto->SendMode(bi, u, "+d 1"); } } ircd_proto; diff --git a/src/regchannel.cpp b/src/regchannel.cpp index bd6ded545..9f5c51c8e 100644 --- a/src/regchannel.cpp +++ b/src/regchannel.cpp @@ -79,7 +79,7 @@ ChannelInfo::~ChannelInfo() if (this->c && this->c->HasMode(CMODE_PERM)) { this->c->RemoveMode(NULL, CMODE_PERM); - ircdproto->SendMode(whosends(this), this->name, "-%c", ModeManager::FindChannelModeByName(CMODE_PERM)->ModeChar); + ircdproto->SendMode(whosends(this), this->c, "-%c", ModeManager::FindChannelModeByName(CMODE_PERM)->ModeChar); } if (debug) diff --git a/src/users.c b/src/users.c index 81caf0de4..5783dfb56 100644 --- a/src/users.c +++ b/src/users.c @@ -506,68 +506,75 @@ void User::RemoveModeInternal(UserMode *um) } /** Set a mode on the user + * @param bi The client setting the mode * @param um The user mode * @param Param Optional param for the mode */ -void User::SetMode(UserMode *um, const std::string &Param) +void User::SetMode(BotInfo *bi, UserMode *um, const std::string &Param) { if (!um) return; + ModeManager::StackerAdd(bi, this, um, true, Param); SetModeInternal(um, Param); - ModeManager::StackerAdd(NULL, this, um, true, Param); } /** Set a mode on the user + * @param bi The client setting the mode * @param Name The mode name * @param param Optional param for the mode */ -void User::SetMode(UserModeName Name, const std::string &Param) +void User::SetMode(BotInfo *bi, UserModeName Name, const std::string &Param) { - SetMode(ModeManager::FindUserModeByName(Name), Param); + SetMode(bi, ModeManager::FindUserModeByName(Name), Param); } /* Set a mode on the user + * @param bi The client setting the mode * @param ModeChar The mode char * @param param Optional param for the mode */ -void User::SetMode(char ModeChar, const std::string &Param) +void User::SetMode(BotInfo *bi, char ModeChar, const std::string &Param) { - SetMode(ModeManager::FindUserModeByChar(ModeChar), Param); + SetMode(bi, ModeManager::FindUserModeByChar(ModeChar), Param); } /** Remove a mode on the user + * @param bi The client setting the mode * @param um The user mode */ -void User::RemoveMode(UserMode *um) +void User::RemoveMode(BotInfo *bi, UserMode *um) { if (!um) return; + ModeManager::StackerAdd(bi, this, um, false); RemoveModeInternal(um); - ModeManager::StackerAdd(NULL, this, um, false); } /** Remove a mode from the user + * @param bi The client setting the mode * @param Name The mode name */ -void User::RemoveMode(UserModeName Name) +void User::RemoveMode(BotInfo *bi, UserModeName Name) { - RemoveMode(ModeManager::FindUserModeByName(Name)); + RemoveMode(bi, ModeManager::FindUserModeByName(Name)); } /** Remove a mode from the user + * @param bi The client setting the mode * @param ModeChar The mode char */ -void User::RemoveMode(char ModeChar) +void User::RemoveMode(BotInfo *bi, char ModeChar) { - RemoveMode(ModeManager::FindUserModeByChar(ModeChar)); + RemoveMode(bi, ModeManager::FindUserModeByChar(ModeChar)); } /** Set a string of modes on a user + * @param bi The client setting the mode * @param modes The modes */ -void User::SetModes(const std::string &modes, ...) +void User::SetModes(BotInfo *bi, const std::string &modes, ...) { char buf[BUFSIZE] = ""; va_list args; @@ -602,13 +609,13 @@ void User::SetModes(const std::string &modes, ...) if (add) { if (um->Type == MODE_PARAM && sep.GetToken(sbuf)) - this->SetMode(um, sbuf); + this->SetMode(bi, um, sbuf); else - this->SetMode(um); + this->SetMode(bi, um); } else if (add == 0) { - this->RemoveMode(um); + this->RemoveMode(bi, um); } } } @@ -1248,7 +1255,7 @@ void UserSetInternalModes(User *user, int ac, const char **av) break; case UMODE_REGISTERED: if (add && !nick_identified(user)) - user->RemoveMode(UMODE_REGISTERED); + user->RemoveMode(findbot(Config.s_NickServ), UMODE_REGISTERED); break; case UMODE_CLOAK: case UMODE_VHOST: |