#include "portab.h"
-static char UNUSED id[] = "$Id: conf.c,v 1.67 2005/01/20 00:13:08 alex Exp $";
+static char UNUSED id[] = "$Id: conf.c,v 1.69 2005/03/02 16:07:31 alex Exp $";
#include "imp.h"
#include <assert.h>
printf( " AdminEMail = %s\n", Conf_ServerAdminMail );
printf( " MotdFile = %s\n", Conf_MotdFile );
printf( " MotdPhrase = %s\n", Conf_MotdPhrase );
- printf( " ChrootDir= %s\n", Conf_Chroot );
+ printf( " ChrootDir = %s\n", Conf_Chroot );
+ printf( " PidFile = %s\n", Conf_PidFile);
printf( " Ports = " );
for( i = 0; i < Conf_ListenPorts_Count; i++ )
{
puts( "[OPERATOR]" );
printf( " Name = %s\n", Conf_Oper[i].name );
printf( " Password = %s\n", Conf_Oper[i].pwd );
+ if ( Conf_Oper[i].mask ) printf( " Mask = %s\n", Conf_Oper[i].mask );
puts( "" );
}
strlcpy( Conf_Chroot, CHROOT_DIR, sizeof( Conf_Chroot ));
+ strlcpy( Conf_PidFile, PID_FILE, sizeof( Conf_PidFile ));
+
Conf_ListenPorts_Count = 0;
strcpy( Conf_ListenAddress, "" );
else
{
/* Initialize new operator structure */
- strcpy( Conf_Oper[Conf_Oper_Count].name, "" );
- strcpy( Conf_Oper[Conf_Oper_Count].pwd, "" );
+ Conf_Oper[Conf_Oper_Count].name[0] = '\0';
+ Conf_Oper[Conf_Oper_Count].pwd[0] = '\0';
+ if (Conf_Oper[Conf_Oper_Count].mask) {
+ free(Conf_Oper[Conf_Oper_Count].mask );
+ Conf_Oper[Conf_Oper_Count].mask = NULL;
+ }
Conf_Oper_Count++;
}
continue;
return;
}
+
+ if ( strcasecmp( Var, "PidFile" ) == 0 )
+ {
+ /* name of pidfile */
+ if( strlcpy( Conf_PidFile, Arg, sizeof( Conf_PidFile )) >= sizeof( Conf_PidFile ))
+ Config_Error_TooLong( Line, Var );
+
+ return;
+ }
+
if( strcasecmp( Var, "ServerUID" ) == 0 )
{
/* UID the daemon should switch to */
LOCAL VOID
Handle_OPERATOR( INT Line, CHAR *Var, CHAR *Arg )
{
+ unsigned int len;
assert( Line > 0 );
assert( Var != NULL );
assert( Arg != NULL );
if( strlcpy( Conf_Oper[Conf_Oper_Count - 1].pwd, Arg, sizeof( Conf_Oper[Conf_Oper_Count - 1].pwd )) >= sizeof( Conf_Oper[Conf_Oper_Count - 1].pwd )) Config_Error_TooLong( Line, Var );
return;
}
-
+ if( strcasecmp( Var, "Mask" ) == 0 )
+ {
+ if (Conf_Oper[Conf_Oper_Count - 1].mask) return; /* Hostname already configured */
+ len = strlen( Arg ) + 1;
+ Conf_Oper[Conf_Oper_Count - 1].mask = malloc( len );
+ if (! Conf_Oper[Conf_Oper_Count - 1].mask) {
+ Config_Error( LOG_ERR, "%s, line %d: Cannot allocate memory for operator mask: %s", NGIRCd_ConfFile, Line, strerror(errno) );
+ return;
+ }
+
+ strlcpy( Conf_Oper[Conf_Oper_Count - 1].mask, Arg, len);
+ return;
+ }
Config_Error( LOG_ERR, "%s, line %d (section \"Operator\"): Unknown variable \"%s\"!", NGIRCd_ConfFile, Line, Var );
} /* Handle_OPERATOR */