Module: ngircd.git Branch: master Commit: 52f59149adf4dbbb7c917225a7c66ac4aa053700 URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=52f59...
Author: Gabor Adam Toth tg@tgbit.net Date: Mon Feb 14 16:16:07 2011 +0100
ClientHost setting
---
doc/sample-ngircd.conf.tmpl | 3 +++ src/ngircd/client.c | 6 +++++- src/ngircd/conf.c | 9 +++++++++ src/ngircd/conf.h | 3 +++ 4 files changed, 20 insertions(+), 1 deletions(-)
diff --git a/doc/sample-ngircd.conf.tmpl b/doc/sample-ngircd.conf.tmpl index 58696be..bb93501 100644 --- a/doc/sample-ngircd.conf.tmpl +++ b/doc/sample-ngircd.conf.tmpl @@ -24,6 +24,9 @@ # (".") and be unique in the IRC network. Required! Name = irc.the.net
+ # Set this hostname for every client instead of the real one + ;ClientHost = irc.the.net + # Info text of the server. This will be shown by WHOIS and # LINKS requests for example. Info = Server Info Text diff --git a/src/ngircd/client.c b/src/ngircd/client.c index 0bfe73d..11decc8 100644 --- a/src/ngircd/client.c +++ b/src/ngircd/client.c @@ -319,7 +319,11 @@ Client_SetHostname( CLIENT *Client, const char *Hostname ) assert( Client != NULL ); assert( Hostname != NULL );
- strlcpy( Client->host, Hostname, sizeof( Client->host )); + if (strlen(Conf_ClientHost)) { + strlcpy( Client->host, Conf_ClientHost, sizeof( Client->host )); + } else { + strlcpy( Client->host, Hostname, sizeof( Client->host )); + } } /* Client_SetHostname */
diff --git a/src/ngircd/conf.c b/src/ngircd/conf.c index 3ff5ddd..622cb9f 100644 --- a/src/ngircd/conf.c +++ b/src/ngircd/conf.c @@ -295,6 +295,7 @@ Conf_Test( void )
puts( "[GLOBAL]" ); printf(" Name = %s\n", Conf_ServerName); + printf(" ClientHost = %s\n", Conf_ClientHost); printf(" Info = %s\n", Conf_ServerInfo); #ifndef PAM printf(" Password = %s\n", Conf_ServerPwd); @@ -590,6 +591,7 @@ Set_Defaults(bool InitServers) int i;
strcpy(Conf_ServerName, ""); + strcpy(Conf_ClientHost, ""); snprintf(Conf_ServerInfo, sizeof Conf_ServerInfo, "%s %s", PACKAGE_NAME, PACKAGE_VERSION); strcpy(Conf_ServerPwd, ""); @@ -970,6 +972,13 @@ Handle_GLOBAL( int Line, char *Var, char *Arg ) Config_Error_TooLong( Line, Var ); return; } + if( strcasecmp( Var, "ClientHost" ) == 0 ) { + /* Client hostname */ + len = strlcpy( Conf_ClientHost, Arg, sizeof( Conf_ClientHost )); + if (len >= sizeof( Conf_ClientHost )) + Config_Error_TooLong( Line, Var ); + return; + } if( strcasecmp( Var, "Info" ) == 0 ) { /* Info text of server */ len = strlcpy( Conf_ServerInfo, Arg, sizeof( Conf_ServerInfo )); diff --git a/src/ngircd/conf.h b/src/ngircd/conf.h index 8c6aea8..1747139 100644 --- a/src/ngircd/conf.h +++ b/src/ngircd/conf.h @@ -97,6 +97,9 @@ struct Conf_Channel { /** Name (ID, "nick") of this server */ GLOBAL char Conf_ServerName[CLIENT_ID_LEN];
+/** Hostname of the clients */ +GLOBAL char Conf_ClientHost[CLIENT_ID_LEN]; + /** Server info text */ GLOBAL char Conf_ServerInfo[CLIENT_INFO_LEN];
ngircd-commits@lists.barton.de