Show underlying IPv4 in a remote whois.
This commit is contained in:
parent
524a5b3ac7
commit
ae52fe0ff7
3 changed files with 20 additions and 1 deletions
|
@ -165,6 +165,7 @@ extern const char *form_str(int);
|
|||
#define RPL_NOTOPIC 331
|
||||
#define RPL_TOPIC 332
|
||||
#define RPL_TOPICWHOTIME 333
|
||||
#define RPL_WHOISTEXT 337
|
||||
#define RPL_WHOISACTUALLY 338
|
||||
|
||||
#define RPL_INVITING 341
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
#include "modules.h"
|
||||
#include "hook.h"
|
||||
#include "s_newconf.h"
|
||||
#include "ipv4_from_ipv6.h"
|
||||
|
||||
static void do_whois(struct Client *client_p, struct Client *source_p, int parc, const char *parv[]);
|
||||
static void single_whois(struct Client *source_p, struct Client *target_p, int operspy);
|
||||
|
@ -239,6 +240,9 @@ single_whois(struct Client *source_p, struct Client *target_p, int operspy)
|
|||
hook_data_client hdata;
|
||||
int visible;
|
||||
int extra_space = 0;
|
||||
#ifdef RB_IPV6
|
||||
struct sockaddr_in ip4;
|
||||
#endif
|
||||
|
||||
if(target_p->user == NULL)
|
||||
{
|
||||
|
@ -345,6 +349,20 @@ single_whois(struct Client *source_p, struct Client *target_p, int operspy)
|
|||
form_str(RPL_WHOISACTUALLY),
|
||||
target_p->name, target_p->sockhost);
|
||||
|
||||
#ifdef RB_IPV6
|
||||
if (target_p->localClient->ip.ss_family == AF_INET6 &&
|
||||
(show_ip(source_p, target_p) ||
|
||||
(source_p == target_p && !IsIPSpoof(target_p))) &&
|
||||
ipv4_from_ipv6((struct sockaddr_in6 *)&target_p->localClient->ip, &ip4))
|
||||
{
|
||||
rb_inet_ntop_sock((struct sockaddr *)&ip4,
|
||||
buf, sizeof buf);
|
||||
sendto_one_numeric(source_p, RPL_WHOISTEXT,
|
||||
"%s :Underlying IPv4 is %s",
|
||||
target_p->name, buf);
|
||||
}
|
||||
#endif /* RB_IPV6 */
|
||||
|
||||
sendto_one_numeric(source_p, RPL_WHOISIDLE, form_str(RPL_WHOISIDLE),
|
||||
target_p->name,
|
||||
rb_current_time() - target_p->localClient->last,
|
||||
|
|
|
@ -358,7 +358,7 @@ static const char * replies[] = {
|
|||
/* 334 */ NULL,
|
||||
/* 335 */ NULL,
|
||||
/* 336 */ NULL,
|
||||
/* 337 */ NULL,
|
||||
/* 337 RPL_WHOISTEXT, */ "%s :%s",
|
||||
/* 338 RPL_WHOISACTUALLY, */ "%s %s :actually using host",
|
||||
/* 339 */ NULL,
|
||||
/* 340 */ NULL,
|
||||
|
|
Loading…
Reference in a new issue