commit cf7e3b1c0201ec298acb43e52dc1f05abcb8c80d from: Alexander Barton date: Sun Mar 27 18:56:50 2011 UTC Merge branch 'NoticeAuth' * NoticeAuth: Add documentation for "NoticeAuth" configuration option Configuration: move "NoticeAuth" to GLOBAL section New configuration option "NoticeAuth": send NOTICE AUTH on connect commit - 1b5d1064deb4a4e382be1132e2ef058a8dc415f6 commit + cf7e3b1c0201ec298acb43e52dc1f05abcb8c80d blob - e07b520544c5599d44ed14d04dc22de3f92e1d47 blob + f9c96562e45ac1ce9b6d215d3ac47531caf3a1b3 --- doc/sample-ngircd.conf.tmpl +++ doc/sample-ngircd.conf.tmpl @@ -154,6 +154,11 @@ # 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 @@ -251,6 +251,11 @@ Maximum length of an user nick name (Default: 9, as in 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 @@ -352,6 +352,7 @@ Conf_Test( void ) 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)); @@ -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; @@ -1192,6 +1194,11 @@ Handle_GLOBAL( int Line, char *Var, char *Arg ) 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 @@ -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) blob - 63093c25f64462b1468cc99bac2e4b7cea22e5a5 blob + 9d17a7382ff5283d34e5b0677790df1a5c2071f9 --- src/ngircd/conn.c +++ src/ngircd/conn.c @@ -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 }