New configuration option "Listen" to bind the server to a specific ip.
This commit is contained in:
parent
d8f3c2b42b
commit
e33ab90379
|
@ -12,6 +12,8 @@
|
|||
|
||||
ngIRCd CVS-HEAD
|
||||
|
||||
- Added new configuration variable "Listen" to bind all listening
|
||||
sockets of the server to a single IP address.
|
||||
- Suppress misleading error message of diff during make run.
|
||||
- Enhanced test-suite and made it work on GNU/Hurd.
|
||||
- Fixed minor typo in debug output :-)
|
||||
|
@ -464,4 +466,4 @@ ngIRCd 0.0.1, 31.12.2001
|
|||
|
||||
|
||||
--
|
||||
$Id: ChangeLog,v 1.210 2003/09/09 13:24:41 alex Exp $
|
||||
$Id: ChangeLog,v 1.211 2003/09/11 12:05:28 alex Exp $
|
||||
|
|
7
NEWS
7
NEWS
|
@ -10,6 +10,11 @@
|
|||
-- NEWS --
|
||||
|
||||
|
||||
ngIRCd CVS-HEAD
|
||||
|
||||
- Added new configuration variable "Listen" to bind all listening
|
||||
sockets of the server to a single IP address.
|
||||
|
||||
ngIRCd 0.7.1 (2003-07-18)
|
||||
|
||||
- Added support for GNU/Hurd.
|
||||
|
@ -165,4 +170,4 @@ ngIRCd 0.0.1, 31.12.2001
|
|||
|
||||
|
||||
--
|
||||
$Id: NEWS,v 1.57 2003/08/30 20:37:15 alex Exp $
|
||||
$Id: NEWS,v 1.58 2003/09/11 12:05:28 alex Exp $
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $Id: sample-ngircd.conf,v 1.22 2003/04/29 12:36:09 alex Exp $
|
||||
# $Id: sample-ngircd.conf,v 1.23 2003/09/11 12:05:28 alex Exp $
|
||||
|
||||
#
|
||||
# This is a sample configuration file for the ngIRCd, which must adept to
|
||||
|
@ -36,6 +36,10 @@
|
|||
# Ports on which the server should listen. There may be more than
|
||||
# one port, separated with ";". (Default: 6667)
|
||||
;Ports = 6667, 6668, 66694
|
||||
|
||||
# IP address on which the server should listen. (Default: empty,
|
||||
# so the server listens on all IP addresses of the system)
|
||||
;Listen = 1.2.3.4
|
||||
|
||||
# Text file with the "message of the day" (MOTD). This message will
|
||||
# be shown to all users connecting to the server:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
.\"
|
||||
.\" $Id: ngircd.conf.5,v 1.10 2003/05/02 20:51:42 alex Exp $
|
||||
.\" $Id: ngircd.conf.5,v 1.11 2003/09/11 12:05:28 alex Exp $
|
||||
.\"
|
||||
.TH ngircd.conf 5 "Mai 2003" ngircd "ngIRCd Manual"
|
||||
.SH NAME
|
||||
|
@ -67,6 +67,10 @@ command.
|
|||
Ports on which the server should listen. There may be more than one port,
|
||||
separated with ';'. Default: 6667.
|
||||
.TP
|
||||
\fBListen\fR
|
||||
The ip address on which the server should listen. Default is empty, so
|
||||
the server listens on all configured ip addresses and interfaces.
|
||||
.TP
|
||||
\fBMotdFile\fR
|
||||
Text file with the "message of the day" (MOTD). This message will be shown
|
||||
to all users connecting to the server.
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#include "portab.h"
|
||||
|
||||
static char UNUSED id[] = "$Id: conf.c,v 1.59 2003/04/29 12:36:09 alex Exp $";
|
||||
static char UNUSED id[] = "$Id: conf.c,v 1.60 2003/09/11 12:05:28 alex Exp $";
|
||||
|
||||
#include "imp.h"
|
||||
#include <assert.h>
|
||||
|
@ -120,6 +120,7 @@ Conf_Test( VOID )
|
|||
printf( "%u", Conf_ListenPorts[i] );
|
||||
}
|
||||
puts( "" );
|
||||
printf( " Listen = %s\n", Conf_ListenAddress );
|
||||
pwd = getpwuid( Conf_UID );
|
||||
if( pwd ) printf( " ServerUID = %s\n", pwd->pw_name );
|
||||
else printf( " ServerUID = %ld\n", (LONG)Conf_UID );
|
||||
|
@ -340,6 +341,7 @@ Set_Defaults( BOOLEAN InitServers )
|
|||
strlcat( Conf_MotdFile, MOTD_FILE, sizeof( Conf_MotdFile ));
|
||||
|
||||
Conf_ListenPorts_Count = 0;
|
||||
strcpy( Conf_ListenAddress, "" );
|
||||
|
||||
Conf_UID = Conf_GID = 0;
|
||||
|
||||
|
@ -699,6 +701,15 @@ Handle_GLOBAL( INT Line, CHAR *Var, CHAR *Arg )
|
|||
Conf_MaxJoins = atoi( Arg );
|
||||
return;
|
||||
}
|
||||
if( strcasecmp( Var, "Listen" ) == 0 )
|
||||
{
|
||||
/* IP-Address to bind sockets */
|
||||
if( strlcpy( Conf_ListenAddress, Arg, sizeof( Conf_ListenAddress )) >= sizeof( Conf_ListenAddress ))
|
||||
{
|
||||
Config_Error( LOG_WARNING, "%s, line %d: Value of \"Listen\" too long!", NGIRCd_ConfFile, Line );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Config_Error( LOG_ERR, "%s, line %d (section \"Global\"): Unknown variable \"%s\"!", NGIRCd_ConfFile, Line, Var );
|
||||
} /* Handle_GLOBAL */
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
* (at your option) any later version.
|
||||
* Please read the file COPYING, README and AUTHORS for more information.
|
||||
*
|
||||
* $Id: conf.h,v 1.26 2002/12/31 16:12:50 alex Exp $
|
||||
* $Id: conf.h,v 1.27 2003/09/11 12:05:28 alex Exp $
|
||||
*
|
||||
* Configuration management (header)
|
||||
*/
|
||||
|
@ -76,6 +76,9 @@ GLOBAL CHAR Conf_MotdFile[FNAME_LEN];
|
|||
GLOBAL UINT Conf_ListenPorts[MAX_LISTEN_PORTS];
|
||||
GLOBAL INT Conf_ListenPorts_Count;
|
||||
|
||||
/* Address to which the socket should be bound or empty (=all) */
|
||||
GLOBAL CHAR Conf_ListenAddress[16];
|
||||
|
||||
/* User and group ID the server should run with */
|
||||
GLOBAL UINT Conf_UID;
|
||||
GLOBAL UINT Conf_GID;
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
#include "portab.h"
|
||||
|
||||
static char UNUSED id[] = "$Id: conn.c,v 1.124 2003/08/30 20:28:54 alex Exp $";
|
||||
static char UNUSED id[] = "$Id: conn.c,v 1.125 2003/09/11 12:05:28 alex Exp $";
|
||||
|
||||
#include "imp.h"
|
||||
#include <assert.h>
|
||||
|
@ -236,6 +236,7 @@ Conn_NewListener( CONST UINT Port )
|
|||
/* Create new listening socket on specified port */
|
||||
|
||||
struct sockaddr_in addr;
|
||||
struct in_addr inaddr;
|
||||
INT sock;
|
||||
#ifdef RENDEZVOUS
|
||||
CHAR name[CLIENT_ID_LEN], *info;
|
||||
|
@ -243,9 +244,24 @@ Conn_NewListener( CONST UINT Port )
|
|||
|
||||
/* Server-"Listen"-Socket initialisieren */
|
||||
memset( &addr, 0, sizeof( addr ));
|
||||
memset( &inaddr, 0, sizeof( inaddr ));
|
||||
addr.sin_family = AF_INET;
|
||||
addr.sin_port = htons( Port );
|
||||
addr.sin_addr.s_addr = htonl( INADDR_ANY );
|
||||
if( Conf_ListenAddress[0] )
|
||||
{
|
||||
#ifdef HAVE_INET_ATON
|
||||
if( inet_aton( Conf_ListenAddress, &inaddr ) == 0 )
|
||||
#else
|
||||
inaddr.s_addr = inet_addr( Conf_ListenAddress );
|
||||
if( inaddr.s_addr == (unsigned)-1 )
|
||||
#endif
|
||||
{
|
||||
Log( LOG_CRIT, "Can't listen on %s:%u: can't convert ip address %s!", Conf_ListenAddress, Port, Conf_ListenAddress );
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else inaddr.s_addr = htonl( INADDR_ANY );
|
||||
addr.sin_addr = inaddr;
|
||||
|
||||
/* Socket erzeugen */
|
||||
sock = socket( PF_INET, SOCK_STREAM, 0);
|
||||
|
@ -279,7 +295,8 @@ Conn_NewListener( CONST UINT Port )
|
|||
|
||||
if( sock > Conn_MaxFD ) Conn_MaxFD = sock;
|
||||
|
||||
Log( LOG_INFO, "Now listening on port %d (socket %d).", Port, sock );
|
||||
if( Conf_ListenAddress[0]) Log( LOG_INFO, "Now listening on %s:%d (socket %d).", Conf_ListenAddress, Port, sock );
|
||||
else Log( LOG_INFO, "Now listening on 0.0.0.0:%d (socket %d).", Port, sock );
|
||||
|
||||
#ifdef RENDEZVOUS
|
||||
/* Get best server description text */
|
||||
|
|
Loading…
Reference in New Issue