commit - 1b5d1064deb4a4e382be1132e2ef058a8dc415f6
commit + cf7e3b1c0201ec298acb43e52dc1f05abcb8c80d
blob - e07b520544c5599d44ed14d04dc22de3f92e1d47
blob + f9c96562e45ac1ce9b6d215d3ac47531caf3a1b3
--- doc/sample-ngircd.conf.tmpl
+++ doc/sample-ngircd.conf.tmpl
# maximum nick name length!
;MaxNickLength = 9
+ # Normally ngIRCd doesn't send any messages to a client until it is
+ # registered. Enable this option to let the daemon send "NOTICE AUTH"
+ # messages to clients while connecting.
+ ;NoticeAuth = no
+
# Set this hostname for every client instead of the real one.
# Please note: don't use the percentage sign ("%"), it is reserved for
# future extensions!
blob - e94b495faab79094f2a99eb6c875aa6d50a1f53a
blob + b2ce02caa9eb97d6595ab48342f03c72f1ab93d6
--- man/ngircd.conf.5.tmpl
+++ man/ngircd.conf.5.tmpl
note that all servers in an IRC network MUST use the same maximum nick name
length!
.TP
+\fBNoticeAuth\fR (boolean)
+Normally ngIRCd doesn't send any messages to a client until it is registered.
+Enable this option to let the daemon send "NOTICE AUTH" messages to clients
+while connecting. Default: no.
+.TP
\fBCloakHost\fR (string)
Set this hostname for every client instead of the real one. Default: empty,
don't change.
blob - 32461f3550ffb127332754e44ae0033bfbd73c86
blob + 568b9e7a9bb2d068de5a35399af2328799e702bf
--- src/ngircd/conf.c
+++ src/ngircd/conf.c
printf(" MaxConnectionsIP = %d\n", Conf_MaxConnectionsIP);
printf(" MaxJoins = %d\n", Conf_MaxJoins > 0 ? Conf_MaxJoins : -1);
printf(" MaxNickLength = %u\n", Conf_MaxNickLength - 1);
+ printf(" NoticeAuth = %s\n", yesno_to_str(Conf_NoticeAuth));
printf(" CloakHost = %s\n", Conf_CloakHost);
printf(" CloakUserToNick = %s\n\n", yesno_to_str(Conf_CloakUserToNick));
Conf_PongTimeout = 20;
Conf_ConnectRetry = 60;
Conf_DNS = true;
+ Conf_NoticeAuth = false;
Conf_Oper_Count = 0;
Conf_Channel_Count = 0;
Conf_MaxNickLength = Handle_MaxNickLength(Line, Arg);
return;
}
+ if(strcasecmp(Var, "NoticeAuth") == 0) {
+ /* send NOTICE AUTH messages to clients on connect */
+ Conf_NoticeAuth = Check_ArgIsTrue(Arg);
+ return;
+ }
if( strcasecmp( Var, "Listen" ) == 0 ) {
/* IP-Address to bind sockets */
blob - 305ccaa1ff8c36540253f6283b43266d16fc043f
blob + 1633bc998932abea1176bfefc4686f52ed07caf5
--- src/ngircd/conf.h
+++ src/ngircd/conf.h
/** 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)
blob - 63093c25f64462b1468cc99bac2e4b7cea22e5a5
blob + 9d17a7382ff5283d34e5b0677790df1a5c2071f9
--- src/ngircd/conn.c
+++ src/ngircd/conn.c
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;
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
}