repo: ngircd action: commit revision: path_from: revision_from: 52f59149adf4dbbb7c917225a7c66ac4aa053700: path_to: revision_to:
commit 52f59149adf4dbbb7c917225a7c66ac4aa053700 Author: Gabor Adam TothDate: Mon Feb 14 16:16:07 2011 +0100 ClientHost setting diff --git a/doc/sample-ngircd.conf.tmpl b/doc/sample-ngircd.conf.tmpl
--- 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
--- 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
--- 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
--- 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];
-----END OF PAGE-----