char *nefarious_nickip(char *host) { struct in_addr addr; int decoded; decoded = base64toIP(host); addr.s_addr = ntohl(decoded); return sstrdup(inet_ntoa(addr)); }
static void m_nick( char *origin, char **argv, int argc, int srv ) { if( argc > 2 ) { char IPAddress[32]; const char *modes; const char *modeptr; const char *account = NULL; const char *sethost = NULL; int param; modes = ( argv[5][0] == '+' ) ? argv[5]: NULL; if( modes ) { param = 6; for( modeptr = modes; *modeptr; ++modeptr ) { switch( *modeptr ) { case 'r': account = argv[param++]; break; case 'h': sethost = argv[param++]; break; default: break; } /* switch( *modeptr ) */ } /* for( ) */ } /* if( modes ) */ ircsnprintf( IPAddress, 32, "%du", base64toIP( argv[argc-3]) ); /* nick, hopcount, TS, user, host, */ do_nick( argv[0], argv[1], argv[2], argv[3], argv[4], /* server, ip, servicestamp, modes, */ base64_to_server( origin ), IPAddress, NULL, modes, /* vhost, realname, numeric, smodes */ NULL, argv[argc-1], argv[argc-2], NULL ); } else { do_nickchange( base64_to_nick( origin ), argv[0], argv[1] ); } }