From c47b5a1531fe0e2a3b00c4a5ec80a4dc4cbe2428 Mon Sep 17 00:00:00 2001 From: Luke Bratch Date: Sat, 18 May 2019 19:17:52 +0100 Subject: Tell clients to go away if we're not registered with the real server yet. --- blabouncer.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/blabouncer.c b/blabouncer.c index 287176b..0eb2519 100644 --- a/blabouncer.c +++ b/blabouncer.c @@ -1,6 +1,4 @@ // TODO: -// - FIGURE OUT WHEN WE'RE REGISTERED (NICK and USER from user are replied to with commands 001, 002, 003, and 004 from the ircd when registration successful) -// - int registered = 0; already created to track when this has happened (assuming still want to do it this way) // - handle nick in use // - Might need to change channel struct nicks to be channel struct user struct with its own nick/modes/etc. // - Do we actually need to store the modes in the channel struct? @@ -996,6 +994,13 @@ int processircmessage(SSL *server_ssl, char *str, int source, struct client *cli // Somewhere to store the several strings we will need to build and send char outgoingmsg[MAXDATASIZE]; // String to send to client + // Tell the client to go away if we aren't registered with the real server yet as defined by the last greeting not being set yet + if (!strlen(ircdstrings->greeting004)) { + sendtoclient(sourcefd, "Sorry, we aren't registered with a real IRC server yet.", clients, settings); + disconnectclient(sourcefd, clients, ircdstrings, settings); + return 1; + } + // Send IRC greeting strings (001/RPL_WELCOME, 002/RPL_YOURHOST, 003/RPL_CREATED, 004/RPL_MYINFO) to client snprintf(outgoingmsg, MAXDATASIZE, "%s", ircdstrings->greeting001); sendtoclient(sourcefd, outgoingmsg, clients, settings); @@ -1474,9 +1479,6 @@ void dochat(int *serversockfd, int *clientsockfd, struct settings *settings) { // <============================================= // Initialise IRC connecting/registration state - // Registered with the IRCd yet? -////////////// int registered = 0; - // Struct of various strings from and for the real IRCd (such as the greeting strings, the real IRCd's name, // our nick!user@host string, our nick, username, real name, etc.) struct ircdstrings ircdstrings; -- cgit v1.2.3