repo: ngircd
action: commit
revision: 
path_from: 
revision_from: 439c945d56ecba14cce789c5725575667c066502:
path_to: 
revision_to: 
git.thebackupbox.net
ngircd
git clone git://git.thebackupbox.net/ngircd
commit 439c945d56ecba14cce789c5725575667c066502
Author: Alexander Barton 
Date:   Fri Mar 7 14:35:52 2003 +0000

    Added support for TCP Wrappers.

diff --git a/src/ngircd/conn.c b/src/ngircd/conn.c
index e3f88011b178731f8a2e4c70ab2d82e4dfd09622..
index ..4b48ffb842288c62f1265ef3ea7507debb3e89e4 100644
--- a/src/ngircd/conn.c
+++ b/src/ngircd/conn.c
@@ -16,7 +16,7 @@

 #include "portab.h"

-static char UNUSED id[] = "$Id: conn.c,v 1.117 2003/02/23 12:04:05 alex Exp $";
+static char UNUSED id[] = "$Id: conn.c,v 1.118 2003/03/07 14:35:52 alex Exp $";

 #include "imp.h"
 #include 
@@ -40,7 +40,11 @@ static char UNUSED id[] = "$Id: conn.c,v 1.117 2003/02/23 12:04:05 alex Exp $";
 #endif

 #ifdef HAVE_STDINT_H
-#include 			/* u.a. fuer Mac OS X */
+#include 			/* e.g. for Mac OS X */
+#endif
+
+#ifdef USE_TCPWRAP
+#include 			/* for TCP Wrappers */
 #endif

 #include "defines.h"
@@ -87,6 +91,11 @@ LOCAL fd_set My_Listeners;
 LOCAL fd_set My_Sockets;
 LOCAL fd_set My_Connects;

+#ifdef USE_TCPWRAP
+INT allow_severity = LOG_INFO;
+INT deny_severity = LOG_ERR;
+#endif
+

 GLOBAL VOID
 Conn_Init( VOID )
@@ -836,6 +845,9 @@ New_Connection( INT Sock )
 	/* Neue Client-Verbindung von Listen-Socket annehmen und
 	 * CLIENT-Struktur anlegen. */

+#ifdef USE_TCPWRAP
+	struct request_info req;
+#endif
 	struct sockaddr_in new_addr;
 	INT new_sock, new_sock_len;
 	RES_STAT *s;
@@ -854,6 +866,18 @@ New_Connection( INT Sock )
 		Log( LOG_CRIT, "Can't accept connection: %s!", strerror( errno ));
 		return;
 	}
+	
+#ifdef USE_TCPWRAP
+	/* Validate socket using TCP Wrappers */
+	request_init( &req, RQ_DAEMON, PACKAGE, RQ_FILE, new_sock, RQ_CLIENT_SIN, &new_addr, NULL );
+	if( ! hosts_access( &req ))
+	{
+		/* Access denied! */
+		Log( deny_severity, "Refused connection from %s (by TCP Wrappers)!", inet_ntoa( new_addr.sin_addr ));
+		close( new_sock );
+		return;
+	}
+#endif

 	/* Socket initialisieren */
 	Init_Socket( new_sock );
diff --git a/src/ngircd/ngircd.c b/src/ngircd/ngircd.c
index 3b794b4a94df151fdb57a2aa710316df66d962b2..
index ..68c5282917c323b2cb032659b0683a521809411e 100644
--- a/src/ngircd/ngircd.c
+++ b/src/ngircd/ngircd.c
@@ -14,7 +14,7 @@

 #include "portab.h"

-static char UNUSED id[] = "$Id: ngircd.c,v 1.72 2003/02/23 12:04:05 alex Exp $";
+static char UNUSED id[] = "$Id: ngircd.c,v 1.73 2003/03/07 14:35:52 alex Exp $";

 #include "imp.h"
 #include 
@@ -369,6 +369,14 @@ NGIRCd_VersionAddition( VOID )
 	if( txt[0] ) strcat( txt, "+" );
 	strcat( txt, "ZLIB" );
 #endif
+#ifdef USE_TCPWRAP
+	if( txt[0] ) strcat( txt, "+" );
+	strcat( txt, "TCPWRAP" );
+#endif
+#ifdef RENDEZVOUS
+	if( txt[0] ) strcat( txt, "+" );
+	strcat( txt, "RENDEZVOUS" );
+#endif
 #ifdef DEBUG
 	if( txt[0] ) strcat( txt, "+" );
 	strcat( txt, "DEBUG" );
@@ -385,10 +393,6 @@ NGIRCd_VersionAddition( VOID )
 	if( txt[0] ) strcat( txt, "+" );
 	strcat( txt, "IRCPLUS" );
 #endif
-#ifdef RENDEZVOUS
-	if( txt[0] ) strcat( txt, "+" );
-	strcat( txt, "RENDEZVOUS" );
-#endif

 	if( txt[0] ) strlcat( txt, "-", sizeof( txt ));
 	strlcat( txt, TARGET_CPU, sizeof( txt ));

-----END OF PAGE-----