/************************************************************************
* IRC - Internet Relay Chat, include/userban.h
* Copyright (C) 2002 Lucas Madar
* and the DALnet coding team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 1, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* $Id: userban.h,v 1.4 2006/03/12 20:49:26 sheik Exp $ */
#define UBAN_LOCAL 0x001 /* formerly known as a K: or Z: line */
#define UBAN_NETWORK 0x002 /* formerly known as an autokill or an SZline */
#define UBAN_CONF 0x004 /* this ban came from ircd.conf */
#define UBAN_GLINE 0x0008 /* Like K-line but global. */
#define UBAN_HOST 0x010 /* this ban matches against the user's resolved host */
#define UBAN_IP 0x020 /* this ban matches against the user's IP address */
#define UBAN_SHUN 0x1000 /* shun */
#define UBAN_WILD 0x040 /* this ban has wildcards */
#define UBAN_CIDR4 0x080 /* this ban is an IPv4 CIDR ban */
#define UBAN_CIDR4BIG 0x100 /* this ban is an IPv4 CIDR ban for something greater than a /16 */
#define UBAN_WILDUSER 0x200 /* Username is just '*' */
#define UBAN_WILDHOST 0x400 /* Hostname is just '*.*' or '*' -- this ban is a user@* ban */
#define UBAN_TEMPORARY 0x800 /* userban is temporary */
#define SBAN_LOCAL 0x001
#define SBAN_NETWORK 0x002
#define SBAN_NICK 0x004 /* sban on the nick field */
#define SBAN_GCOS 0x008 /* sban on the gcos field */
#define SBAN_CHAN 0x010 /* sban on the chname field */
#define SBAN_WILD 0x020 /* sban mask contains wildcards */
#define SBAN_TEMPORARY 0x040 /* sban is temporary */
struct userBan {
unsigned int flags;
char *u; /* username */
char *h; /* host or IP or GECOS or NICK */
unsigned int cidr4ip; /* cidr4 IP */
unsigned int cidr4mask; /* cidr4 mask */
char *reason;
time_t timeset; /* time this ban was set */
time_t duration; /* length of this ban, in seconds, or 0xFFFFFFFF for permanent */
void *internal_ent; /* internal -- pointer to banlist entry tag */
};
struct simBan {
unsigned int flags;
char *mask;
char *reason;
time_t timeset;
time_t duration;
time_t autocap; /* maximum adjusted duration */
void *internal_ent; /* internal -- pointer to banlist entry tag */
};
void init_userban();
struct userBan *make_hostbased_ban(char *, char *);
void add_hostbased_userban(struct userBan *);
void remove_userban(struct userBan *);
void userban_free(struct userBan *);
struct userBan *check_userbanned(aClient *, unsigned int, unsigned int);
struct userBan *find_userban_exact(struct userBan *, unsigned int);
void expire_userbans();
void remove_userbans_match_flags(unsigned int, unsigned int);
void report_userbans_match_flags(aClient *cptr, unsigned int, unsigned int);
int user_match_ban(aClient *, struct userBan *);
char *get_userban_host(struct userBan *, char *, int);
void userban_sweep(struct userBan *);
/* Simban Calls */
struct simBan *make_simpleban(unsigned int, char *);
void add_simban(struct simBan *);
void remove_simban(struct simBan *);
struct simBan *find_simban_exact(struct simBan *);
int user_match_simban(aClient *, struct simBan *);
struct simBan *check_mask_simbanned(char *, unsigned int);
void simban_free(struct simBan *);
void remove_simban(struct simBan *);
void remove_simbans_match_flags(unsigned int, unsigned int);
void remove_simbans_match_mask(unsigned int, char *, int);
void report_simbans_match_flags(aClient *, unsigned int, unsigned int);
void expire_simbans();
void send_simbans(aClient *, unsigned int);
void remove_simban(struct simBan *);
syntax highlighted by Code2HTML, v. 0.9.1