1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-07-08 14:43:11 +02:00
Files
unrealircd/include/dynconf.h
T
Bram Matthys 6ec3822ce1 CmdoverrideAdd, DCCALLOW, allow dcc { }, umode +v change, register_user fix.
- Module coders: if CmdoverrideAdd() is called for an override that is already in place, it
  now sets MODERR_EXISTS as errorcode and returns NULL (previously it added duplicates).
  In the past module coders had many issues with PERM mods... you had to use weird tricks,
  but now you can (and should!) just override on INIT and on HOOKTYPE_REHASH_COMPLETE.
- Moved register_user declaration to h.h, updated call in m_pingpong.c (due new 'ip' field).
- Usermode +v ('receive dcc send rejection notices') is oper-only now for privacy reasons.
- Added dcc allow { }, which allows one to make exceptions over deny dcc { }.
- Added deny dcc::soft and allow dcc::soft item, if set to 'yes' it allows someone
  to explicitly override it per-person via /DCCALLOW (see next).
- Added DCCALLOW system, taken directly from bahamut.
  With this system you can block certain (or all) DCC SENDs and then allow the user to
  'override' this limit for every user he/she trusts via '/DCCALLOW +User'.
  This is an attempt to stop (or at least limit) the spreading of viruses/etc.
  See '/DCCALLOW HELP' for more info.
- Added example dccallow.conf which filters everything except some known
  'safe types' (jpg, jpeg, png, gif, etc). Note that the purpose of this file
  is NOT to get a complete list, rather to limit it to a few 'known safe' entries.
- Added set::maxdccallow: max number of entries of the DCCALLOW list (default: 10).
2004-06-10 02:26:32 +00:00

243 lines
7.4 KiB
C

