New configuration option "NoticeAuth": send NOTICE AUTH on connect
When enabling "NoticeAuth" in the [Features] section, ngircd will send "NOTICE AUTH" messages on client connect like e.g. snircd (QuakeNet) does.
This commit is contained in:
parent
f1a4a4dc88
commit
d29e389779
|
@ -359,6 +359,7 @@ Conf_Test( void )
|
|||
printf(" DNS = %s\n", yesno_to_str(Conf_DNS));
|
||||
printf(" Ident = %s\n", yesno_to_str(Conf_Ident));
|
||||
printf(" PAM = %s\n", yesno_to_str(Conf_PAM));
|
||||
printf(" NoticeAuth = %s\n", yesno_to_str(Conf_NoticeAuth));
|
||||
puts("");
|
||||
|
||||
opers_puts();
|
||||
|
@ -614,6 +615,7 @@ Set_Defaults(bool InitServers)
|
|||
Conf_PongTimeout = 20;
|
||||
Conf_ConnectRetry = 60;
|
||||
Conf_DNS = true;
|
||||
Conf_NoticeAuth = false;
|
||||
|
||||
Conf_Oper_Count = 0;
|
||||
Conf_Channel_Count = 0;
|
||||
|
@ -1278,6 +1280,11 @@ Handle_FEATURES(int Line, char *Var, char *Arg)
|
|||
WarnPAM(Line);
|
||||
return;
|
||||
}
|
||||
if(strcasecmp(Var, "NoticeAuth") == 0) {
|
||||
/* send NOTICE AUTH messages to clients on connect */
|
||||
Conf_NoticeAuth = Check_ArgIsTrue(Arg);
|
||||
return;
|
||||
}
|
||||
|
||||
Config_Error(LOG_ERR,
|
||||
"%s, line %d (section \"Features\"): Unknown variable \"%s\"!",
|
||||
|
|
|
@ -178,6 +178,9 @@ GLOBAL bool Conf_Ident;
|
|||
/** Enable all usage of PAM, even when compiled with support for it */
|
||||
GLOBAL bool Conf_PAM;
|
||||
|
||||
/** Enable NOTICE AUTH messages on connect */
|
||||
GLOBAL bool Conf_NoticeAuth;
|
||||
|
||||
/*
|
||||
* try to connect to remote systems using the ipv6 protocol,
|
||||
* if they have an ipv6 address? (default yes)
|
||||
|
|
|
@ -1444,9 +1444,20 @@ New_Connection(int Sock)
|
|||
if (!Conf_Ident)
|
||||
identsock = -1;
|
||||
#endif
|
||||
if (Conf_DNS)
|
||||
if (Conf_DNS) {
|
||||
if (Conf_NoticeAuth) {
|
||||
#ifdef IDENTAUTH
|
||||
if (Conf_Ident)
|
||||
(void)Conn_WriteStr(new_sock,
|
||||
"NOTICE AUTH :*** Looking up your hostname and checking ident");
|
||||
else
|
||||
#endif
|
||||
(void)Conn_WriteStr(new_sock,
|
||||
"NOTICE AUTH :*** Looking up your hostname");
|
||||
}
|
||||
Resolve_Addr(&My_Connections[new_sock].proc_stat, &new_addr,
|
||||
identsock, cb_Read_Resolver_Result);
|
||||
}
|
||||
|
||||
Account_Connection();
|
||||
return new_sock;
|
||||
|
@ -2175,13 +2186,22 @@ cb_Read_Resolver_Result( int r_fd, UNUSED short events )
|
|||
strlcpy(My_Connections[i].host, readbuf,
|
||||
sizeof(My_Connections[i].host));
|
||||
Client_SetHostname(c, readbuf);
|
||||
if (Conf_NoticeAuth)
|
||||
(void)Conn_WriteStr(i,
|
||||
"NOTICE AUTH :*** Found your hostname");
|
||||
#ifdef IDENTAUTH
|
||||
++identptr;
|
||||
if (*identptr) {
|
||||
Log(LOG_INFO, "IDENT lookup for connection %d: \"%s\".", i, identptr);
|
||||
Client_SetUser(c, identptr, true);
|
||||
if (Conf_NoticeAuth)
|
||||
(void)Conn_WriteStr(i,
|
||||
"NOTICE AUTH :*** Got ident response");
|
||||
} else {
|
||||
Log(LOG_INFO, "IDENT lookup for connection %d: no result.", i);
|
||||
if (Conf_NoticeAuth && Conf_Ident)
|
||||
(void)Conn_WriteStr(i,
|
||||
"NOTICE AUTH :*** No ident response");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue