Remove netfinger client code and repurpose /FINGER command to send a CTCP FINGER instead

No-one runs fingerd servers anymore so this code was entirely obsolete.
This commit is contained in:
Kevin Easton
2017-04-11 01:19:32 +10:00
parent eace841366
commit bad8c2fa02
4 changed files with 25 additions and 123 deletions

View File

@@ -188,6 +188,7 @@ BUILT_IN_COMMAND(do_mtopic);
BUILT_IN_COMMAND(xevalcmd);
BUILT_IN_COMMAND(send_kline);
BUILT_IN_COMMAND(show_revisions);
BUILT_IN_COMMAND(ctcp_simple);
#ifdef GUI
BUILT_IN_COMMAND(os2popupmenu);
@@ -366,7 +367,7 @@ IrcCommand irc_command[] =
#ifdef GUI
{ "FILEDIALOG", NULL, filedialog, 0, "GUI - File dialog" },
#endif
{ "FINGER", NULL, finger, 0, "%Y<%Cnick%Y>%n\n- Fetches finger info on %Y<%Cnick%Y>%n" },
{ "FINGER", "FINGER", ctcp_simple, 0, "%Y<%Cnick%Y>%n\n- Sends a CTCP FINGER query to %Y<%Cnick%Y>%n" },
{ "FK", "FK", masskick, SERVERREQ, "%Y<%Cnick%G!%nuser%Y@%nhostname%Y>%n%R[%nreason%R]%n\nFinds clienTs matching %Y<%Cnick%G!%nuser%Y@%nhostname%Y>%n and immediately kicks them from current channel for %R[%nreason%R]%n" },
{ "FLUSH", NULL, flush, 0, "- Flush ALL server output" },
#ifdef GUI
@@ -1728,6 +1729,26 @@ BUILT_IN_COMMAND(pingcmd)
ctcp(command, buffer, empty_string, NULL);
}
BUILT_IN_COMMAND(ctcp_simple)
{
char *person = next_arg(args, &args);
if (person == NULL || !strcmp(person, "*"))
{
if ((person = get_current_channel_by_refnum(0)) == NULL)
if ((person = get_target_by_refnum(0)) == NULL)
person = zero;
}
if (!in_ctcp())
{
send_ctcp(CTCP_PRIVMSG, person, get_ctcp_val(command), NULL);
put_it("%s", convert_output_format(fget_string_var(FORMAT_SEND_CTCP_FSET),
"%s %s %s",update_clock(GET_TIME), person, command));
add_last_type(&last_sent_ctcp[0], 1, NULL, NULL, person, command);
}
}
BUILT_IN_COMMAND(ctcp_version)
{
char *person;

View File

@@ -3594,127 +3594,6 @@ SocketList *BX_get_socket(int s)
return NULL;
}
extern int dgets_errno;
void read_netfinger(int s)
{
char tmpstr[BIG_BUFFER_SIZE+1];
char *p = tmpstr;
*tmpstr = 0;
switch(dgets(tmpstr, s, 0, BIG_BUFFER_SIZE, NULL))
{
case 0:
break;
case -1:
if (do_hook(SOCKET_LIST, "%d %d %s Remote closed connection", s, sock_manager.sockets[s].port, sock_manager.sockets[s].server))
{
if (dgets_errno == -1)
bitchsay("Remote closed connection");
}
close_socketread(s);
break;
default:
{
chop(tmpstr, 1);
while (*p)
{
switch(*p)
{
case '\210':
case '\211':
case '\212':
case '\214':
*p &= 0x7f;
break;
case '\x9b':
case '\t':
break;
case '\n':
case '\r':
*p = '\0';
break;
default:
if (!isprint((unsigned char)*p))
*p = (*p & 0x7f) | 0x40;
break;
}
p++;
}
if (do_hook(SOCKET_LIST, "%d %d %s %s", s, sock_manager.sockets[s].port, sock_manager.sockets[s].server, tmpstr))
put_it("%s", tmpstr);
}
}
}
void netfinger (char *name)
{
char *host = NULL;
unsigned short port = 79;
int s;
if (name)
{
if ((host = strrchr(name, '@')))
*host++ = 0;
else
host = name;
}
if (!host || !*host)
{
say("Invalid @host or user@host.");
return;
}
if (name && *name)
{
if ((s = connect_by_number(host, &port, SERVICE_CLIENT, PROTOCOL_TCP, 1)) < 0)
{
bitchsay("Finger connect error on %s@%s", name?name:empty_string, host);
return;
}
if ((add_socketread(s, port, 0, name, read_netfinger, NULL)) > -1)
{
write_sockets(s, name, strlen(name), 1);
add_sockettimeout(s, 120, NULL);
} else
close_socketread(s);
}
return;
}
void start_finger (UserhostItem *stuff, char *nick, char *args)
{
char *finger_userhost = NULL;
char *str;
if (!stuff || !stuff->nick || !strcmp(stuff->user, "<UNKNOWN>") || my_stricmp(stuff->nick, nick))
{
say("No information for %s", nick);
return;
}
finger_userhost = m_opendup(stuff->user, "@", stuff->host, NULL);
str = finger_userhost;
str = clear_server_flags(finger_userhost);
say("Launching finger for %s (%s)", nick, finger_userhost);
netfinger(str);
new_free(&finger_userhost);
}
BUILT_IN_COMMAND(finger)
{
char *userhost;
if ((userhost = next_arg(args, &args)))
{
if (!strchr(userhost, '@'))
{
userhostbase(userhost, start_finger, 1, "%s", userhost);
return;
}
netfinger(userhost);
}
}
static void handle_socket_connect(int rc)
{
struct servent *serv;