+Changes for 2.1.0:
+------------------
+Kobi Shmueli (11):
+ Fixed m_message() to compile with old gcc 2.x (i.e. for FreeBSD 4.x).
+ Let server admins (and u:lined servers) see more info with /info: OS, socket engine type, maxconnections, etc.
+ Changed STATS o/c/i output to be in human-readable format (#35).
+ Added user host-masking feature. When enabled, users' hostnames are masked by default and users can use umode -H to unmask themselves.
+ Added module hook for WHOIS.
+ Updated version.c.SH (Kobi --> Kobi_S & added RuneB & skill).
+ Added spamfilter feature (https://www.dal.net/kb/view.php?kb=411).
+ Added extended channel flags (https://www.dal.net/kb/view.php?kb=414) (#41).
+ Automatically build & install modules if they exist (#40).
+ Exempt IRC Operators from the auditorium mode (cmode +A).
+ Let IRC Operators (both local and global) see cmode +j's settings with /mode #channel from outside the channel in addition to +l (#45).
+
+Ryan Smith (6):
+ Allow U-lined servers to remove all network-wide bans in case of an emergency.
+ Allow bahamut to be compiled against OpenSSL versions >= 1.1.0.
+ Fixed compile warning.
+ Fixed modern compiler warnings and possible buffer overflows (#53).
+ Added support for kill -HUP to rehash SSL certificates, including adding proper sanity checks to all SSL rehashes.
+ Added support for ircd.crt to handle chain certificates.
+
+Ned T. Crigler (1):
+ Resend the nicklist to a client in auditorium mode (#50).
+
+Bradley Claghorn (3):
+ Updated opers.txt.
+ Default creation of ircd.smotd added.
+ Updated Makefile.in.
+
+Michael Wobst (1):
+ m_trace(): added missing argument to RPL_TRACESERVER required for the %ld conversion specifier (#32).
+
Changes for 2.0.7:
------------------
Kobi Shmueli (1):
memset(&sptr->ip, 0, sizeof(sptr->ip));
strcpy(sptr->hostip, "0.0.0.0");
strncpy(sptr->sockhost, Staff_Address, HOSTLEN + 1);
+#ifdef USER_HOSTMASKING
+ strncpyzt(sptr->user->mhost, mask_host(Staff_Address,0), HOSTLEN + 1);
+ if(uhm_type > 0) sptr->umode &= ~UMODE_H; /* It's already masked anyway */
+#endif
}
if(tmpptr)
strncpy(comment + 6, reason, TOPICLEN - 6);
comment[TOPICLEN] = 0;
#ifdef SPAMFILTER
- if((blocked = check_sf(sptr, reason, "quit", SF_CMD_QUIT, sptr->name)))
+ if(IsPerson(sptr))
{
- for(lp = sptr->user->channel; lp; lp = lpn)
+ if((blocked = check_sf(sptr, reason, "quit", SF_CMD_QUIT, sptr->name)))
+ {
+ for(lp = sptr->user->channel; lp; lp = lpn)
+ {
+ lpn = lp->next;
+ chptr = lp->value.chptr;
+ if(!(chptr->mode.mode & MODE_PRIVACY))
+ {
+ sendto_serv_butone(cptr, ":%s PART %s", parv[0], chptr->chname);
+ sendto_channel_butserv(chptr, sptr, ":%s PART %s", parv[0], chptr->chname);
+ remove_user_from_channel(sptr, chptr);
+ }
+ }
+ }
+ else
{
- lpn = lp->next;
- chptr = lp->value.chptr;
- if(!(chptr->mode.mode & MODE_PRIVACY))
+ for(lp = sptr->user->channel; lp; lp = lpn)
{
- sendto_serv_butone(cptr, ":%s PART %s", parv[0], chptr->chname);
- sendto_channel_butserv(chptr, sptr, ":%s PART %s", parv[0], chptr->chname);
- remove_user_from_channel(sptr, chptr);
+ lpn = lp->next;
+ chptr = lp->value.chptr;
+ if((chptr->xflags & XFLAG_NO_QUIT_MSG) && !is_xflags_exempted(sptr,chptr))
+ {
+ sendto_serv_butone(cptr, ":%s PART %s", parv[0], chptr->chname);
+ sendto_channel_butserv(chptr, sptr, ":%s PART %s", parv[0], chptr->chname);
+ remove_user_from_channel(sptr, chptr);
+ }
}
}
}
parv[0], sptr->user->username, sptr->user->host);
return 0;
}
- else
- {
- for(lp = sptr->user->channel; lp; lp = lpn)
- {
- lpn = lp->next;
- chptr = lp->value.chptr;
- if((chptr->xflags & XFLAG_NO_QUIT_MSG) && !is_xflags_exempted(sptr,chptr))
- {
- sendto_serv_butone(cptr, ":%s PART %s", parv[0], chptr->chname);
- sendto_channel_butserv(chptr, sptr, ":%s PART %s", parv[0], chptr->chname);
- remove_user_from_channel(sptr, chptr);
- }
- }
- }
/* attach our conf */
sptr->user->oper = aoper;