repo: ngircd
action: commit
revision: 
path_from: 
revision_from: aa7db2c0e9e1112591cbdb3d346342d34ca21a6a:
path_to: 
revision_to: 
git.thebackupbox.net
ngircd
git clone git://git.thebackupbox.net/ngircd
commit aa7db2c0e9e1112591cbdb3d346342d34ca21a6a
Author: Christoph Biedl 
Date:   Sat Jun 9 01:55:22 2012 +0200

    Introduce new configuration option "CloakModeHost"

    This closes bug #124.

diff --git a/src/ngircd/client.c b/src/ngircd/client.c
index 1b356848090b835772db30921d8764c87da39869..
index ..9861a0dbb61962e5f6814377d1db21e79ad6f4e4 100644
--- a/src/ngircd/client.c
+++ b/src/ngircd/client.c
@@ -825,7 +825,8 @@ Client_MaskCloaked(CLIENT *Client)
 	    return Client_Mask(Client);

 	snprintf(Mask_Buffer, GETID_LEN, "%s!%s@%s",
-		 Client->id, Client->user, Client_ID(Client->introducer));
+		 Client->id, Client->user,
+		 *Conf_CloakModeHost ? Conf_CloakModeHost : Client_ID(Client->introducer));
 	return Mask_Buffer;
 } /* Client_MaskCloaked */

diff --git a/src/ngircd/conf.c b/src/ngircd/conf.c
index f274eb826391dd3c0975383f77c48963a64ef4c1..
index ..2a259eb43440d1c453190392ef890be49dfa9349 100644
--- a/src/ngircd/conf.c
+++ b/src/ngircd/conf.c
@@ -358,6 +358,7 @@ Conf_Test( void )
 	printf("  AllowRemoteOper = %s\n", yesno_to_str(Conf_AllowRemoteOper));
 	printf("  ChrootDir = %s\n", Conf_Chroot);
 	printf("  CloakHost = %s\n", Conf_CloakHost);
+	printf("  CloakModeHost = %s\n", Conf_CloakModeHost);
 	printf("  CloakUserToNick = %s\n", yesno_to_str(Conf_CloakUserToNick));
 #ifdef WANT_IPV6
 	printf("  ConnectIPv4 = %s\n", yesno_to_str(Conf_ConnectIPv6));
@@ -684,6 +685,7 @@ Set_Defaults(bool InitServers)
 #endif
 	strlcpy(Conf_Chroot, CHROOT_DIR, sizeof(Conf_Chroot));
 	strcpy(Conf_CloakHost, "");
+	strcpy(Conf_CloakModeHost, "");
 	Conf_CloakUserToNick = false;
 	Conf_ConnectIPv4 = true;
 #ifdef WANT_IPV6
@@ -1477,6 +1479,12 @@ Handle_OPTIONS(int Line, char *Var, char *Arg)
 			Config_Error_TooLong(Line, Var);
 		return;
 	}
+	if (strcasecmp(Var, "CloakModeHost") == 0) {
+		len = strlcpy(Conf_CloakModeHost, Arg, sizeof(Conf_CloakModeHost));
+		if (len >= sizeof(Conf_CloakModeHost))
+			Config_Error_TooLong(Line, Var);
+		return;
+	}
 	if (strcasecmp(Var, "CloakUserToNick") == 0) {
 		Conf_CloakUserToNick = Check_ArgIsTrue(Arg);
 		return;
diff --git a/src/ngircd/conf.h b/src/ngircd/conf.h
index be19afc692f000cb3a530f3f5468bfb03cf79c19..
index ..171a838a4c2d9d951e1182e0c56c5cbea0308220 100644
--- a/src/ngircd/conf.h
+++ b/src/ngircd/conf.h
@@ -166,6 +166,9 @@ GLOBAL bool Conf_AllowRemoteOper;
 /** Cloaked hostname of the clients */
 GLOBAL char Conf_CloakHost[CLIENT_ID_LEN];

+/** Cloaked hostname for clients that did +x */
+GLOBAL char Conf_CloakModeHost[CLIENT_ID_LEN];
+
 /** Use nick name as user name? */
 GLOBAL bool Conf_CloakUserToNick;

-----END OF PAGE-----