X-Git-Url: http://git.pk910.de/?p=ircu2.10.12-pk.git;a=blobdiff_plain;f=ircd%2Fchannel.c;h=e22935c4c10c585a0c8ef348938a1a7dce68dd8b;hp=868a82f052c7d94496dff10b62c2815dafd3d239;hb=bb5d6a24f02155e2252474809cd5e7161fa29b93;hpb=21592a40b5608357580412667ce0c31b8a1ebc5f diff --git a/ircd/channel.c b/ircd/channel.c index 868a82f..e22935c 100644 --- a/ircd/channel.c +++ b/ircd/channel.c @@ -794,7 +794,8 @@ int client_can_send_to_channel(struct Client *cptr, struct Channel *chptr, int r */ if (!member) { if ((chptr->mode.mode & (MODE_NOPRIVMSGS|MODE_MODERATED)) || - ((chptr->mode.mode & MODE_REGONLY) && !IsAccount(cptr))) + ((chptr->mode.mode & MODE_REGONLY) && !IsAccount(cptr)) || + ((chptr->mode.mode & MODE_SSLCHAN) && !IsSSL(cptr))) return 0; else return !find_ban(cptr, chptr->banlist); @@ -822,6 +823,7 @@ const char* find_no_nickchange_channel(struct Client* cptr, const char *new_nick continue; if ((member->channel->mode.mode & MODE_MODERATED) || (member->channel->mode.mode & MODE_REGONLY && !IsAccount(cptr)) + || (member->channel->mode.mode & MODE_SSLCHAN && !IsSSL(cptr)) || is_banned(member) || (new_nick && is_banned_with_nick(member, new_nick))) return member->channel->chname; } @@ -889,6 +891,8 @@ void channel_modes(struct Client *cptr, char *mbuf, char *pbuf, int buflen, *mbuf++ = 'Q'; if (chptr->mode.mode & MODE_AUDITORIUM) *mbuf++ = 'u'; + if (chptr->mode.mode & MODE_SSLCHAN) + *mbuf++ = 'S'; if (chptr->mode.limit) { *mbuf++ = 'l'; ircd_snprintf(0, pbuf, buflen, "%u", chptr->mode.limit); @@ -1606,6 +1610,7 @@ modebuf_flush_int(struct ModeBuf *mbuf, int all) MODE_NONOTICE, 'N', MODE_QUARANTINE, 'Q', MODE_AUDITORIUM, 'u', + MODE_SSLCHAN, 'S', 0x0, 0x0 }; static ulong64 local_flags[] = { @@ -2047,7 +2052,7 @@ modebuf_mode(struct ModeBuf *mbuf, ulong64 mode) MODE_TOPICLIMIT | MODE_INVITEONLY | MODE_NOPRIVMSGS | MODE_REGONLY | MODE_DELJOINS | MODE_WASDELJOINS | MODE_REGISTERED | MODE_PERSIST | MODE_NOCOLOUR | MODE_NOCTCP | MODE_NOAMSGS | MODE_NONOTICE | - MODE_QUARANTINE | MODE_AUDITORIUM); + MODE_QUARANTINE | MODE_AUDITORIUM | MODE_SSLCHAN); if (!(mode & ~(MODE_ADD | MODE_DEL))) /* don't add empty modes... */ return; @@ -2225,6 +2230,7 @@ modebuf_extract(struct ModeBuf *mbuf, char *buf) MODE_ALTCHAN, 'F', MODE_ACCESS, 'a', MODE_AUDITORIUM, 'u', + MODE_SSLCHAN, 'S', MODE_NOFLOOD, 'f', 0x0, 0x0 }; @@ -3759,6 +3765,7 @@ mode_parse(struct ModeBuf *mbuf, struct Client *cptr, struct Client *sptr, MODE_ALTCHAN, 'F', MODE_ACCESS, 'a', MODE_AUDITORIUM, 'u', + MODE_SSLCHAN, 'S', MODE_NOFLOOD, 'f', MODE_ADD, '+', MODE_DEL, '-',