X-Git-Url: https://jfr.im/git/irc/quakenet/snircd-patchqueue.git/blobdiff_plain/c8fc5f4b293a08d0a811e108b6dab6ad03f7dd55..cd0739301761e84c829aa3552585909c943efaca:/ischannelservice.patch diff --git a/ischannelservice.patch b/ischannelservice.patch index 49b6019..9f67309 100644 --- a/ischannelservice.patch +++ b/ischannelservice.patch @@ -4,15 +4,9 @@ IsRealChannelService() - client has usermode +k and is on a services server (+s Function ms_invite did not return an error when the source was a channel service, that should only be for a real channel service. -Some places the IsChannelService() check is not changed because it is changed in some of the -other patches later in the queue. - -TODO: keep the side effect of usermode +k that channels are hidden, or leave that soley to usermode +n? -That is, keep IsChannelService() in whois/who or use IsRealChannelService(). - -diff -r 979639f84630 include/client.h ---- a/include/client.h Fri Jan 30 15:56:19 2009 +0100 -+++ b/include/client.h Fri Jan 30 16:38:40 2009 +0100 +diff -r 48ace0dc0261 include/client.h +--- a/include/client.h Wed Mar 17 14:34:56 2010 +0100 ++++ b/include/client.h Wed Mar 17 14:50:51 2010 +0100 @@ -568,6 +568,8 @@ #define IsBurstOrBurstAck(x) (HasFlag(x, FLAG_BURST) || HasFlag(x, FLAG_BURST_ACK)) /** Return non-zero if the client has set mode +k (channel service). */ @@ -22,9 +16,9 @@ diff -r 979639f84630 include/client.h /** Return non-zero if the client's socket is disconnected. */ #define IsDead(x) HasFlag(x, FLAG_DEADSOCKET) /** Return non-zero if the client has set mode +d (deaf). */ -diff -r 979639f84630 ircd/channel.c ---- a/ircd/channel.c Fri Jan 30 15:56:19 2009 +0100 -+++ b/ircd/channel.c Fri Jan 30 16:38:40 2009 +0100 +diff -r 48ace0dc0261 ircd/channel.c +--- a/ircd/channel.c Wed Mar 17 14:34:56 2010 +0100 ++++ b/ircd/channel.c Wed Mar 17 14:50:51 2010 +0100 @@ -180,7 +180,7 @@ * however there are typically no more than 1000 people in a channel * at a time. @@ -34,7 +28,7 @@ diff -r 979639f84630 ircd/channel.c m = chptr->members; while (m) { assert(m->channel == chptr); -@@ -3190,7 +3190,7 @@ +@@ -3176,7 +3176,7 @@ * Allow +X'ed users to mess with +k'ed. * --Bigfoot */ @@ -43,7 +37,7 @@ diff -r 979639f84630 ircd/channel.c if (state->flags & MODE_PARSE_FORCE) /* it was forced */ sendto_opmask_butone(0, SNO_HACK4, "Deop of +k user on %H by %s", state->chptr, -@@ -3198,7 +3198,7 @@ +@@ -3184,7 +3184,7 @@ cli_name((cli_user(state->sptr))->server))); else if (MyUser(state->sptr) && state->flags & MODE_PARSE_SET && (state->sptr != state->cli_change[i].client)) { @@ -52,9 +46,66 @@ diff -r 979639f84630 ircd/channel.c send_reply(state->sptr, ERR_ISREALSERVICE, cli_name(state->cli_change[i].client), state->chptr->chname); -diff -r 979639f84630 ircd/m_invite.c ---- a/ircd/m_invite.c Fri Jan 30 15:56:19 2009 +0100 -+++ b/ircd/m_invite.c Fri Jan 30 16:38:40 2009 +0100 +@@ -3641,7 +3641,7 @@ + if (!(flags & (CHFL_ZOMBIE | CHFL_DELAYED))) + sendcmdto_channel_butserv_butone(jbuf->jb_source, CMD_PART, chan, NULL, 0, + ((flags & CHFL_BANNED) || ((chan->mode.mode & MODE_NOQUITPARTS) +- && !IsChannelService(member->user)) || !jbuf->jb_comment) ? ++ && !IsRealChannelService(member->user)) || !jbuf->jb_comment) ? + "%H" : "%H :%s", chan, jbuf->jb_comment); + else if (MyUser(jbuf->jb_source)) + sendcmdto_one(jbuf->jb_source, CMD_PART, jbuf->jb_source, +diff -r 48ace0dc0261 ircd/ircd_relay.c +--- a/ircd/ircd_relay.c Wed Mar 17 14:34:56 2010 +0100 ++++ b/ircd/ircd_relay.c Wed Mar 17 14:50:51 2010 +0100 +@@ -205,7 +205,7 @@ + * This first: Almost never a server/service + * Servers may have channel services, need to check for it here + */ +- if (client_can_send_to_channel(sptr, chptr, 1) || IsChannelService(sptr)) { ++ if (client_can_send_to_channel(sptr, chptr, 1) || IsRealChannelService(sptr)) { + sendcmdto_channel_butone(sptr, CMD_PRIVATE, chptr, cli_from(sptr), + SKIP_DEAF | SKIP_BURST, "%H :%s", chptr, text); + } +@@ -233,7 +233,7 @@ + * This first: Almost never a server/service + * Servers may have channel services, need to check for it here + */ +- if (client_can_send_to_channel(sptr, chptr, 1) || IsChannelService(sptr)) { ++ if (client_can_send_to_channel(sptr, chptr, 1) || IsRealChannelService(sptr)) { + sendcmdto_channel_butone(sptr, CMD_NOTICE, chptr, cli_from(sptr), + SKIP_DEAF | SKIP_BURST, "%H :%s", chptr, text); + } +@@ -290,7 +290,7 @@ + */ + if (!(acptr = FindUser(name)) || !MyUser(acptr) || + (!EmptyString(host) && 0 != match(host, cli_user(acptr)->host)) || +- !IsChannelService(acptr)) ++ !IsRealChannelService(acptr)) + { + /* + * By this stage we might as well not bother because they will +@@ -385,7 +385,7 @@ + send_reply(sptr, ERR_NOSUCHNICK, name); + return; + } +- if ((!IsChannelService(acptr) && ++ if ((!IsRealChannelService(acptr) && + check_target_limit(sptr, acptr, cli_name(acptr), 0)) || + is_silenced(sptr, acptr)) + return; +@@ -431,7 +431,7 @@ + + if (0 == (acptr = FindUser(name))) + return; +- if ((!IsChannelService(acptr) && ++ if ((!IsRealChannelService(acptr) && + check_target_limit(sptr, acptr, cli_name(acptr), 0)) || + is_silenced(sptr, acptr)) + return; +diff -r 48ace0dc0261 ircd/m_invite.c +--- a/ircd/m_invite.c Wed Mar 17 14:34:56 2010 +0100 ++++ b/ircd/m_invite.c Wed Mar 17 14:50:51 2010 +0100 @@ -271,7 +271,7 @@ } else if (IsBurstOrBurstAck(cptr)) return 0; @@ -64,9 +115,9 @@ diff -r 979639f84630 ircd/m_invite.c send_reply(sptr, ERR_NOTONCHANNEL, chptr->chname); return 0; } -diff -r 979639f84630 ircd/m_kick.c ---- a/ircd/m_kick.c Fri Jan 30 15:56:19 2009 +0100 -+++ b/ircd/m_kick.c Fri Jan 30 16:38:40 2009 +0100 +diff -r 48ace0dc0261 ircd/m_kick.c +--- a/ircd/m_kick.c Wed Mar 17 14:34:56 2010 +0100 ++++ b/ircd/m_kick.c Wed Mar 17 14:50:51 2010 +0100 @@ -136,17 +136,14 @@ * Allow +X'ed users to kick +k'ed, but not U-lined services. * --Bigfoot @@ -92,9 +143,9 @@ diff -r 979639f84630 ircd/m_kick.c } /* Prevent kicking opers from local channels -DM- */ -diff -r 979639f84630 ircd/m_kill.c ---- a/ircd/m_kill.c Fri Jan 30 15:56:19 2009 +0100 -+++ b/ircd/m_kill.c Fri Jan 30 16:38:40 2009 +0100 +diff -r 48ace0dc0261 ircd/m_kill.c +--- a/ircd/m_kill.c Wed Mar 17 14:34:56 2010 +0100 ++++ b/ircd/m_kill.c Wed Mar 17 14:50:51 2010 +0100 @@ -293,7 +293,7 @@ * Allow +X'ed users to kill +k'ed, but not U-lined services. * --Bigfoot @@ -104,35 +155,15 @@ diff -r 979639f84630 ircd/m_kill.c return send_reply(sptr, ERR_ISREALSERVICE, "KILL", cli_name(victim)); if (IsChannelService(victim) && !IsXtraOp(sptr) && !(victim==sptr)) -diff -r 979639f84630 ircd/m_whois.c ---- a/ircd/m_whois.c Fri Jan 30 15:56:19 2009 +0100 -+++ b/ircd/m_whois.c Fri Jan 30 16:38:40 2009 +0100 -@@ -143,8 +143,13 @@ - send_reply(sptr, RPL_WHOISUSER, name, user->username, user->host, - cli_info(acptr)); - -+ /* TODO: IsChannelService or IsRealChannelService? -+ * we have usermode +n to hide channels already, so could go with the IsReal.. version -+ * if an oper wants to hide channels too, they can set +n -+ * in that case also remove || (acptr==sptr) -+ */ - /* Display the channels this user is on. */ -- if ((!IsChannelService(acptr) && !IsNoChan(acptr)) || (acptr==sptr)) -+ if ((!IsRealChannelService(acptr) && !IsNoChan(acptr)) || (acptr==sptr)) - { - struct Membership* chan; - mlen = strlen(cli_name(&me)) + strlen(cli_name(sptr)) + 12 + strlen(name); -diff -r 979639f84630 ircd/whocmds.c ---- a/ircd/whocmds.c Fri Jan 30 15:56:19 2009 +0100 -+++ b/ircd/whocmds.c Fri Jan 30 16:38:40 2009 +0100 -@@ -94,8 +94,9 @@ - { - chan = find_channel_member(acptr, repchan); - } -+ /* TODO: use IsRealChannelService or IsChannelService? */ - else if ((!fields || (fields & (WHO_FIELD_CHA | WHO_FIELD_FLA))) -- && !IsChannelService(acptr) && !IsNoChan(acptr)) -+ && !IsRealChannelService(acptr) && !IsNoChan(acptr)) - { - for (chan = cli_user(acptr)->channel; chan; chan = chan->next_channel) - if (PubChannel(chan->channel) && +diff -r 48ace0dc0261 ircd/m_silence.c +--- a/ircd/m_silence.c Wed Mar 17 14:34:56 2010 +0100 ++++ b/ircd/m_silence.c Wed Mar 17 14:50:51 2010 +0100 +@@ -289,7 +289,7 @@ + /* See if the user is requesting a silence list. */ + acptr = sptr; + if (parc < 2 || EmptyString(parv[1]) || (acptr = FindUser(parv[1]))) { +- if (cli_user(acptr) && ((acptr == sptr) || IsChannelService(acptr))) { ++ if (cli_user(acptr) && ((acptr == sptr) || IsRealChannelService(acptr))) { + for (sile = cli_user(acptr)->silence; sile; sile = sile->next) { + send_reply(sptr, RPL_SILELIST, cli_name(acptr), + (sile->flags & BAN_EXCEPTION ? "~" : ""), sile->banstr);