X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Fsilcd%2Fpacket_receive.c;h=d3f03aae0bca0667e643715008640924f39f2955;hb=dc44e6c61393a3f69a02e7e5c22df5e0506eb8bc;hp=c0bda1432fee1a80bf82967dcf251b208ac041f0;hpb=c0042acc324966ed35f8f6c13294e862fbf7bb11;p=silc.git diff --git a/apps/silcd/packet_receive.c b/apps/silcd/packet_receive.c index c0bda143..d3f03aae 100644 --- a/apps/silcd/packet_receive.c +++ b/apps/silcd/packet_receive.c @@ -2290,6 +2290,25 @@ SilcClientEntry silc_server_new_client(SilcServer server, snprintf(&nickname[strlen(nickname) - 1], 1, "%d", nickfail); } + /* If client marked as anonymous, scramble the username and hostname */ + if (client->mode & SILC_UMODE_ANONYMOUS) { + char *scramble; + + if (strlen(username) >= 2) { + username[0] = silc_rng_get_byte_fast(server->rng); + username[1] = silc_rng_get_byte_fast(server->rng); + } + + scramble = silc_hash_babbleprint(server->sha1hash, username, + strlen(username)); + scramble[5] = '@'; + scramble[11] = '.'; + memcpy(&scramble[16], ".silc", 5); + scramble[21] = '\0'; + silc_free(username); + username = scramble; + } + /* Update client entry */ idata->status |= SILC_IDLIST_STATUS_REGISTERED; client->nickname = nickname;