mirror of
https://github.com/osmarks/ngircd.git
synced 2025-10-28 20:47:38 +00:00
Implement new configuration option "Network"
The new configuration variable "Network" is used to set the (completely optional) "network name", to which this instance of the daemon belongs. When set, this name is used in the ISUPPORT(005) numeric which is sent to all clients connecting to the server after logging in. Closes bug #165.
This commit is contained in:
@@ -369,6 +369,7 @@ Conf_Test( void )
|
||||
printf(" MotdPhrase = %s\n", array_bytes(&Conf_Motd)
|
||||
? (const char*) array_start(&Conf_Motd) : "");
|
||||
}
|
||||
printf(" Network = %s\n", Conf_Network);
|
||||
#ifndef PAM
|
||||
printf(" Password = %s\n", Conf_ServerPwd);
|
||||
#endif
|
||||
@@ -749,6 +750,7 @@ Set_Defaults(bool InitServers)
|
||||
strcpy(Conf_ServerAdminMail, "");
|
||||
snprintf(Conf_ServerInfo, sizeof Conf_ServerInfo, "%s %s",
|
||||
PACKAGE_NAME, PACKAGE_VERSION);
|
||||
strcpy(Conf_Network, "");
|
||||
free(Conf_ListenAddress);
|
||||
Conf_ListenAddress = NULL;
|
||||
array_free(&Conf_ListenPorts);
|
||||
@@ -1409,6 +1411,7 @@ Handle_GLOBAL(const char *File, int Line, char *Var, char *Arg )
|
||||
struct group *grp;
|
||||
size_t len;
|
||||
const char *section;
|
||||
char *ptr;
|
||||
|
||||
assert(File != NULL);
|
||||
assert(Line > 0);
|
||||
@@ -1491,6 +1494,19 @@ Handle_GLOBAL(const char *File, int Line, char *Var, char *Arg )
|
||||
Using_MotdFile = false;
|
||||
return;
|
||||
}
|
||||
if (strcasecmp(Var, "Network") == 0) {
|
||||
len = strlcpy(Conf_Network, Arg, sizeof(Conf_Network));
|
||||
if (len >= sizeof(Conf_Network))
|
||||
Config_Error_TooLong(File, Line, Var);
|
||||
ptr = strchr(Conf_Network, ' ');
|
||||
if (ptr) {
|
||||
Config_Error(LOG_WARNING,
|
||||
"%s, line %d: \"Network\" can't contain spaces!",
|
||||
File, Line);
|
||||
*ptr = '\0';
|
||||
}
|
||||
return;
|
||||
}
|
||||
if(strcasecmp(Var, "Password") == 0) {
|
||||
len = strlcpy(Conf_ServerPwd, Arg, sizeof(Conf_ServerPwd));
|
||||
if (len >= sizeof(Conf_ServerPwd))
|
||||
|
||||
@@ -109,6 +109,9 @@ GLOBAL char Conf_ServerAdmin1[CLIENT_INFO_LEN];
|
||||
GLOBAL char Conf_ServerAdmin2[CLIENT_INFO_LEN];
|
||||
GLOBAL char Conf_ServerAdminMail[CLIENT_INFO_LEN];
|
||||
|
||||
/** Network name (optional, no spaces allowed) */
|
||||
GLOBAL char Conf_Network[CLIENT_INFO_LEN];
|
||||
|
||||
/** Message of the day (MOTD) of this server */
|
||||
GLOBAL array Conf_Motd;
|
||||
|
||||
|
||||
@@ -1539,6 +1539,10 @@ IRC_Send_NAMES(CLIENT * Client, CHANNEL * Chan)
|
||||
GLOBAL bool
|
||||
IRC_Send_ISUPPORT(CLIENT * Client)
|
||||
{
|
||||
if (Conf_Network[0] && !IRC_WriteStrClient(Client, RPL_ISUPPORTNET_MSG,
|
||||
Client_ID(Client),
|
||||
Conf_Network))
|
||||
return DISCONNECTED;
|
||||
if (!IRC_WriteStrClient(Client, RPL_ISUPPORT1_MSG, Client_ID(Client),
|
||||
CHANTYPES, CHANTYPES, Conf_MaxJoins))
|
||||
return DISCONNECTED;
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#define RPL_YOURHOST_MSG "002 %s :Your host is %s, running version ngircd-%s (%s/%s/%s)"
|
||||
#define RPL_CREATED_MSG "003 %s :This server has been started %s"
|
||||
#define RPL_MYINFO_MSG "004 %s %s ngircd-%s %s %s"
|
||||
#define RPL_ISUPPORTNET_MSG "005 %s NETWORK=%s :is my network name"
|
||||
#define RPL_ISUPPORT1_MSG "005 %s RFC2812 IRCD=ngIRCd CHARSET=UTF-8 CASEMAPPING=ascii PREFIX=(qaohv)~&@%%+ CHANTYPES=%s CHANMODES=beI,k,l,imMnOPQRstVz CHANLIMIT=%s:%d :are supported on this server"
|
||||
#define RPL_ISUPPORT2_MSG "005 %s CHANNELLEN=%d NICKLEN=%d TOPICLEN=%d AWAYLEN=%d KICKLEN=%d MODES=%d MAXLIST=beI:%d EXCEPTS=e INVEX=I PENALTY :are supported on this server"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user