X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=src%2Fngircd%2Fconf.h;h=0d2965c1f2059fa508ce3b5cb4c5fe3a0bb6acb7;hp=8c6aea8641194693d90ca0cac3362ecb454abab1;hb=HEAD;hpb=5555b6cc8612e08d21750af0cd9dadb1196ff115 diff --git a/src/ngircd/conf.h b/src/ngircd/conf.h index 8c6aea86..9378d17c 100644 --- a/src/ngircd/conf.h +++ b/src/ngircd/conf.h @@ -1,6 +1,6 @@ /* * ngIRCd -- The Next Generation IRC Daemon - * Copyright (c)2001-2010 Alexander Barton (alex@barton.de) + * Copyright (c)2001-2013 Alexander Barton (alex@barton.de) and Contributors. * * 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 @@ -29,7 +29,7 @@ /** * Configured IRC operator. - * Please note the the name of the IRC operaor and his nick have nothing to + * Please note that the name of the IRC operator and his nick have nothing to * do with each other! The IRC operator is only identified by the name and * password configured in this structure. */ @@ -61,8 +61,9 @@ typedef struct _Conf_Server ng_ipaddr_t dst_addr[2]; /**< List of addresses to connect to */ #ifdef SSL_SUPPORT bool SSLConnect; /**< Establish connection using SSL? */ + bool SSLVerify; /**< Verify server certificate using CA? */ #endif - char svs_mask[CLIENT_ID_LEN]; /**< Mask of nick names that should be + char svs_mask[CLIENT_ID_LEN]; /**< Mask of nicknames that should be treated and counted as services */ } CONF_SERVER; @@ -75,6 +76,9 @@ struct SSLOptions { char *DHFile; /**< File containing DH parameters */ array ListenPorts; /**< Array of listening SSL ports */ array KeyFilePassword; /**< Key file password */ + char *CipherList; /**< Set SSL cipher list to use */ + char *CAFile; /**< Trusted CA certificates file */ + char *CRLFile; /**< Certificate revocation file */ }; #endif @@ -82,11 +86,13 @@ struct SSLOptions { /** Pre-defined channels */ struct Conf_Channel { char name[CHANNEL_NAME_LEN]; /**< Name of the channel */ - char modes[CHANNEL_MODE_LEN]; /**< Initial channel modes */ + char *modes[512]; /**< Initial channel modes to evaluate */ char key[CLIENT_PASS_LEN]; /**< Channel key ("password", mode "k" ) */ char topic[COMMAND_LEN]; /**< Initial topic */ char keyfile[512]; /**< Path and name of channel key file */ + bool autojoin; /**< 1 to make all users autojoin this channel */ unsigned long maxusers; /**< User limit for this channel, mode "l" */ + unsigned int modes_num; /**< Number of channel modes to evaluate */ }; @@ -108,9 +114,15 @@ GLOBAL char Conf_ServerAdmin1[CLIENT_INFO_LEN]; GLOBAL char Conf_ServerAdmin2[CLIENT_INFO_LEN]; GLOBAL char Conf_ServerAdminMail[CLIENT_INFO_LEN]; +/** Network name (optional, no spaces allowed) */ +GLOBAL char Conf_Network[CLIENT_INFO_LEN]; + /** Message of the day (MOTD) of this server */ GLOBAL array Conf_Motd; +/** Help text of this server */ +GLOBAL array Conf_Helptext; + /** Array of ports this server should listen on */ GLOBAL array Conf_ListenPorts; @@ -145,16 +157,19 @@ GLOBAL CONF_SERVER Conf_Server[MAX_SERVERS]; /** Array of pre-defined channels */ GLOBAL array Conf_Channels; -/** Flag indicating if only pre-defined channels are allowed (true) or not */ -GLOBAL bool Conf_PredefChannelsOnly; +/** String containing all locally allowed channel prefixes for new channels */ +GLOBAL char Conf_AllowedChannelTypes[8]; /** Flag indicating if IRC operators are allowed to always use MODE (true) */ GLOBAL bool Conf_OperCanMode; +/** Flag indicating if IRC operators get AutoOp in persistent (+P) channels */ +GLOBAL bool Conf_OperChanPAutoOp; + /** * If true, mask channel MODE commands of IRC operators to the server. * Background: ircd2 will ignore channel MODE commands if an IRC operator - * gives chanel operator privileges to someone without being a channel operator + * gives channel operator privileges to someone without being a channel operator * himself. This enables a workaround: it masks the MODE command as coming * from the IRC server and not the IRC operator. */ @@ -163,15 +178,45 @@ GLOBAL bool Conf_OperServerMode; /** Flag indicating if remote IRC operators are allowed to manage this server */ GLOBAL bool Conf_AllowRemoteOper; +/** Cloaked hostname of the clients */ +GLOBAL char Conf_CloakHost[CLIENT_ID_LEN]; + +/** Cloaked hostname for clients that did +x */ +GLOBAL char Conf_CloakHostModeX[CLIENT_ID_LEN]; + +/** Salt for hostname hash for cloaked hostnames */ +GLOBAL char Conf_CloakHostSalt[CLIENT_ID_LEN]; + +/** Use nickname as user name? */ +GLOBAL bool Conf_CloakUserToNick; + /** Enable all DNS functions? */ GLOBAL bool Conf_DNS; /** Enable IDENT lookups, even when compiled with support for it */ GLOBAL bool Conf_Ident; +/** Enable "more privacy" mode and "censor" some user-related information */ +GLOBAL bool Conf_MorePrivacy; + +/** Enable "NOTICE *" messages on connect */ +GLOBAL bool Conf_NoticeBeforeRegistration; + /** Enable all usage of PAM, even when compiled with support for it */ GLOBAL bool Conf_PAM; +/** Don't require all clients to send a password an to be PAM authenticated */ +GLOBAL bool Conf_PAMIsOptional; + +/** The service name to use for PAM */ +GLOBAL char Conf_PAMServiceName[MAX_PAM_SERVICE_NAME_LEN]; + +/** Disable all CTCP commands except for /me ? */ +GLOBAL bool Conf_ScrubCTCP; + +/** Default user modes for new local clients */ +GLOBAL char Conf_DefaultUserModes[CLIENT_MODE_LEN]; + /* * try to connect to remote systems using the ipv6 protocol, * if they have an ipv6 address? (default yes) @@ -181,8 +226,11 @@ GLOBAL bool Conf_ConnectIPv6; /** Try to connect to remote systems using the IPv4 protocol (true) */ GLOBAL bool Conf_ConnectIPv4; +/** Idle timeout (seconds), after which the daemon should exit */ +GLOBAL int Conf_IdleTimeout; + /** Maximum number of simultaneous connections to this server */ -GLOBAL long Conf_MaxConnections; +GLOBAL int Conf_MaxConnections; /** Maximum number of channels a user can join */ GLOBAL int Conf_MaxJoins; @@ -190,9 +238,22 @@ GLOBAL int Conf_MaxJoins; /** Maximum number of connections per IP address */ GLOBAL int Conf_MaxConnectionsIP; -/** Maximum length of a nick name */ +/** Maximum length of a nickname */ GLOBAL unsigned int Conf_MaxNickLength; +/** Maximum number of channels returned to /list */ +GLOBAL int Conf_MaxListSize; + +/** Maximum seconds to add per "penalty". -1 = unlimited. */ +GLOBAL time_t Conf_MaxPenaltyTime; + +#ifndef STRICT_RFC + +/** Require "AUTH PING-PONG" on login */ +GLOBAL bool Conf_AuthPing; + +#endif + #ifdef SYSLOG /* Syslog "facility" */ @@ -205,7 +266,7 @@ GLOBAL bool Conf_Rehash PARAMS((void)); GLOBAL int Conf_Test PARAMS((void)); GLOBAL void Conf_UnsetServer PARAMS(( CONN_ID Idx )); -GLOBAL void Conf_SetServer PARAMS(( int ConfServer, CONN_ID Idx )); +GLOBAL bool Conf_SetServer PARAMS(( int ConfServer, CONN_ID Idx )); GLOBAL int Conf_GetServer PARAMS(( CONN_ID Idx )); GLOBAL bool Conf_EnableServer PARAMS(( const char *Name, UINT16 Port )); @@ -213,14 +274,17 @@ GLOBAL bool Conf_EnablePassiveServer PARAMS((const char *Name)); GLOBAL bool Conf_DisableServer PARAMS(( const char *Name )); GLOBAL bool Conf_AddServer PARAMS(( const char *Name, UINT16 Port, const char *Host, const char *MyPwd, const char *PeerPwd )); -GLOBAL bool Conf_IsService PARAMS((int ConfServer, const char *Nick)); +GLOBAL bool Conf_NickIsService PARAMS((int ConfServer, const char *Nick)); +GLOBAL bool Conf_NickIsBlocked PARAMS((const char *Nick)); + +#ifdef SSL_SUPPORT +GLOBAL bool Conf_SSLInUse PARAMS((void)); +#endif /* Password required by WEBIRC command */ GLOBAL char Conf_WebircPwd[CLIENT_PASS_LEN]; -#ifdef DEBUG GLOBAL void Conf_DebugDump PARAMS((void)); -#endif #endif