/************************************************************************
* Unreal Internet Relay Chat Daemon, include/dynconf.h
* Copyright (C) 1999 Carsten Munk
*
* 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$
*/
#define DYNCONF_H
/* config level */
#define DYNCONF_CONF_VERSION "1.5"
#define DYNCONF_NETWORK_VERSION "2.2"
typedef struct zNetwork aNetwork;
struct zNetwork {
unsigned x_inah:1;
char *x_ircnetwork;
char *x_ircnet005;
char *x_defserv;
char *x_services_name;
char *x_oper_host;
char *x_admin_host;
char *x_locop_host;
char *x_sadmin_host;
char *x_netadmin_host;
char *x_coadmin_host;
char *x_hidden_host;
char *x_prefix_quit;
char *x_helpchan;
char *x_stats_server;
};
enum UHAllowed { UHALLOW_ALWAYS, UHALLOW_NOCHANS, UHALLOW_REJOIN, UHALLOW_NEVER };
struct ChMode {
long mode;
#ifdef EXTCMODE
long extmodes;
char *extparams[EXTCMODETABLESZ];
#endif
#ifdef NEWCHFLOODPROT
ChanFloodProt floodprot;
#else
unsigned short msgs;
unsigned short per;
unsigned char kmode;
#endif
};
typedef struct _OperStat {
struct _OperStat *prev, *next;
char *flag;
} OperStat;
typedef struct zConfiguration aConfiguration;
struct zConfiguration {
unsigned som:1;
unsigned hide_ulines:1;
unsigned flat_map:1;
unsigned allow_chatops:1;
unsigned webtv_support:1;
unsigned no_oper_hiding:1;
unsigned ident_check:1;
unsigned fail_oper_warn:1;
unsigned show_connect_info:1;
unsigned dont_resolve:1;
unsigned use_ban_version:1;
unsigned mkpasswd_for_everyone:1;
unsigned allow_part_if_shunned:1;
unsigned use_egd;
long host_timeout;
int host_retries;
char *name_server;
#ifdef THROTTLING
long throttle_period;
char throttle_count;
#endif
char *kline_address;
long conn_modes;
long oper_modes;
char *oper_snomask;
char *user_snomask;
char *auto_join_chans;
char *oper_auto_join_chans;
char *oper_only_stats;
OperStat *oper_only_stats_ext;
int maxchannelsperuser;
int maxdccallow;
int anti_spam_quit_message_time;
char *egd_path;
char *static_quit;
char *static_part;
#ifdef USE_SSL
char *x_server_cert_pem;
char *x_server_key_pem;
char *trusted_ca_file;
long ssl_options;
#elif defined(_WIN32)
void *bogus1, *bogus2, *bogus3;
long bogus4;
#endif
enum UHAllowed userhost_allowed;
char *restrict_usermodes;
char *restrict_channelmodes;
char *channel_command_prefix;
long unknown_flood_bantime;
long unknown_flood_amount;
struct ChMode modes_on_join;
#ifdef NO_FLOOD_AWAY
unsigned char away_count;
long away_period;
#endif
unsigned char nick_count;
long nick_period;
int ident_connect_timeout;
int ident_read_timeout;
long default_bantime;
int who_limit;
int silence_limit;
#ifdef NEWCHFLOODPROT
unsigned char modef_default_unsettime;
unsigned char modef_max_unsettime;
#endif
long ban_version_tkl_time;
long spamfilter_ban_time;
char *spamfilter_ban_reason;
char *spamfilter_virus_help_channel;
char spamfilter_vchan_deny;
SpamExcept *spamexcept;
char *spamexcept_line;
aNetwork network;
};
#ifndef DYNCONF_C
extern MODVAR aConfiguration iConf;
#endif
#define KLINE_ADDRESS iConf.kline_address
#define CONN_MODES iConf.conn_modes
#define OPER_MODES iConf.oper_modes
#define OPER_SNOMASK iConf.oper_snomask
#define CONNECT_SNOMASK iConf.user_snomask
#define SHOWOPERMOTD iConf.som
#define HIDE_ULINES iConf.hide_ulines
#define FLAT_MAP iConf.flat_map
#define ALLOW_CHATOPS iConf.allow_chatops
#define MAXCHANNELSPERUSER iConf.maxchannelsperuser
#define MAXDCCALLOW iConf.maxdccallow
#define WEBTV_SUPPORT iConf.webtv_support
#define NO_OPER_HIDING iConf.no_oper_hiding
#define DONT_RESOLVE iConf.dont_resolve
#define AUTO_JOIN_CHANS iConf.auto_join_chans
#define OPER_AUTO_JOIN_CHANS iConf.oper_auto_join_chans
#define HOST_TIMEOUT iConf.host_timeout
#define HOST_RETRIES iConf.host_retries
#define NAME_SERVER iConf.name_server
#define IDENT_CHECK iConf.ident_check
#define FAILOPER_WARN iConf.fail_oper_warn
#define SHOWCONNECTINFO iConf.show_connect_info
#define OPER_ONLY_STATS iConf.oper_only_stats
#define ANTI_SPAM_QUIT_MSG_TIME iConf.anti_spam_quit_message_time
#define USE_EGD iConf.use_egd
#define EGD_PATH iConf.egd_path
#define ircnetwork iConf.network.x_ircnetwork
#define ircnet005 iConf.network.x_ircnet005
#define defserv iConf.network.x_defserv
#define SERVICES_NAME iConf.network.x_services_name
#define oper_host iConf.network.x_oper_host
#define admin_host iConf.network.x_admin_host
#define locop_host iConf.network.x_locop_host
#define sadmin_host iConf.network.x_sadmin_host
#define netadmin_host iConf.network.x_netadmin_host
#define coadmin_host iConf.network.x_coadmin_host
#define techadmin_host iConf.network.x_techadmin_host
#define hidden_host iConf.network.x_hidden_host
#define helpchan iConf.network.x_helpchan
#define STATS_SERVER iConf.network.x_stats_server
#define iNAH iConf.network.x_inah
#define prefix_quit iConf.network.x_prefix_quit
#define SSL_SERVER_CERT_PEM (iConf.x_server_cert_pem ? iConf.x_server_cert_pem : "server.cert.pem")
#define SSL_SERVER_KEY_PEM (iConf.x_server_key_pem ? iConf.x_server_key_pem : "server.key.pem")
#define STATIC_QUIT iConf.static_quit
#define STATIC_PART iConf.static_part
#define UHOST_ALLOWED iConf.userhost_allowed
#define RESTRICT_USERMODES iConf.restrict_usermodes
#define RESTRICT_CHANNELMODES iConf.restrict_channelmodes
#ifdef THROTTLING
#define THROTTLING_PERIOD iConf.throttle_period
#define THROTTLING_COUNT iConf.throttle_count
#endif
#define USE_BAN_VERSION iConf.use_ban_version
#define UNKNOWN_FLOOD_BANTIME iConf.unknown_flood_bantime
#define UNKNOWN_FLOOD_AMOUNT iConf.unknown_flood_amount
#define MODES_ON_JOIN iConf.modes_on_join.mode
#ifdef NO_FLOOD_AWAY
#define AWAY_PERIOD iConf.away_period
#define AWAY_COUNT iConf.away_count
#endif
#define NICK_PERIOD iConf.nick_period
#define NICK_COUNT iConf.nick_count
#define IDENT_CONNECT_TIMEOUT iConf.ident_connect_timeout
#define IDENT_READ_TIMEOUT iConf.ident_read_timeout
#define MKPASSWD_FOR_EVERYONE iConf.mkpasswd_for_everyone
#define CHANCMDPFX iConf.channel_command_prefix
#define DEFAULT_BANTIME iConf.default_bantime
#define WHOLIMIT iConf.who_limit
#ifdef NEWCHFLOODPROT
#define MODEF_DEFAULT_UNSETTIME iConf.modef_default_unsettime
#define MODEF_MAX_UNSETTIME iConf.modef_max_unsettime
#endif
#define ALLOW_PART_IF_SHUNNED iConf.allow_part_if_shunned
#define BAN_VERSION_TKL_TIME iConf.ban_version_tkl_time
#define SILENCE_LIMIT (iConf.silence_limit ? iConf.silence_limit : 15)
#define SPAMFILTER_BAN_TIME iConf.spamfilter_ban_time
#define SPAMFILTER_BAN_REASON iConf.spamfilter_ban_reason
#define SPAMFILTER_VIRUSCHAN iConf.spamfilter_virus_help_channel
#define SPAMFILTER_VIRUSCHANDENY iConf.spamfilter_vchan_deny
#define SPAMFILTER_EXCEPT iConf.spamexcept_line