commit - 617640e0a358dc29c5e4f82eb6b828030ef21670
commit + 6fdd3479f126a866c022c39dcd424d6042de6875
blob - a067ef72f6fda57488af438045cb8a0abc215e9f
blob + dd4113e48e83c25641d90c3695cf9ff47942baa4
--- src/ngircd/client.c
+++ src/ngircd/client.c
} /* Client_Hostname */
+/**
+ * Get potentially cloaked hostname of a client.
+ * If the client has not enabled cloaking, the real hostname is used.
+ * @param Client Pointer to client structure
+ * @return Pointer to client hostname
+ */
GLOBAL char *
+Client_HostnameCloaked(CLIENT *Client)
+{
+ assert(Client != NULL);
+ if (Client_HasMode(Client, 'x'))
+ return Client_ID(Client->introducer);
+ else
+ return Client_Hostname(Client);
+} /* Client_HostnameCloaked */
+
+
+GLOBAL char *
Client_Password( CLIENT *Client )
{
assert( Client != NULL );
} /* Client_Mask */
+/**
+ * Return ID of a client with cloaked hostname: "client!user@server-name"
+ * This client ID is used for IRC prefixes, for example.
+ * Please note that this function uses a global static buffer, so you can't
+ * nest invocations without overwriting erlier results!
+ * If the client has not enabled cloaking, the real hostname is used.
+ * @param Client Pointer to client structure
+ * @return Pointer to global buffer containing the client ID
+ */
+GLOBAL char *
+Client_MaskCloaked(CLIENT *Client)
+{
+ static char Mask_Buffer[GETID_LEN];
+
+ assert (Client != NULL);
+
+ /* Is the client using cloaking at all? */
+ if (!Client_HasMode(Client, 'x'))
+ return Client_Mask(Client);
+
+ snprintf(Mask_Buffer, GETID_LEN, "%s!%s@%s",
+ Client->id, Client->user, Client_ID(Client->introducer));
+ return Mask_Buffer;
+} /* Client_MaskCloaked */
+
+
GLOBAL CLIENT *
Client_Introducer( CLIENT *Client )
{
blob - bd000a564772f367ffb19a50b9722dc1277c8cd7
blob + 98a0d1a4e327011fa571154f9657c2143657a9f2
--- src/ngircd/client.h
+++ src/ngircd/client.h
GLOBAL CONN_ID Client_Conn PARAMS(( CLIENT *Client ));
GLOBAL char *Client_ID PARAMS(( CLIENT *Client ));
GLOBAL char *Client_Mask PARAMS(( CLIENT *Client ));
+GLOBAL char *Client_MaskCloaked PARAMS(( CLIENT *Client ));
GLOBAL char *Client_Info PARAMS(( CLIENT *Client ));
GLOBAL char *Client_User PARAMS(( CLIENT *Client ));
#ifdef PAM
GLOBAL char *Client_OrigUser PARAMS(( CLIENT *Client ));
#endif
GLOBAL char *Client_Hostname PARAMS(( CLIENT *Client ));
+GLOBAL char *Client_HostnameCloaked PARAMS(( CLIENT *Client ));
GLOBAL char *Client_Password PARAMS(( CLIENT *Client ));
GLOBAL char *Client_Modes PARAMS(( CLIENT *Client ));
GLOBAL char *Client_Flags PARAMS(( CLIENT *Client ));