about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ngircd/client.c2
-rw-r--r--src/ngircd/conf.c124
-rw-r--r--src/ngircd/conf.h16
-rw-r--r--src/ngircd/conn.c4
-rw-r--r--src/ngircd/irc-login.c2
-rw-r--r--src/ngircd/rendezvous.c2
6 files changed, 109 insertions, 41 deletions
diff --git a/src/ngircd/client.c b/src/ngircd/client.c
index ecd1a7c5..737c0184 100644
--- a/src/ngircd/client.c
+++ b/src/ngircd/client.c
@@ -93,7 +93,7 @@ Client_Init( void )
 	This_Server->hops = 0;
 
 	gethostname( This_Server->host, CLIENT_HOST_LEN );
-	if (!Conf_NoDNS) {
+	if (Conf_DNS) {
 		h = gethostbyname( This_Server->host );
 		if (h) strlcpy(This_Server->host, h->h_name, sizeof(This_Server->host));
 	}
diff --git a/src/ngircd/conf.c b/src/ngircd/conf.c
index 4a255b26..b194d3ae 100644
--- a/src/ngircd/conf.c
+++ b/src/ngircd/conf.c
@@ -341,10 +341,10 @@ Conf_Test( void )
 	printf("  OperServerMode = %s\n", yesno_to_str(Conf_OperServerMode));
 	printf("  AllowRemoteOper = %s\n", yesno_to_str(Conf_AllowRemoteOper));
 	printf("  PredefChannelsOnly = %s\n", yesno_to_str(Conf_PredefChannelsOnly));
-	printf("  NoDNS = %s\n", yesno_to_str(Conf_NoDNS));
-	printf("  NoIdent = %s\n", yesno_to_str(Conf_NoIdent));
-	printf("  NoPAM = %s\n", yesno_to_str(Conf_NoPAM));
-	printf("  NoZeroConf = %s\n", yesno_to_str(Conf_NoZeroConf));
+	printf("  DNS = %s\n", yesno_to_str(Conf_DNS));
+	printf("  Ident = %s\n", yesno_to_str(Conf_Ident));
+	printf("  PAM = %s\n", yesno_to_str(Conf_PAM));
+	printf("  ZeroConf = %s\n", yesno_to_str(Conf_ZeroConf));
 
 #ifdef WANT_IPV6
 	printf("  ConnectIPv4 = %s\n", yesno_to_str(Conf_ConnectIPv6));
@@ -561,6 +561,27 @@ Conf_IsService(int ConfServer, const char *Nick)
 } /* Conf_IsService */
 
 
+static void
+Set_Defaults_Optional(void)
+{
+#ifdef IDENTAUTH
+	Conf_Ident = true;
+#else
+	Conf_Ident = false;
+#endif
+#ifdef PAM
+	Conf_PAM = true;
+#else
+	Conf_PAM = false;
+#endif
+#ifdef ZEROCONF
+	Conf_ZeroConf = true;
+#else
+	Conf_ZeroConf = false;
+#endif
+}
+
+
 /**
  * Initialize configuration settings with their default values.
  */
@@ -591,10 +612,7 @@ Set_Defaults(bool InitServers)
 	Conf_PingTimeout = 120;
 	Conf_PongTimeout = 20;
 	Conf_ConnectRetry = 60;
-	Conf_NoDNS = false;
-	Conf_NoIdent = false;
-	Conf_NoPAM = false;
-	Conf_NoZeroConf = false;
+	Conf_DNS = true;
 
 	Conf_Oper_Count = 0;
 	Conf_Channel_Count = 0;
@@ -619,6 +637,7 @@ Set_Defaults(bool InitServers)
 	Conf_SyslogFacility = 0;
 #endif
 #endif
+	Set_Defaults_Optional();
 
 	/* Initialize server configuration structures */
 	if (InitServers) {
@@ -873,6 +892,53 @@ Handle_MaxNickLength(int Line, const char *Arg)
 } /* Handle_MaxNickLength */
 
 
+static void
+WarnIdent(int Line)
+{
+#ifndef IDENTAUTH
+	if (Conf_Ident) {
+		/* user has enabled ident lookups explicitly, but ... */
+		Config_Error(LOG_WARNING,
+			"%s: line %d: Ident=True, but ngircd was built without IDENT support",
+			NGIRCd_ConfFile, Line);
+	}
+#endif
+}
+
+static bool
+CheckLegacyNoOption(const char *Var, const char *Arg)
+{
+	if( strcasecmp( Var, "NoDNS" ) == 0 ) {
+		Conf_DNS = !Check_ArgIsTrue( Arg );
+		return true;
+	}
+	if (strcasecmp(Var, "NoIdent") == 0) {
+		Conf_Ident = !Check_ArgIsTrue(Arg);
+		return true;
+	}
+	if(strcasecmp(Var, "NoPAM") == 0) {
+		Conf_PAM = !Check_ArgIsTrue(Arg);
+		return true;
+	}
+	if(strcasecmp(Var, "NoZeroConf") == 0) {
+		Conf_ZeroConf = !Check_ArgIsTrue(Arg);
+		return true;
+	}
+	return false;
+}
+
+const char *
+NoNo(const char *str)
+{
+	assert(strncasecmp("no", str, 2) == 0 && str[2]);
+	return str + 2;
+}
+
+static const char *
+InvertArg(const char *arg)
+{
+	return yesno_to_str(!Check_ArgIsTrue(arg));
+}
 
 static void
 Handle_GLOBAL( int Line, char *Var, char *Arg )
@@ -1036,32 +1102,34 @@ Handle_GLOBAL( int Line, char *Var, char *Arg )
 		Conf_PredefChannelsOnly = Check_ArgIsTrue( Arg );
 		return;
 	}
