Annotation of ircnowd/src/ngircd/conf.h, Revision 1.1
1.1 ! tomglok 1: /*
! 2: * ngIRCd -- The Next Generation IRC Daemon
! 3: * Copyright (c)2001-2013 Alexander Barton (alex@barton.de) and Contributors.
! 4: *
! 5: * This program is free software; you can redistribute it and/or modify
! 6: * it under the terms of the GNU General Public License as published by
! 7: * the Free Software Foundation; either version 2 of the License, or
! 8: * (at your option) any later version.
! 9: * Please read the file COPYING, README and AUTHORS for more information.
! 10: */
! 11:
! 12: #ifndef __conf_h__
! 13: #define __conf_h__
! 14:
! 15: /**
! 16: * @file
! 17: * Configuration management (header)
! 18: */
! 19:
! 20: #include <time.h>
! 21:
! 22: #include "defines.h"
! 23: #include "array.h"
! 24: #include "portab.h"
! 25: #include "tool.h"
! 26: #include "ng_ipaddr.h"
! 27: #include "proc.h"
! 28: #include "conf-ssl.h"
! 29:
! 30: /**
! 31: * Configured IRC operator.
! 32: * Please note that the name of the IRC operator and his nick have nothing to
! 33: * do with each other! The IRC operator is only identified by the name and
! 34: * password configured in this structure.
! 35: */
! 36: struct Conf_Oper {
! 37: char name[CLIENT_PASS_LEN]; /**< Name (ID) */
! 38: char pwd[CLIENT_PASS_LEN]; /**< Password */
! 39: char *mask; /**< Allowed host mask */
! 40: };
! 41:
! 42: /**
! 43: * Configured server.
! 44: * Peers to which this daemon should establish an outgoing server link must
! 45: * have set a port number; all other servers are allowed to connect to this one.
! 46: */
! 47: typedef struct _Conf_Server
! 48: {
! 49: char host[HOST_LEN]; /**< Hostname */
! 50: char name[CLIENT_ID_LEN]; /**< IRC client ID */
! 51: char pwd_in[CLIENT_PASS_LEN]; /**< Password which must be received */
! 52: char pwd_out[CLIENT_PASS_LEN]; /**< Password to send to the peer */
! 53: UINT16 port; /**< Server port to connect to */
! 54: int group; /**< Group ID of this server */
! 55: time_t lasttry; /**< Time of last connection attempt */
! 56: PROC_STAT res_stat; /**< Status of the resolver */
! 57: int flags; /**< Server flags */
! 58: CONN_ID conn_id; /**< ID of server connection or NONE */
! 59: ng_ipaddr_t bind_addr; /**< Source address to use for outgoing
! 60: connections */
! 61: ng_ipaddr_t dst_addr[2]; /**< List of addresses to connect to */
! 62: #ifdef SSL_SUPPORT
! 63: bool SSLConnect; /**< Establish connection using SSL? */
! 64: #endif
! 65: char svs_mask[CLIENT_ID_LEN]; /**< Mask of nicknames that should be
! 66: treated and counted as services */
! 67: } CONF_SERVER;
! 68:
! 69:
! 70: #ifdef SSL_SUPPORT
! 71: /** Configuration options required for SSL support */
! 72: struct SSLOptions {
! 73: char *KeyFile; /**< SSL key file */
! 74: char *CertFile; /**< SSL certificate file */
! 75: char *DHFile; /**< File containing DH parameters */
! 76: array ListenPorts; /**< Array of listening SSL ports */
! 77: array KeyFilePassword; /**< Key file password */
! 78: char *CipherList; /**< Set SSL cipher list to use */
! 79: };
! 80: #endif
! 81:
! 82:
! 83: /** Pre-defined channels */
! 84: struct Conf_Channel {
! 85: char name[CHANNEL_NAME_LEN]; /**< Name of the channel */
! 86: char *modes[512]; /**< Initial channel modes to evaluate */
! 87: char key[CLIENT_PASS_LEN]; /**< Channel key ("password", mode "k" ) */
! 88: char topic[COMMAND_LEN]; /**< Initial topic */
! 89: char keyfile[512]; /**< Path and name of channel key file */
! 90: unsigned long maxusers; /**< User limit for this channel, mode "l" */
! 91: unsigned int modes_num; /**< Number of channel modes to evaluate */
! 92: };
! 93:
! 94:
! 95: #define CONF_SFLAG_ONCE 1 /* Delete this entry after next disconnect */
! 96: #define CONF_SFLAG_DISABLED 2 /* This server configuration entry is disabled */
! 97:
! 98:
! 99: /** Name (ID, "nick") of this server */
! 100: GLOBAL char Conf_ServerName[CLIENT_ID_LEN];
! 101:
! 102: /** Server info text */
! 103: GLOBAL char Conf_ServerInfo[CLIENT_INFO_LEN];
! 104:
! 105: /** Global server passwort */
! 106: GLOBAL char Conf_ServerPwd[CLIENT_PASS_LEN];
! 107:
! 108: /** Administrative information */
! 109: GLOBAL char Conf_ServerAdmin1[CLIENT_INFO_LEN];
! 110: GLOBAL char Conf_ServerAdmin2[CLIENT_INFO_LEN];
! 111: GLOBAL char Conf_ServerAdminMail[CLIENT_INFO_LEN];
! 112:
! 113: /** Network name (optional, no spaces allowed) */
! 114: GLOBAL char Conf_Network[CLIENT_INFO_LEN];
! 115:
! 116: /** Message of the day (MOTD) of this server */
! 117: GLOBAL array Conf_Motd;
! 118:
! 119: /** Help text of this server */
! 120: GLOBAL array Conf_Helptext;
! 121:
! 122: /** Array of ports this server should listen on */
! 123: GLOBAL array Conf_ListenPorts;
! 124:
! 125: /** Address to which sockets should be bound to or empty (=all) */
! 126: GLOBAL char *Conf_ListenAddress;
! 127:
! 128: /** User and group ID this daemon should run with */
! 129: GLOBAL uid_t Conf_UID;
! 130: GLOBAL gid_t Conf_GID;
! 131:
! 132: /** The directory to chroot() into */
! 133: GLOBAL char Conf_Chroot[FNAME_LEN];
! 134:
! 135: /** Full path and name of a file to which the PID of daemon should be written */
! 136: GLOBAL char Conf_PidFile[FNAME_LEN];
! 137:
! 138: /** Timeout (in seconds) for PING commands */
! 139: GLOBAL int Conf_PingTimeout;
! 140:
! 141: /** Timeout (in seconds) for PONG replies */
! 142: GLOBAL int Conf_PongTimeout;
! 143:
! 144: /** Seconds between connection attempts to other servers */
! 145: GLOBAL int Conf_ConnectRetry;
! 146:
! 147: /** Array of configured IRC operators */
! 148: GLOBAL array Conf_Opers;
! 149:
! 150: /** Array of configured IRC servers */
! 151: GLOBAL CONF_SERVER Conf_Server[MAX_SERVERS];
! 152:
! 153: /** Array of pre-defined channels */
! 154: GLOBAL array Conf_Channels;
! 155:
! 156: /** String containing all locally allowed channel prefixes for new channels */
! 157: GLOBAL char Conf_AllowedChannelTypes[8];
! 158:
! 159: /** Flag indicating if IRC operators are allowed to always use MODE (true) */
! 160: GLOBAL bool Conf_OperCanMode;
! 161:
! 162: /** Flag indicating if IRC operators get AutoOp in persistent (+P) channels */
! 163: GLOBAL bool Conf_OperChanPAutoOp;
! 164:
! 165: /**
! 166: * If true, mask channel MODE commands of IRC operators to the server.
! 167: * Background: ircd2 will ignore channel MODE commands if an IRC operator
! 168: * gives channel operator privileges to someone without being a channel operator
! 169: * himself. This enables a workaround: it masks the MODE command as coming
! 170: * from the IRC server and not the IRC operator.
! 171: */
! 172: GLOBAL bool Conf_OperServerMode;
! 173:
! 174: /** Flag indicating if remote IRC operators are allowed to manage this server */
! 175: GLOBAL bool Conf_AllowRemoteOper;
! 176:
! 177: /** Cloaked hostname of the clients */
! 178: GLOBAL char Conf_CloakHost[CLIENT_ID_LEN];
! 179:
! 180: /** Cloaked hostname for clients that did +x */
! 181: GLOBAL char Conf_CloakHostModeX[CLIENT_ID_LEN];
! 182:
! 183: /** Salt for hostname hash for cloaked hostnames */
! 184: GLOBAL char Conf_CloakHostSalt[CLIENT_ID_LEN];
! 185:
! 186: /** Use nickname as user name? */
! 187: GLOBAL bool Conf_CloakUserToNick;
! 188:
! 189: /** Enable all DNS functions? */
! 190: GLOBAL bool Conf_DNS;
! 191:
! 192: /** Enable IDENT lookups, even when compiled with support for it */
! 193: GLOBAL bool Conf_Ident;
! 194:
! 195: /** Enable "more privacy" mode and "censor" some user-related information */
! 196: GLOBAL bool Conf_MorePrivacy;
! 197:
! 198: /** Enable "NOTICE *" messages on connect */
! 199: GLOBAL bool Conf_NoticeBeforeRegistration;
! 200:
! 201: /** Enable all usage of PAM, even when compiled with support for it */
! 202: GLOBAL bool Conf_PAM;
! 203:
! 204: /** Don't require all clients to send a password an to be PAM authenticated */
! 205: GLOBAL bool Conf_PAMIsOptional;
! 206:
! 207: /** The service name to use for PAM */
! 208: GLOBAL char Conf_PAMServiceName[MAX_PAM_SERVICE_NAME_LEN];
! 209:
! 210: /** Disable all CTCP commands except for /me ? */
! 211: GLOBAL bool Conf_ScrubCTCP;
! 212:
! 213: /** Default user modes for new local clients */
! 214: GLOBAL char Conf_DefaultUserModes[CLIENT_MODE_LEN];
! 215:
! 216: /*
! 217: * try to connect to remote systems using the ipv6 protocol,
! 218: * if they have an ipv6 address? (default yes)
! 219: */
! 220: GLOBAL bool Conf_ConnectIPv6;
! 221:
! 222: /** Try to connect to remote systems using the IPv4 protocol (true) */
! 223: GLOBAL bool Conf_ConnectIPv4;
! 224:
! 225: /** Idle timout (seconds), after which the daemon should exit */
! 226: GLOBAL int Conf_IdleTimeout;
! 227:
! 228: /** Maximum number of simultaneous connections to this server */
! 229: GLOBAL int Conf_MaxConnections;
! 230:
! 231: /** Maximum number of channels a user can join */
! 232: GLOBAL int Conf_MaxJoins;
! 233:
! 234: /** Maximum number of connections per IP address */
! 235: GLOBAL int Conf_MaxConnectionsIP;
! 236:
! 237: /** Maximum length of a nickname */
! 238: GLOBAL unsigned int Conf_MaxNickLength;
! 239:
! 240: /** Maximum number of channels returned to /list */
! 241: GLOBAL int Conf_MaxListSize;
! 242:
! 243: /** Maximium seconds to add per "penalty". -1 = unlimited. */
! 244: GLOBAL time_t Conf_MaxPenaltyTime;
! 245:
! 246: #ifndef STRICT_RFC
! 247:
! 248: /** Require "AUTH PING-PONG" on login */
! 249: GLOBAL bool Conf_AuthPing;
! 250:
! 251: #endif
! 252:
! 253: #ifdef SYSLOG
! 254:
! 255: /* Syslog "facility" */
! 256: GLOBAL int Conf_SyslogFacility;
! 257:
! 258: #endif
! 259:
! 260: GLOBAL void Conf_Init PARAMS((void));
! 261: GLOBAL bool Conf_Rehash PARAMS((void));
! 262: GLOBAL int Conf_Test PARAMS((void));
! 263:
! 264: GLOBAL void Conf_UnsetServer PARAMS(( CONN_ID Idx ));
! 265: GLOBAL bool Conf_SetServer PARAMS(( int ConfServer, CONN_ID Idx ));
! 266: GLOBAL int Conf_GetServer PARAMS(( CONN_ID Idx ));
! 267:
! 268: GLOBAL bool Conf_EnableServer PARAMS(( const char *Name, UINT16 Port ));
! 269: GLOBAL bool Conf_EnablePassiveServer PARAMS((const char *Name));
! 270: GLOBAL bool Conf_DisableServer PARAMS(( const char *Name ));
! 271: GLOBAL bool Conf_AddServer PARAMS(( const char *Name, UINT16 Port, const char *Host, const char *MyPwd, const char *PeerPwd ));
! 272:
! 273: GLOBAL bool Conf_NickIsService PARAMS((int ConfServer, const char *Nick));
! 274: GLOBAL bool Conf_NickIsBlocked PARAMS((const char *Nick));
! 275:
! 276: #ifdef SSL_SUPPORT
! 277: GLOBAL bool Conf_SSLInUse PARAMS((void));
! 278: #endif
! 279:
! 280: /* Password required by WEBIRC command */
! 281: GLOBAL char Conf_WebircPwd[CLIENT_PASS_LEN];
! 282:
! 283: #ifdef DEBUG
! 284: GLOBAL void Conf_DebugDump PARAMS((void));
! 285: #endif
! 286:
! 287:
! 288: #endif
! 289:
! 290:
! 291: /* -eof- */
CVSweb