mirror of
https://github.com/osmarks/ngircd.git
synced 2025-02-01 18:19:09 +00:00
add support for predefined-channel configuration of k and l modes
This commit is contained in:
parent
82aaffe55d
commit
1b852fce72
@ -12,6 +12,8 @@
|
|||||||
|
|
||||||
ngIRCd HEAD
|
ngIRCd HEAD
|
||||||
|
|
||||||
|
- Predefined Channel configuration now allows specification of channel key
|
||||||
|
(mode k) and maximum user count (mode l).
|
||||||
- When using epoll() IO interface, compile in the select() interface as
|
- When using epoll() IO interface, compile in the select() interface as
|
||||||
well and fall back to it when epoll() isn't available on runtime.
|
well and fall back to it when epoll() isn't available on runtime.
|
||||||
- New configure option "--without-select" to disable select() IO API
|
- New configure option "--without-select" to disable select() IO API
|
||||||
@ -682,4 +684,4 @@ ngIRCd 0.0.1, 31.12.2001
|
|||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
$Id: ChangeLog,v 1.312 2006/12/26 16:00:45 alex Exp $
|
$Id: ChangeLog,v 1.313 2006/12/29 14:09:48 fw Exp $
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# $Id: sample-ngircd.conf,v 1.38 2006/11/05 13:03:47 fw Exp $
|
# $Id: sample-ngircd.conf,v 1.39 2006/12/29 14:09:48 fw Exp $
|
||||||
|
|
||||||
#
|
#
|
||||||
# This is a sample configuration file for the ngIRCd, which must be adepted
|
# This is a sample configuration file for the ngIRCd, which must be adepted
|
||||||
@ -178,7 +178,13 @@
|
|||||||
;Topic = a great topic
|
;Topic = a great topic
|
||||||
|
|
||||||
# Initial channel modes
|
# Initial channel modes
|
||||||
;Modes = tn
|
;Modes = tnk
|
||||||
|
|
||||||
|
# initial channel password (mode k)
|
||||||
|
;Key = Secret
|
||||||
|
|
||||||
|
# maximum users per channel (mode l)
|
||||||
|
;MaxUsers = 23
|
||||||
|
|
||||||
[Channel]
|
[Channel]
|
||||||
# More [Channel] sections, if you like ...
|
# More [Channel] sections, if you like ...
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
.\"
|
.\"
|
||||||
.\" $Id: ngircd.conf.5.tmpl,v 1.1 2006/12/25 16:13:26 alex Exp $
|
.\" $Id: ngircd.conf.5.tmpl,v 1.2 2006/12/29 14:09:49 fw Exp $
|
||||||
.\"
|
.\"
|
||||||
.TH ngircd.conf 5 "August 2005" ngircd "ngIRCd Manual"
|
.TH ngircd.conf 5 "August 2005" ngircd "ngIRCd Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
@ -235,6 +235,12 @@ Topic for this channel
|
|||||||
.TP
|
.TP
|
||||||
\fBModes\fR
|
\fBModes\fR
|
||||||
Initial channel modes.
|
Initial channel modes.
|
||||||
|
.TP
|
||||||
|
\fBKey\fR
|
||||||
|
Sets initial channel key (only relevant if mode k is set)
|
||||||
|
.TP
|
||||||
|
\fBMaxUsers\fR
|
||||||
|
Set maximum user limit for this channel (only relevant if mode l is set)
|
||||||
.SH HINTS
|
.SH HINTS
|
||||||
It's wise to use "ngircd --configtest" to validate the configuration file
|
It's wise to use "ngircd --configtest" to validate the configuration file
|
||||||
after changing it. See
|
after changing it. See
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
|
|
||||||
static char UNUSED id[] = "$Id: channel.c,v 1.61 2006/12/07 22:23:39 fw Exp $";
|
static char UNUSED id[] = "$Id: channel.c,v 1.62 2006/12/29 14:09:50 fw Exp $";
|
||||||
|
|
||||||
#include "imp.h"
|
#include "imp.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@ -131,6 +131,9 @@ Channel_InitPredefined( void )
|
|||||||
while (*c)
|
while (*c)
|
||||||
Channel_ModeAdd(chan, *c++);
|
Channel_ModeAdd(chan, *c++);
|
||||||
|
|
||||||
|
Channel_SetKey(chan, Conf_Channel[i].key);
|
||||||
|
Channel_SetMaxUsers(chan, Conf_Channel[i].maxusers);
|
||||||
|
|
||||||
Log(LOG_INFO, "Created pre-defined channel \"%s\".",
|
Log(LOG_INFO, "Created pre-defined channel \"%s\".",
|
||||||
Conf_Channel[i].name );
|
Conf_Channel[i].name );
|
||||||
}
|
}
|
||||||
@ -145,7 +148,7 @@ Channel_Exit( void )
|
|||||||
{
|
{
|
||||||
CHANNEL *c, *c_next;
|
CHANNEL *c, *c_next;
|
||||||
CL2CHAN *cl2chan, *cl2chan_next;
|
CL2CHAN *cl2chan, *cl2chan_next;
|
||||||
|
|
||||||
/* Channel-Strukturen freigeben */
|
/* Channel-Strukturen freigeben */
|
||||||
c = My_Channels;
|
c = My_Channels;
|
||||||
while( c )
|
while( c )
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
|
|
||||||
static char UNUSED id[] = "$Id: conf.c,v 1.96 2006/11/20 19:32:07 fw Exp $";
|
static char UNUSED id[] = "$Id: conf.c,v 1.97 2006/12/29 14:09:50 fw Exp $";
|
||||||
|
|
||||||
#include "imp.h"
|
#include "imp.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@ -240,6 +240,8 @@ Conf_Test( void )
|
|||||||
puts( "[CHANNEL]" );
|
puts( "[CHANNEL]" );
|
||||||
printf( " Name = %s\n", Conf_Channel[i].name );
|
printf( " Name = %s\n", Conf_Channel[i].name );
|
||||||
printf( " Modes = %s\n", Conf_Channel[i].modes );
|
printf( " Modes = %s\n", Conf_Channel[i].modes );
|
||||||
|
printf( " Key = %s\n", Conf_Channel[i].key );
|
||||||
|
printf( " MaxUsers = %lu\n", Conf_Channel[i].maxusers );
|
||||||
|
|
||||||
topic = (char*)array_start(&Conf_Channel[i].topic);
|
topic = (char*)array_start(&Conf_Channel[i].topic);
|
||||||
printf( " Topic = %s\n\n", topic ? topic : "");
|
printf( " Topic = %s\n\n", topic ? topic : "");
|
||||||
@ -555,6 +557,8 @@ Read_Config( void )
|
|||||||
/* Initialize new channel structure */
|
/* Initialize new channel structure */
|
||||||
strcpy( Conf_Channel[Conf_Channel_Count].name, "" );
|
strcpy( Conf_Channel[Conf_Channel_Count].name, "" );
|
||||||
strcpy( Conf_Channel[Conf_Channel_Count].modes, "" );
|
strcpy( Conf_Channel[Conf_Channel_Count].modes, "" );
|
||||||
|
strcpy( Conf_Channel[Conf_Channel_Count].key, "" );
|
||||||
|
Conf_Channel[Conf_Channel_Count].maxusers = 0;
|
||||||
array_free(&Conf_Channel[Conf_Channel_Count].topic);
|
array_free(&Conf_Channel[Conf_Channel_Count].topic);
|
||||||
Conf_Channel_Count++;
|
Conf_Channel_Count++;
|
||||||
}
|
}
|
||||||
@ -968,6 +972,22 @@ Handle_CHANNEL( int Line, char *Var, char *Arg )
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( strcasecmp( Var, "Key" ) == 0 ) {
|
||||||
|
/* Initial Channel Key (mode k) */
|
||||||
|
len = strlcpy(Conf_Channel[chancount].key, Arg, sizeof(Conf_Channel[chancount].key));
|
||||||
|
if (len >= sizeof( Conf_Channel[chancount].key ))
|
||||||
|
Config_Error_TooLong(Line, Var);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( strcasecmp( Var, "MaxUsers" ) == 0 ) {
|
||||||
|
/* maximum user limit, mode l */
|
||||||
|
Conf_Channel[chancount].maxusers = (unsigned long) atol(Arg);
|
||||||
|
if (Conf_Channel[chancount].maxusers == 0)
|
||||||
|
Config_Error_NaN(Line, Var);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Config_Error( LOG_ERR, "%s, line %d (section \"Channel\"): Unknown variable \"%s\"!",
|
Config_Error( LOG_ERR, "%s, line %d (section \"Channel\"): Unknown variable \"%s\"!",
|
||||||
NGIRCd_ConfFile, Line, Var );
|
NGIRCd_ConfFile, Line, Var );
|
||||||
} /* Handle_CHANNEL */
|
} /* Handle_CHANNEL */
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
* Please read the file COPYING, README and AUTHORS for more information.
|
* Please read the file COPYING, README and AUTHORS for more information.
|
||||||
*
|
*
|
||||||
* $Id: conf.h,v 1.41 2006/11/05 13:03:48 fw Exp $
|
* $Id: conf.h,v 1.42 2006/12/29 14:09:50 fw Exp $
|
||||||
*
|
*
|
||||||
* Configuration management (header)
|
* Configuration management (header)
|
||||||
*/
|
*/
|
||||||
@ -49,6 +49,8 @@ typedef struct _Conf_Channel
|
|||||||
{
|
{
|
||||||
char name[CHANNEL_NAME_LEN]; /* Name of the channel */
|
char name[CHANNEL_NAME_LEN]; /* Name of the channel */
|
||||||
char modes[CHANNEL_MODE_LEN]; /* Initial channel modes */
|
char modes[CHANNEL_MODE_LEN]; /* Initial channel modes */
|
||||||
|
char key[CLIENT_PASS_LEN]; /* Channel key ("password", mode "k" ) */
|
||||||
|
unsigned long maxusers; /* maximum usercount for this channel, mode "l" */
|
||||||
array topic; /* Initial topic */
|
array topic; /* Initial topic */
|
||||||
} CONF_CHANNEL;
|
} CONF_CHANNEL;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user