-	if( strcasecmp( Var, "NoDNS" ) == 0 ) {
-		/* don't do reverse dns lookups when clients connect? */
-		Conf_NoDNS = Check_ArgIsTrue( Arg );
+
+	if (CheckLegacyNoOption(Var, Arg)) {
+		Config_Error(LOG_WARNING, "%s, line %d: \"No\"-Prefix has been removed, use "
+				"\"%s = %s\" instead",
+					NGIRCd_ConfFile, Line, NoNo(Var), InvertArg(Arg));
+		if (strcasecmp(Var, "NoIdent") == 0)
+			WarnIdent(Line);
 		return;
 	}
-	if (strcasecmp(Var, "NoIdent") == 0) {
-		/* don't do IDENT lookups when clients connect? */
-		Conf_NoIdent = Check_ArgIsTrue(Arg);
-#ifndef IDENTAUTH
-		if (!Conf_NoIdent) {
-			/* user has enabled ident lookups explicitly, but ... */
-			Config_Error(LOG_WARNING,
-				"%s: line %d: NoIdent=False, but ngircd was built without IDENT support",
-				NGIRCd_ConfFile, Line);
-		}
-#endif
+	if( strcasecmp( Var, "DNS" ) == 0 ) {
+		/* do reverse dns lookups when clients connect? */
+		Conf_DNS = Check_ArgIsTrue( Arg );
 		return;
 	}
-	if(strcasecmp(Var, "NoPAM") == 0) {
-		/* don't use PAM library to authenticate users */
-		Conf_NoPAM = Check_ArgIsTrue(Arg);
+	if (strcasecmp(Var, "Ident") == 0) {
+		/* do IDENT lookups when clients connect? */
+		Conf_Ident = Check_ArgIsTrue(Arg);
+		WarnIdent(Line);
 		return;
 	}
-	if(strcasecmp(Var, "NoZeroConf") == 0) {
-		/* don't register services using ZeroConf */
-		Conf_NoZeroConf = Check_ArgIsTrue(Arg);
+	if(strcasecmp(Var, "PAM") == 0) {
+		/* use PAM library to authenticate users */
+		Conf_PAM = Check_ArgIsTrue(Arg);
+		return;
+	}
+	if(strcasecmp(Var, "ZeroConf") == 0) {
+		/* register services using ZeroConf */
+		Conf_ZeroConf = Check_ArgIsTrue(Arg);
 		return;
 	}
 #ifdef WANT_IPV6
diff --git a/src/ngircd/conf.h b/src/ngircd/conf.h
index 47a499ae..3cddbb4b 100644
--- a/src/ngircd/conf.h
+++ b/src/ngircd/conf.h
@@ -143,17 +143,17 @@ GLOBAL bool Conf_OperServerMode;
 /* Are remote IRC operators allowed to manage this server? */
 GLOBAL bool Conf_AllowRemoteOper;
 
-/* Disable all DNS functions? */
-GLOBAL bool Conf_NoDNS;
+/* Enable all DNS functions? */
+GLOBAL bool Conf_DNS;
 
-/* Disable IDENT lookups, even when compiled with support for it */
-GLOBAL bool Conf_NoIdent;
+/* Enable IDENT lookups, even when compiled with support for it */
+GLOBAL bool Conf_Ident;
 
-/* Disable all usage of PAM, even when compiled with support for it */
-GLOBAL bool Conf_NoPAM;
+/* Enable all usage of PAM, even when compiled with support for it */
+GLOBAL bool Conf_PAM;
 
-/* Disable service registration using "ZeroConf" */
-GLOBAL bool Conf_NoZeroConf;
+/* Enable service registration using "ZeroConf" */
+GLOBAL bool Conf_ZeroConf;
 
 /*
  * try to connect to remote systems using the ipv6 protocol,
diff --git a/src/ngircd/conn.c b/src/ngircd/conn.c
index 51ab8fd3..6a1c056e 100644
--- a/src/ngircd/conn.c
+++ b/src/ngircd/conn.c
@@ -1381,10 +1381,10 @@ New_Connection(int Sock)
 
 	identsock = new_sock;
 #ifdef IDENTAUTH
-	if (Conf_NoIdent)
+	if (!Conf_Ident)
 		identsock = -1;
 #endif
-	if (!Conf_NoDNS)
+	if (Conf_DNS)
 		Resolve_Addr(&My_Connections[new_sock].proc_stat, &new_addr,
 			     identsock, cb_Read_Resolver_Result);
 
diff --git a/src/ngircd/irc-login.c b/src/ngircd/irc-login.c
index 03fea99a..381dd201 100644
--- a/src/ngircd/irc-login.c
+++ b/src/ngircd/irc-login.c
@@ -778,7 +778,7 @@ Hello_User(CLIENT * Client)
 	assert(Client != NULL);
 	conn = Client_Conn(Client);
 
-	if (Conf_NoPAM) {
+	if (!Conf_PAM) {
 		/* Don't do any PAM authentication at all, instead emulate
 		 * the beahiour of the daemon compiled without PAM support:
 		 * because there can't be any "server password", all
diff --git a/src/ngircd/rendezvous.c b/src/ngircd/rendezvous.c
index c0c22eb7..056cb1e5 100644
--- a/src/ngircd/rendezvous.c
+++ b/src/ngircd/rendezvous.c
@@ -151,7 +151,7 @@ GLOBAL bool Rendezvous_Register( char *Name, char *Type, UINT16 Port )
 {
 	int i;
 
-	if (Conf_NoZeroConf)
+	if (!Conf_ZeroConf)
 		return true;
 
 	/* Search free port structure */