mirror of
https://github.com/osmarks/ngircd.git
synced 2025-04-13 14:23:18 +00:00
Various fixes and enhancements for the "Autojoin" patch
- Bring sample-ngircd.conf and ngircd.conf.5 description in line. - Fix configuration parsing, it always showed the 'Unknown variable "Autojoin"' error message, even when everything was perfectly fine. - And fix a build error (at least on macOS with Apple Clang 14): login.c:234:3: error: call to undeclared function 'IRC_JOIN'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] IRC_JOIN(Client, &Req); ^ The #include for the "irc.channel.h" header was missing! - Remove a unused variable that caused a compiler warning: login.c:222:12: warning: unused variable 'n' [-Wunused-variable] size_t i, n, channel_count = array_length(&Conf_Channels, sizeof(*conf_chan)); ^ - Add a explicit cast to fix a compiler warning: login.c:235:15: warning: assigning to 'char *' from 'const char[51]' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers] Req.argv[0] = conf_chan->name; ^ ~~~~~~~~~~~~~~~
This commit is contained in:
parent
cfd7d4288e
commit
30ba325dde
@ -391,12 +391,14 @@
|
||||
;Modes = +tnk mykey +l 5
|
||||
;Modes = +b nick!~user@bad.host.example.com
|
||||
|
||||
# Should ngIRCd automatically join ("autojoin") all users to this
|
||||
# channel on connect? Note: The users must have permissions to access
|
||||
# the channel, otherwise joining them will fail!
|
||||
;Autojoin = yes
|
||||
|
||||
# Key file, syntax for each line: "<user>:<nick>:<key>".
|
||||
# Default: none.
|
||||
;KeyFile = :ETCDIR:/#chan.key
|
||||
|
||||
# Autojoin - set to yes to force all users to join this channel on connect
|
||||
;Autojoin = yes
|
||||
|
||||
[Channel]
|
||||
# More [Channel] sections, if you like ...
|
||||
|
@ -518,7 +518,9 @@ This option can be specified multiple times, evaluated top to bottom.
|
||||
.RE
|
||||
.TP
|
||||
\fBAutojoin\fR (boolean)
|
||||
Forces users to join this channel on connect. Users must have access to the channel to make it work.
|
||||
Should ngIRCd automatically join ("autojoin") all users to this channel on
|
||||
connect? Note: The users must have permissions to access the channel, otherwise
|
||||
joining them will fail!
|
||||
.TP
|
||||
\fBKeyFile\fR (string)
|
||||
Path and file name of a "key file" containing individual channel keys for
|
||||
|
@ -2000,9 +2000,11 @@ Handle_CHANNEL(const char *File, int Line, char *Var, char *Arg)
|
||||
Config_Error_TooLong(File, Line, Var);
|
||||
return;
|
||||
}
|
||||
if( strcasecmp( Var, "Autojoin" ) == 0 )
|
||||
if( strcasecmp( Var, "Autojoin" ) == 0 ) {
|
||||
/* Check autojoin */
|
||||
chan->autojoin = Check_ArgIsTrue(Arg);
|
||||
return;
|
||||
}
|
||||
if( strcasecmp( Var, "Key" ) == 0 ) {
|
||||
/* Initial Channel Key (mode k) */
|
||||
len = strlcpy(chan->key, Arg, sizeof(chan->key));
|
||||
|
@ -31,6 +31,7 @@
|
||||
#include "log.h"
|
||||
#include "messages.h"
|
||||
#include "ngircd.h"
|
||||
#include "irc-channel.h"
|
||||
#include "irc-info.h"
|
||||
#include "irc-mode.h"
|
||||
#include "irc-write.h"
|
||||
@ -201,24 +202,25 @@ Login_User_PostAuth(CLIENT *Client)
|
||||
} else
|
||||
IRC_SetPenalty(Client, 1);
|
||||
|
||||
/* Autojoin clients to the channels */
|
||||
Login_Autojoin(Client);
|
||||
/* Autojoin clients to the channels */
|
||||
Login_Autojoin(Client);
|
||||
|
||||
return CONNECTED;
|
||||
}
|
||||
|
||||
/**
|
||||
* Autojoin clients to the channels set by administrator
|
||||
* If autojoin is not set in Config or the channel is not available for search - do nothing
|
||||
*
|
||||
* Do nothing if autojoin is not set in the configuration or the channel is not
|
||||
* available (any more).
|
||||
**/
|
||||
GLOBAL void
|
||||
Login_Autojoin(CLIENT *Client)
|
||||
{
|
||||
/** make an autojoin to each channel that is good for it **/
|
||||
REQUEST Req;
|
||||
const struct Conf_Channel *conf_chan;
|
||||
size_t i, n, channel_count = array_length(&Conf_Channels, sizeof(*conf_chan));
|
||||
size_t i, channel_count = array_length(&Conf_Channels, sizeof(*conf_chan));
|
||||
|
||||
conf_chan = array_start(&Conf_Channels);
|
||||
assert(channel_count == 0 || conf_chan != NULL);
|
||||
|
||||
@ -230,7 +232,7 @@ Login_Autojoin(CLIENT *Client)
|
||||
Req.prefix = Client_ID(Client_ThisServer());
|
||||
Req.command = "JOIN";
|
||||
Req.argc = 1;
|
||||
Req.argv[0] = conf_chan->name;
|
||||
Req.argv[0] = (char *)conf_chan->name;
|
||||
IRC_JOIN(Client, &Req);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user