about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/sample-ngircd.conf.tmpl3
-rw-r--r--src/ngircd/client.c5
-rw-r--r--src/ngircd/conf.c7
-rw-r--r--src/ngircd/conf.h1
4 files changed, 16 insertions, 0 deletions
diff --git a/doc/sample-ngircd.conf.tmpl b/doc/sample-ngircd.conf.tmpl
index bb935016..7cfe08f7 100644
--- a/doc/sample-ngircd.conf.tmpl
+++ b/doc/sample-ngircd.conf.tmpl
@@ -27,6 +27,9 @@
 	# Set this hostname for every client instead of the real one
 	;ClientHost = irc.the.net
 
+	# Set every clients' user name to their nick name
+	;ClientUserNick = yes
+
 	# 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 11decc86..1a6ad931 100644
--- a/src/ngircd/client.c
+++ b/src/ngircd/client.c
@@ -335,6 +335,9 @@ Client_SetID( CLIENT *Client, const char *ID )
 	
 	strlcpy( Client->id, ID, sizeof( Client->id ));
 
+	if (Conf_ClientUserNick)
+		strlcpy( Client->user, ID, sizeof( Client->user ));
+
 	/* Hash */
 	Client->hash = Hash( Client->id );
 } /* Client_SetID */
@@ -348,6 +351,8 @@ Client_SetUser( CLIENT *Client, const char *User, bool Idented )
 	assert( Client != NULL );
 	assert( User != NULL );
 
+	if (Conf_ClientUserNick) return;
+
 	if (Idented) {
 		strlcpy(Client->user, User, sizeof(Client->user));
 	} else {
diff --git a/src/ngircd/conf.c b/src/ngircd/conf.c
index 622cb9f8..487c1eb5 100644
--- a/src/ngircd/conf.c
+++ b/src/ngircd/conf.c
@@ -296,6 +296,7 @@ Conf_Test( void )
 	puts( "[GLOBAL]" );
 	printf("  Name = %s\n", Conf_ServerName);
 	printf("  ClientHost = %s\n", Conf_ClientHost);
+	printf("  ClientUserNick = %s\n", yesno_to_str(Conf_ClientUserNick));
 	printf("  Info = %s\n", Conf_ServerInfo);
 #ifndef PAM
 	printf("  Password = %s\n", Conf_ServerPwd);
@@ -592,6 +593,7 @@ Set_Defaults(bool InitServers)
 
 	strcpy(Conf_ServerName, "");
 	strcpy(Conf_ClientHost, "");
+	Conf_ClientUserNick = false;
 	snprintf(Conf_ServerInfo, sizeof Conf_ServerInfo, "%s %s",
 		 PACKAGE_NAME, PACKAGE_VERSION);
 	strcpy(Conf_ServerPwd, "");
@@ -979,6 +981,11 @@ Handle_GLOBAL( int Line, char *Var, char *Arg )
 			Config_Error_TooLong( Line, Var );
 		return;
 	}
+	if( strcasecmp( Var, "ClientUserNick" ) == 0 ) {
+		/* Use client nick name as user name */
+		Conf_ClientUserNick = Check_ArgIsTrue( Arg );
+		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 1747139d..10b64076 100644
--- a/src/ngircd/conf.h
+++ b/src/ngircd/conf.h
@@ -99,6 +99,7 @@ GLOBAL char Conf_ServerName[CLIENT_ID_LEN];
 
 /** Hostname of the clients */
 GLOBAL char Conf_ClientHost[CLIENT_ID_LEN];
+GLOBAL bool Conf_ClientUserNick;
 
 /** Server info text */
 GLOBAL char Conf_ServerInfo[CLIENT_INFO_LEN];