* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
* Please read the file COPYING, README and AUTHORS for more information.
- *
- * Client management.
*/
-
#define __client_c__
-
#include "portab.h"
+/**
+ * @file
+ * Client management.
+ */
+
#include "imp.h"
#include <assert.h>
#include <unistd.h>
#include <exp.h>
-
#define GETID_LEN (CLIENT_NICK_LEN-1) + 1 + (CLIENT_USER_LEN-1) + 1 + (CLIENT_HOST_LEN-1) + 1
-
static CLIENT *This_Server, *My_Clients;
static WHOWAS My_Whowas[MAX_WHOWAS];
This_Server->hops = 0;
gethostname( This_Server->host, CLIENT_HOST_LEN );
- if (!Conf_NoDNS) {
+ if (Conf_DNS) {
h = gethostbyname( This_Server->host );
if (h) strlcpy(This_Server->host, h->h_name, sizeof(This_Server->host));
}
assert( Client != NULL );
assert( Hostname != NULL );
- strlcpy( Client->host, Hostname, sizeof( Client->host ));
+ if (strlen(Conf_CloakHost)) {
+ strlcpy( Client->host, Conf_CloakHost, sizeof( Client->host ));
+ } else {
+ strlcpy( Client->host, Hostname, sizeof( Client->host ));
+ }
} /* Client_SetHostname */
strlcpy( Client->id, ID, sizeof( Client->id ));
+ if (Conf_CloakUserToNick) {
+ strlcpy( Client->user, ID, sizeof( Client->user ));
+ strlcpy( Client->info, ID, sizeof( Client->info ));
+ }
+
/* Hash */
Client->hash = Hash( Client->id );
} /* Client_SetID */
assert( Client != NULL );
assert( User != NULL );
- if (Idented) {
+ if (Conf_CloakUserToNick) {
+ strlcpy(Client->user, Client->id, sizeof(Client->user));
+ } else if (Idented) {
strlcpy(Client->user, User, sizeof(Client->user));
} else {
Client->user[0] = '~';
* @param User User name to set.
*/
GLOBAL void
-Client_SetOrigUser(CLIENT UNUSED *Client, const char UNUSED *User) {
+Client_SetOrigUser(CLIENT UNUSED *Client, const char UNUSED *User)
+{
assert(Client != NULL);
assert(User != NULL);
assert( Client != NULL );
assert( Info != NULL );
- strlcpy(Client->info, Info, sizeof(Client->info));
+ if (Conf_CloakUserToNick)
+ strlcpy(Client->info, Client->id, sizeof(Client->info));
+ else
+ strlcpy(Client->info, Info, sizeof(Client->info));
} /* Client_SetInfo */
} /* Client_Search */
+/**
+ * Get client structure ("introducer") identfied by a server token.
+ * @return CLIENT structure or NULL if none could be found.
+ */
GLOBAL CLIENT *
Client_GetFromToken( CLIENT *Client, int Token )
{
- /* Client-Struktur, die den entsprechenden Introducer (=Client)
- * und das gegebene Token hat, liefern. Wird keine gefunden,
- * so wird NULL geliefert. */
-
CLIENT *c;
assert( Client != NULL );
- assert( Token > 0 );
+
+ if (!Token)
+ return NULL;
c = My_Clients;
while (c) {
c = My_Clients;
while (c) {
Log(LOG_DEBUG,
- " - %s, type=%d, host=%s, user=%s, conn=%d, start=%ld, flags=%s",
+ " - %s: type=%d, host=%s, user=%s, conn=%d, start=%ld, flags=%s",
Client_ID(c), Client_Type(c), Client_Hostname(c),
Client_User(c), Client_Conn(c), Client_StartTime(c),
Client_Flags(c));