/*
* ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2019 Alexander Barton (alex@barton.de) and Contributors.
+ * Copyright (c)2001-2024 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
#include <grp.h>
#include <sys/types.h>
#include <dirent.h>
+#include <netdb.h>
#include "ngircd.h"
#include "conn.h"
#endif
printf(" DefaultUserModes = %s\n", Conf_DefaultUserModes);
printf(" DNS = %s\n", yesno_to_str(Conf_DNS));
-#ifdef IDENT
+#ifdef IDENTAUTH
printf(" Ident = %s\n", yesno_to_str(Conf_Ident));
#endif
printf(" IncludeDir = %s\n", Conf_IncludeDir);
/**
* Handle variable in [Global] configuration section.
*
- * @param Line Line numer in configuration file.
+ * @param Line Line number in configuration file.
* @param Var Variable name.
* @param Arg Variable argument.
*/
/**
* Handle variable in [Limits] configuration section.
*
- * @param Line Line numer in configuration file.
+ * @param Line Line number in configuration file.
* @param Var Variable name.
* @param Arg Variable argument.
*/
/**
* Handle variable in [Options] configuration section.
*
- * @param Line Line numer in configuration file.
+ * @param Line Line number in configuration file.
* @param Var Variable name.
* @param Arg Variable argument.
*/
/**
* Handle variable in [SSL] configuration section.
*
- * @param Line Line numer in configuration file.
+ * @param Line Line number in configuration file.
* @param Var Variable name.
* @param Arg Variable argument.
*/
/**
* Handle variable in [Operator] configuration section.
*
- * @param Line Line numer in configuration file.
+ * @param Line Line number in configuration file.
* @param Var Variable name.
* @param Arg Variable argument.
*/
/**
* Handle variable in [Server] configuration section.
*
- * @param Line Line numer in configuration file.
+ * @param Line Line number in configuration file.
* @param Var Variable name.
* @param Arg Variable argument.
*/
/**
* Handle variable in [Channel] configuration section.
*
- * @param Line Line numer in configuration file.
+ * @param Line Line number in configuration file.
* @param Var Variable name.
* @param Arg Variable argument.
*/
/* Validate configuration settings. */
int i, servers, servers_once;
+ struct hostent *h;
bool config_valid = true;
char *ptr;
NGIRCd_ConfFile);
}
+ if (!Conf_ServerName[0]) {
+ /* No server name configured, try to get a sane name from the
+ * host name. Note: the IRC server name MUST contain
+ * at least one dot, so the "node name" is not sufficient! */
+ gethostname(Conf_ServerName, sizeof(Conf_ServerName));
+ if (Conf_DNS) {
+ /* Try to get a proper host name ... */
+ h = gethostbyname(Conf_ServerName);
+ if (h)
+ strlcpy(Conf_ServerName, h->h_name,
+ sizeof(Conf_ServerName));
+ }
+ if (!strchr(Conf_ServerName, '.')) {
+ /* (Still) No dot in the name! */
+ strlcat(Conf_ServerName, ".host",
+ sizeof(Conf_ServerName));
+ }
+ Config_Error(LOG_WARNING,
+ "No server name configured, using host name \"%s\".",
+ Conf_ServerName);
+ }
+
/* Validate configured server name, see RFC 2812 section 2.3.1 */
ptr = Conf_ServerName;
do {
break;
} while (*(++ptr));
- if (!Conf_ServerName[0] || !strchr(Conf_ServerName, '.'))
- {
- /* No server name configured! */
+ if (!Conf_ServerName[0] || !strchr(Conf_ServerName, '.')) {
config_valid = false;
Config_Error(LOG_ALERT,
"No (valid) server name configured in \"%s\" (section 'Global': 'Name')!",