1 #ifndef INCLUDED_features_h 2 #define INCLUDED_features_h 3 /* 4 * IRC - Internet Relay Chat, include/features.h 5 * Copyright (C) 2000 Kevin L. Mitchell <klmitch@mit.edu> 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 2, or (at your option) 10 * any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 20 */ 21 /** @file 22 * @brief Public interfaces and declarations for dealing with configurable features. 23 * @version $Id$ 24 */ 25 26 struct Client; 27 struct StatDesc; 28 29 extern struct Client his; 30 31 /** Contains all feature settings for ircu. 32 * For documentation of each, see doc/readme.features. 33 */ 34 enum Feature { 35 /* Misc. features */ 36 FEAT_LOG, 37 FEAT_DOMAINNAME, 38 FEAT_RELIABLE_CLOCK, 39 FEAT_BUFFERPOOL, 40 FEAT_HAS_FERGUSON_FLUSHER, 41 FEAT_CLIENT_FLOOD, 42 FEAT_SERVER_PORT, 43 FEAT_NODEFAULTMOTD, 44 FEAT_MOTD_BANNER, 45 FEAT_PROVIDER, 46 FEAT_KILL_IPMISMATCH, 47 FEAT_IDLE_FROM_MSG, 48 FEAT_HUB, 49 FEAT_WALLOPS_OPER_ONLY, 50 FEAT_NODNS, 51 FEAT_RANDOM_SEED, 52 FEAT_DEFAULT_LIST_PARAM, 53 FEAT_NICKNAMEHISTORYLENGTH, 54 FEAT_HOST_HIDING, 55 FEAT_HIDDEN_HOST, 56 FEAT_HIDDEN_IP, 57 FEAT_CONNEXIT_NOTICES, 58 FEAT_OPLEVELS, 59 FEAT_ZANNELS, 60 FEAT_LOCAL_CHANNELS, 61 FEAT_TOPIC_BURST, 62 FEAT_DISABLE_GLINES, 63 64 /* features that probably should not be touched */ 65 FEAT_KILLCHASETIMELIMIT, 66 FEAT_MAXCHANNELSPERUSER, 67 FEAT_NICKLEN, 68 FEAT_AVBANLEN, 69 FEAT_MAXBANS, 70 FEAT_MAXSILES, 71 FEAT_HANGONGOODLINK, 72 FEAT_HANGONRETRYDELAY, 73 FEAT_CONNECTTIMEOUT, 74 FEAT_MAXIMUM_LINKS, 75 FEAT_PINGFREQUENCY, 76 FEAT_CONNECTFREQUENCY, 77 FEAT_DEFAULTMAXSENDQLENGTH, 78 FEAT_GLINEMAXUSERCOUNT, 79 FEAT_SOCKSENDBUF, 80 FEAT_SOCKRECVBUF, 81 FEAT_IPCHECK_CLONE_LIMIT, 82 FEAT_IPCHECK_CLONE_PERIOD, 83 FEAT_IPCHECK_48_CLONE_LIMIT, 84 FEAT_IPCHECK_48_CLONE_PERIOD, 85 FEAT_IPCHECK_CLONE_DELAY, 86 FEAT_CHANNELLEN, 87 88 /* Some misc. default paths */ 89 FEAT_MPATH, 90 FEAT_RPATH, 91 FEAT_PPATH, 92 93 /* Networking features */ 94 FEAT_TOS_SERVER, 95 FEAT_TOS_CLIENT, 96 FEAT_POLLS_PER_LOOP, 97 FEAT_IRCD_RES_RETRIES, 98 FEAT_IRCD_RES_TIMEOUT, 99 FEAT_AUTH_TIMEOUT, 100 FEAT_ANNOUNCE_INVITES, 101 102 /* features that affect all operators */ 103 FEAT_CONFIG_OPERCMDS, 104 105 /* HEAD_IN_SAND Features */ 106 FEAT_HIS_SNOTICES, 107 FEAT_HIS_SNOTICES_OPER_ONLY, 108 FEAT_HIS_DEBUG_OPER_ONLY, 109 FEAT_HIS_WALLOPS, 110 FEAT_HIS_MAP, 111 FEAT_HIS_LINKS, 112 FEAT_HIS_TRACE, 113 FEAT_HIS_STATS_a, 114 FEAT_HIS_STATS_c, 115 FEAT_HIS_STATS_d, 116 FEAT_HIS_STATS_e, 117 FEAT_HIS_STATS_f, 118 FEAT_HIS_STATS_g, 119 FEAT_HIS_STATS_i, 120 FEAT_HIS_STATS_j, 121 FEAT_HIS_STATS_J, 122 FEAT_HIS_STATS_k, 123 FEAT_HIS_STATS_l, 124 FEAT_HIS_STATS_L, 125 FEAT_HIS_STATS_M, 126 FEAT_HIS_STATS_m, 127 FEAT_HIS_STATS_o, 128 FEAT_HIS_STATS_p, 129 FEAT_HIS_STATS_q, 130 FEAT_HIS_STATS_R, 131 FEAT_HIS_STATS_r, 132 FEAT_HIS_STATS_t, 133 FEAT_HIS_STATS_T, 134 FEAT_HIS_STATS_u, 135 FEAT_HIS_STATS_U, 136 FEAT_HIS_STATS_v, 137 FEAT_HIS_STATS_w, 138 FEAT_HIS_STATS_W, 139 FEAT_HIS_STATS_x, 140 FEAT_HIS_STATS_y, 141 FEAT_HIS_STATS_z, 142 FEAT_HIS_STATS_IAUTH, 143 FEAT_HIS_WEBIRC, 144 FEAT_HIS_WHOIS_SERVERNAME, 145 FEAT_HIS_WHOIS_IDLETIME, 146 FEAT_HIS_WHOIS_LOCALCHAN, 147 FEAT_HIS_WHO_SERVERNAME, 148 FEAT_HIS_WHO_HOPCOUNT, 149 FEAT_HIS_MODEWHO, 150 FEAT_HIS_BANWHO, 151 FEAT_HIS_KILLWHO, 152 FEAT_HIS_REWRITE, 153 FEAT_HIS_REMOTE, 154 FEAT_HIS_NETSPLIT, 155 FEAT_HIS_SERVERNAME, 156 FEAT_HIS_SERVERINFO, 157 FEAT_HIS_URLSERVERS, 158 159 /* Misc. random stuff */ 160 FEAT_NETWORK, 161 FEAT_URL_CLIENTS, 162 FEAT_URLREG, 163 164 FEAT_LAST_F 165 }; 166 167 extern void feature_init(void); 168 169 extern int feature_set(struct Client* from, const char* const* fields, 170 int count); 171 extern int feature_reset(struct Client* from, const char* const* fields, 172 int count); 173 extern int feature_get(struct Client* from, const char* const* fields, 174 int count); 175 176 extern void feature_unmark(void); 177 extern void feature_mark(void); 178 179 extern void feature_report(struct Client* to, const struct StatDesc* sd, 180 char* param); 181 182 extern int feature_int(enum Feature feat); 183 extern int feature_bool(enum Feature feat); 184 extern const char *feature_str(enum Feature feat); 185 186 #endif /* INCLUDED_features_h */ 187