Add channel::ip_bans_through_vhost
This commit is contained in:
parent
d58de35b83
commit
dfeba65563
6 changed files with 15 additions and 2 deletions
|
@ -794,6 +794,9 @@ channel {
|
|||
* as PRIVMSG @#channel when sent to clients.
|
||||
*/
|
||||
opmod_send_statusmsg = no;
|
||||
|
||||
/* ip_bans_through_vhost: should channel IP bans see through dynamic spoofed hosts? */
|
||||
ip_bans_through_vhost = yes;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -285,6 +285,7 @@ struct config_channel_entry
|
|||
int displayed_usercount;
|
||||
int strip_topic_colors;
|
||||
int opmod_send_statusmsg;
|
||||
int ip_bans_through_vhost;
|
||||
};
|
||||
|
||||
struct config_server_hide
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include "client.h"
|
||||
#include "ircd.h"
|
||||
#include "match.h"
|
||||
#include "s_conf.h"
|
||||
#include "s_assert.h"
|
||||
|
||||
/*
|
||||
|
@ -622,6 +623,7 @@ int ircncmp(const char *s1, const char *s2, int n)
|
|||
|
||||
void matchset_for_client(struct Client *who, struct matchset *m)
|
||||
{
|
||||
bool hide_ip = IsIPSpoof(who) || (!ConfigChannel.ip_bans_through_vhost && IsDynSpoof(who));
|
||||
unsigned hostn = 0;
|
||||
unsigned ipn = 0;
|
||||
|
||||
|
@ -629,7 +631,7 @@ void matchset_for_client(struct Client *who, struct matchset *m)
|
|||
|
||||
sprintf(m->host[hostn++], "%s!%s@%s", who->name, who->username, who->host);
|
||||
|
||||
if (!IsIPSpoof(who))
|
||||
if (!hide_ip)
|
||||
{
|
||||
sprintf(m->ip[ipn++], "%s!%s@%s", who->name, who->username, who->sockhost);
|
||||
}
|
||||
|
@ -648,7 +650,7 @@ void matchset_for_client(struct Client *who, struct matchset *m)
|
|||
sprintf(m->host[hostn++], "%s!%s@%s", who->name, who->username, who->localClient->mangledhost);
|
||||
}
|
||||
}
|
||||
if (!IsIPSpoof(who) && GET_SS_FAMILY(&who->localClient->ip) == AF_INET6 &&
|
||||
if (!hide_ip && GET_SS_FAMILY(&who->localClient->ip) == AF_INET6 &&
|
||||
rb_ipv4_from_ipv6((const struct sockaddr_in6 *)&who->localClient->ip, &ip4))
|
||||
{
|
||||
int n = sprintf(m->ip[ipn++], "%s!%s@", who->name, who->username);
|
||||
|
|
|
@ -2744,6 +2744,7 @@ static struct ConfEntry conf_channel_table[] =
|
|||
{ "displayed_usercount", CF_INT, NULL, 0, &ConfigChannel.displayed_usercount },
|
||||
{ "strip_topic_colors", CF_YESNO, NULL, 0, &ConfigChannel.strip_topic_colors },
|
||||
{ "opmod_send_statusmsg", CF_YESNO, NULL, 0, &ConfigChannel.opmod_send_statusmsg },
|
||||
{ "ip_bans_through_vhost", CF_YESNO, NULL, 0, &ConfigChannel.ip_bans_through_vhost },
|
||||
{ "\0", 0, NULL, 0, NULL }
|
||||
};
|
||||
|
||||
|
|
|
@ -808,6 +808,7 @@ set_default_conf(void)
|
|||
ConfigChannel.disable_local_channels = false;
|
||||
ConfigChannel.displayed_usercount = 3;
|
||||
ConfigChannel.opmod_send_statusmsg = false;
|
||||
ConfigChannel.ip_bans_through_vhost= true;
|
||||
|
||||
ConfigChannel.autochanmodes = MODE_TOPICLIMIT | MODE_NOPRIVMSGS;
|
||||
|
||||
|
|
|
@ -581,6 +581,11 @@ static struct InfoStruct info_table[] = {
|
|||
"Send messages to @#channel if affected by +z",
|
||||
INFO_INTBOOL_YN(&ConfigChannel.opmod_send_statusmsg),
|
||||
},
|
||||
{
|
||||
"ip_bans_through_vhost",
|
||||
"Channel IP bans see through dynamic spoofs",
|
||||
INFO_INTBOOL_YN(&ConfigChannel.ip_bans_through_vhost),
|
||||
},
|
||||
{
|
||||
"hide_opers",
|
||||
"Hide all opers from unprivileged users",
|
||||
|
|
Loading…
Reference in a new issue