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:
@@ -1,5 +1,8 @@
|
|||||||
[Changes 1.2.2]
|
[Changes 1.2.2]
|
||||||
|
|
||||||
|
* Remove netfinger client code (no-one is running fingerd anymore) and
|
||||||
|
repurpose /FINGER command to send a CTCP FINGER instead. (caf)
|
||||||
|
|
||||||
* Enable use of cached whowas info for /IG* and /UNIG* commands. (caf)
|
* Enable use of cached whowas info for /IG* and /UNIG* commands. (caf)
|
||||||
|
|
||||||
* Add support for OpenSSL 1.1.0 to configure script. (caf)
|
* Add support for OpenSSL 1.1.0 to configure script. (caf)
|
||||||
|
|||||||
@@ -128,7 +128,6 @@ extern void MegaDeop (char *, char *, char *, char *);
|
|||||||
extern void do_flood (char *, char *, char *, char *);
|
extern void do_flood (char *, char *, char *, char *);
|
||||||
extern void cycle (char *, char *, char *, char *);
|
extern void cycle (char *, char *, char *, char *);
|
||||||
extern void bomb (char *, char *, char *, char *);
|
extern void bomb (char *, char *, char *, char *);
|
||||||
extern void finger (char *, char *, char *, char *);
|
|
||||||
extern void multkick (char *, char *, char *, char *);
|
extern void multkick (char *, char *, char *, char *);
|
||||||
extern void massdeop (char *, char *, char *, char *);
|
extern void massdeop (char *, char *, char *, char *);
|
||||||
extern void doop (char *, char *, char *, char *);
|
extern void doop (char *, char *, char *, char *);
|
||||||
|
|||||||
@@ -188,6 +188,7 @@ BUILT_IN_COMMAND(do_mtopic);
|
|||||||
BUILT_IN_COMMAND(xevalcmd);
|
BUILT_IN_COMMAND(xevalcmd);
|
||||||
BUILT_IN_COMMAND(send_kline);
|
BUILT_IN_COMMAND(send_kline);
|
||||||
BUILT_IN_COMMAND(show_revisions);
|
BUILT_IN_COMMAND(show_revisions);
|
||||||
|
BUILT_IN_COMMAND(ctcp_simple);
|
||||||
|
|
||||||
#ifdef GUI
|
#ifdef GUI
|
||||||
BUILT_IN_COMMAND(os2popupmenu);
|
BUILT_IN_COMMAND(os2popupmenu);
|
||||||
@@ -366,7 +367,7 @@ IrcCommand irc_command[] =
|
|||||||
#ifdef GUI
|
#ifdef GUI
|
||||||
{ "FILEDIALOG", NULL, filedialog, 0, "GUI - File dialog" },
|
{ "FILEDIALOG", NULL, filedialog, 0, "GUI - File dialog" },
|
||||||
#endif
|
#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" },
|
{ "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" },
|
{ "FLUSH", NULL, flush, 0, "- Flush ALL server output" },
|
||||||
#ifdef GUI
|
#ifdef GUI
|
||||||
@@ -1728,6 +1729,26 @@ BUILT_IN_COMMAND(pingcmd)
|
|||||||
ctcp(command, buffer, empty_string, NULL);
|
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)
|
BUILT_IN_COMMAND(ctcp_version)
|
||||||
{
|
{
|
||||||
char *person;
|
char *person;
|
||||||
|
|||||||
121
source/misc.c
121
source/misc.c
@@ -3594,127 +3594,6 @@ SocketList *BX_get_socket(int s)
|
|||||||
return NULL;
|
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)
|
static void handle_socket_connect(int rc)
|
||||||
{
|
{
|
||||||
struct servent *serv;
|
struct servent *serv;
|
||||||
|
|||||||
Reference in New Issue
Block a user