X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=src%2Fngircd%2Fconf.c;h=ef36a2fe5d1c1842c851624c5322c91979554084;hp=5f8bce5ddbad35586588454a9d9813a7cd63cbbc;hb=3f7caff630d3268beb657dfc0f2662fd5b567dcd;hpb=5545e1bebf31ddb9f89c80979c0be93e3fdf6f0c diff --git a/src/ngircd/conf.c b/src/ngircd/conf.c index 5f8bce5d..ef36a2fe 100644 --- a/src/ngircd/conf.c +++ b/src/ngircd/conf.c @@ -1,6 +1,6 @@ /* * ngIRCd -- The Next Generation IRC Daemon - * Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors. + * Copyright (c)2001-2019 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 @@ -364,7 +364,7 @@ Conf_Test( void ) ? (const char*) array_start(&Conf_Motd) : ""); } printf(" Network = %s\n", Conf_Network); - if (!Conf_PAM) + if (!Conf_PAM) printf(" Password = %s\n", Conf_ServerPwd); printf(" PidFile = %s\n", Conf_PidFile); printf(" Ports = "); @@ -388,6 +388,7 @@ Conf_Test( void ) printf(" MaxConnectionsIP = %d\n", Conf_MaxConnectionsIP); printf(" MaxJoins = %d\n", Conf_MaxJoins > 0 ? Conf_MaxJoins : -1); printf(" MaxNickLength = %u\n", Conf_MaxNickLength - 1); + printf(" MaxPenaltyTime = %ld\n", Conf_MaxPenaltyTime); printf(" MaxListSize = %d\n", Conf_MaxListSize); printf(" PingTimeout = %d\n", Conf_PingTimeout); printf(" PongTimeout = %d\n", Conf_PongTimeout); @@ -419,6 +420,7 @@ Conf_Test( void ) #ifdef PAM printf(" PAM = %s\n", yesno_to_str(Conf_PAM)); printf(" PAMIsOptional = %s\n", yesno_to_str(Conf_PAMIsOptional)); + printf(" PAMServiceName = %s\n", Conf_PAMServiceName); #endif #ifndef STRICT_RFC printf(" RequireAuthPing = %s\n", yesno_to_str(Conf_AuthPing)); @@ -710,7 +712,6 @@ Conf_NickIsService(int ConfServer, const char *Nick) /** * Check if the given nickname is blocked for "normal client" use. * - * @param ConfServer The server index or NONE to check all configured servers. * @param Nick The nickname to check. * @returns true if the given nickname belongs to an "IRC service". */ @@ -765,6 +766,7 @@ Set_Defaults(bool InitServers) Conf_MaxConnectionsIP = 5; Conf_MaxJoins = 10; Conf_MaxNickLength = CLIENT_NICK_LEN_DEFAULT; + Conf_MaxPenaltyTime = -1; Conf_MaxListSize = 100; Conf_PingTimeout = 120; Conf_PongTimeout = 20; @@ -807,6 +809,7 @@ Set_Defaults(bool InitServers) Conf_PAM = false; #endif Conf_PAMIsOptional = false; + strcpy(Conf_PAMServiceName, "ngircd"); Conf_ScrubCTCP = false; #ifdef SYSLOG #ifdef LOG_LOCAL5 @@ -843,7 +846,7 @@ no_listenports(void) * * This function is used to read the MOTD and help text file, for example. * - * @param filename Name of the file to read. + * @param Filename Name of the file to read. * @return true, when the file has been read in. */ static bool @@ -885,9 +888,9 @@ Read_TextFile(const char *Filename, const char *Name, array *Destination) * Please note that this function uses exit(1) on fatal errors and therefore * can result in ngIRCd terminating! * - * @param ngircd_starting Flag indicating if ngIRCd is starting or not. - * @returns true when the configuration file has been read - * successfully; false otherwise. + * @param IsStarting Flag indicating if ngIRCd is starting or not. + * @returns true when the configuration file has been read + * successfully; false otherwise. */ static bool Read_Config(bool TestOnly, bool IsStarting) @@ -899,6 +902,8 @@ Read_Config(bool TestOnly, bool IsStarting) FILE *fd; DIR *dh; + Log(LOG_INFO, "Using configuration file \"%s\" ...", NGIRCd_ConfFile); + /* Open configuration file */ fd = fopen( NGIRCd_ConfFile, "r" ); if( ! fd ) { @@ -1640,6 +1645,12 @@ Handle_LIMITS(const char *File, int Line, char *Var, char *Arg) Config_Error_NaN(File, Line, Var); return; } + if (strcasecmp(Var, "MaxPenaltyTime") == 0) { + Conf_MaxPenaltyTime = atol(Arg); + if (Conf_MaxPenaltyTime < -1) + Conf_MaxPenaltyTime = -1; /* "unlimited" */ + return; + } if (strcasecmp(Var, "PingTimeout") == 0) { Conf_PingTimeout = atoi(Arg); if (Conf_PingTimeout < 5) { @@ -1796,7 +1807,19 @@ Handle_OPTIONS(const char *File, int Line, char *Var, char *Arg) Conf_MorePrivacy = Check_ArgIsTrue(Arg); return; } - if (strcasecmp(Var, "NoticeBeforeRegistration") == 0 || strcasecmp(Var, "NoticeAuth") == 0) { + if (strcasecmp(Var, "NoticeAuth") == 0) { + /* + * TODO: This section and support for "NoticeAuth" variable + * could be removed starting with ngIRCd release 24 (one + * release after marking it "deprecated") ... + */ + Config_Error(LOG_WARNING, + "%s, line %d (section \"Options\"): \"%s\" is deprecated, please use \"NoticeBeforeRegistration\"!", + File, Line, Var); + Conf_NoticeBeforeRegistration = Check_ArgIsTrue(Arg); + return; + } + if (strcasecmp(Var, "NoticeBeforeRegistration") == 0) { Conf_NoticeBeforeRegistration = Check_ArgIsTrue(Arg); return; } @@ -1821,6 +1844,12 @@ Handle_OPTIONS(const char *File, int Line, char *Var, char *Arg) Conf_PAMIsOptional = Check_ArgIsTrue(Arg); return; } + if (strcasecmp(Var, "PAMServiceName") == 0) { + len = strlcpy(Conf_PAMServiceName, Arg, sizeof(Conf_PAMServiceName)); + if (len >= sizeof(Conf_PAMServiceName)) + Config_Error_TooLong(File, Line, Var); + return; + } if (strcasecmp(Var, "PredefChannelsOnly") == 0) { /* * TODO: This section and support for "PredefChannelsOnly" @@ -2205,7 +2234,8 @@ Validate_Config(bool Configtest, bool Rehash) break; } while (*(++ptr)); - if (!Conf_ServerName[0]) { + if (!Conf_ServerName[0] || !strchr(Conf_ServerName, '.')) + { /* No server name configured! */ config_valid = false; Config_Error(LOG_ALERT, @@ -2219,20 +2249,6 @@ Validate_Config(bool Configtest, bool Rehash) } } - if (Conf_ServerName[0] && !strchr(Conf_ServerName, '.')) { - /* No dot in server name! */ - config_valid = false; - Config_Error(LOG_ALERT, - "Invalid server name configured in \"%s\" (section 'Global': 'Name'): Dot missing!", - NGIRCd_ConfFile); - if (!Configtest) { - Config_Error(LOG_ALERT, - "%s exiting due to fatal errors!", - PACKAGE_NAME); - exit(1); - } - } - #ifdef STRICT_RFC if (!Conf_ServerAdminMail[0]) { /* No administrative contact configured! */ @@ -2262,6 +2278,11 @@ Validate_Config(bool Configtest, bool Rehash) "This server uses PAM, \"Password\" in [Global] section will be ignored!"); #endif + if (Conf_MaxPenaltyTime != -1) + Config_Error(LOG_WARNING, + "Maximum penalty increase ('MaxPenaltyTime') is set to %ld, this is not recommended!", + Conf_MaxPenaltyTime); + #ifdef DEBUG servers = servers_once = 0; for (i = 0; i < MAX_SERVERS; i++) {