[BACK]Return to conf.h CVS log [TXT][DIR] Up to [local] / ircnowd / src / ngircd

Annotation of ircnowd/src/ngircd/conf.h, Revision 1.1.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