X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=src%2Fngircd%2Fclient.c;h=1c7bd1ead0cc510a814d59f0c43d12c1e1bb65da;hp=8e1848df784281327834b4e248af8a83674e61db;hb=1f40776bc166ece8dad0d333905481aa28786cb5;hpb=b130b35f48d19450240748425e12d21f2c38350f diff --git a/src/ngircd/client.c b/src/ngircd/client.c index 8e1848df..1c7bd1ea 100644 --- a/src/ngircd/client.c +++ b/src/ngircd/client.c @@ -1,6 +1,6 @@ /* * ngIRCd -- The Next Generation IRC Daemon - * Copyright (c)2001-2013 Alexander Barton (alex@barton.de) and Contributors. + * Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -72,7 +72,7 @@ GLOBAL void Client_Init( void ) { struct hostent *h; - + This_Server = New_Client_Struct( ); if( ! This_Server ) { @@ -98,7 +98,7 @@ Client_Init( void ) Client_SetInfo( This_Server, Conf_ServerInfo ); My_Clients = This_Server; - + memset( &My_Whowas, 0, sizeof( My_Whowas )); } /* Client_Init */ @@ -111,7 +111,7 @@ Client_Exit( void ) if( NGIRCd_SignalRestart ) Client_Destroy( This_Server, "Server going down (restarting).", NULL, false ); else Client_Destroy( This_Server, "Server going down.", NULL, false ); - + cnt = 0; c = My_Clients; while(c) { @@ -228,7 +228,7 @@ GLOBAL void Client_Destroy( CLIENT *Client, const char *LogMsg, const char *FwdMsg, bool SendQuit ) { /* remove a client */ - + CLIENT *last, *c; char msg[COMMAND_LEN]; const char *txt; @@ -337,7 +337,11 @@ Client_SetHostname( CLIENT *Client, const char *Hostname ) assert(Client != NULL); assert(Hostname != NULL); - if (Conf_CloakHost[0]) { + /* Only cloak the hostmask if it has not yet been cloaked. + * The period or colon indicates it's still an IP address. + * An empty string means a rDNS lookup did not happen (yet). + */ + if (Conf_CloakHost[0] && (!Client->host[0] || strpbrk(Client->host, ".:"))) { char cloak[GETID_LEN]; strlcpy(cloak, Hostname, GETID_LEN); @@ -381,7 +385,7 @@ Client_SetID( CLIENT *Client, const char *ID ) { assert( Client != NULL ); assert( ID != NULL ); - + strlcpy( Client->id, ID, sizeof( Client->id )); if (Conf_CloakUserToNick) { @@ -427,7 +431,7 @@ Client_SetOrigUser(CLIENT UNUSED *Client, const char UNUSED *User) assert(Client != NULL); assert(User != NULL); -#if defined(PAM) && defined(IDENTAUTH) +#if defined(PAM) strlcpy(Client->orig_user, User, sizeof(Client->orig_user)); #endif } /* Client_SetOrigUser */ @@ -698,7 +702,7 @@ Client_ID( CLIENT *Client ) if(Client->type == CLIENT_USER) assert(strlen(Client->id) < Conf_MaxNickLength); #endif - + if( Client->id[0] ) return Client->id; else return "*"; } /* Client_ID */ @@ -731,15 +735,7 @@ Client_User( CLIENT *Client ) */ GLOBAL char * Client_OrigUser(CLIENT *Client) { -#ifndef IDENTAUTH - char *user = Client->user; - - if (user[0] == '~') - user++; - return user; -#else return Client->orig_user; -#endif } /* Client_OrigUser */ #endif