Log better error messages when rejecting clients

This commit is contained in:
Alexander Barton 2011-12-25 19:27:06 +01:00
parent 164e15b8c6
commit 338758799d

View File

@ -47,7 +47,7 @@ static bool Hello_User PARAMS(( CLIENT *Client ));
static bool Hello_User_PostAuth PARAMS(( CLIENT *Client )); static bool Hello_User_PostAuth PARAMS(( CLIENT *Client ));
static void Kill_Nick PARAMS(( char *Nick, char *Reason )); static void Kill_Nick PARAMS(( char *Nick, char *Reason ));
static void Introduce_Client PARAMS((CLIENT *To, CLIENT *Client, int Type)); static void Introduce_Client PARAMS((CLIENT *To, CLIENT *Client, int Type));
static void Reject_Client PARAMS((CLIENT *Client)); static void Reject_Client PARAMS((CLIENT *Client, const char *InternalReason));
static void cb_introduceClient PARAMS((CLIENT *Client, CLIENT *Prefix, static void cb_introduceClient PARAMS((CLIENT *Client, CLIENT *Prefix,
void *i)); void *i));
@ -945,7 +945,7 @@ Hello_User(CLIENT * Client)
* passwords supplied are classified as "wrong". */ * passwords supplied are classified as "wrong". */
if(Client_Password(Client)[0] == '\0') if(Client_Password(Client)[0] == '\0')
return Hello_User_PostAuth(Client); return Hello_User_PostAuth(Client);
Reject_Client(Client); Reject_Client(Client, "non-empty password");
return DISCONNECTED; return DISCONNECTED;
} }
@ -972,7 +972,7 @@ Hello_User(CLIENT * Client)
/* Check global server password ... */ /* Check global server password ... */
if (strcmp(Client_Password(Client), Conf_ServerPwd) != 0) { if (strcmp(Client_Password(Client), Conf_ServerPwd) != 0) {
/* Bad password! */ /* Bad password! */
Reject_Client(Client); Reject_Client(Client, "bad server password");
return DISCONNECTED; return DISCONNECTED;
} }
return Hello_User_PostAuth(Client); return Hello_User_PostAuth(Client);
@ -1017,7 +1017,7 @@ cb_Read_Auth_Result(int r_fd, UNUSED short events)
if (len != sizeof(result)) { if (len != sizeof(result)) {
Log(LOG_CRIT, "Auth: Got malformed result!"); Log(LOG_CRIT, "Auth: Got malformed result!");
Reject_Client(client); Reject_Client(client, "internal error");
return; return;
} }
@ -1025,7 +1025,7 @@ cb_Read_Auth_Result(int r_fd, UNUSED short events)
Client_SetUser(client, Client_OrigUser(client), true); Client_SetUser(client, Client_OrigUser(client), true);
(void)Hello_User_PostAuth(client); (void)Hello_User_PostAuth(client);
} else } else
Reject_Client(client); Reject_Client(client, "bad password");
} }
#endif #endif
@ -1040,12 +1040,12 @@ cb_Read_Auth_Result(int r_fd, UNUSED short events)
* @param Client The client to reject. * @param Client The client to reject.
*/ */
static void static void
Reject_Client(CLIENT *Client) Reject_Client(CLIENT *Client, const char *InternalReason)
{ {
Log(LOG_ERR, Log(LOG_ERR,
"User \"%s\" rejected (connection %d): Access denied!", "User \"%s\" rejected (connection %d): %s!",
Client_Mask(Client), Client_Conn(Client)); Client_Mask(Client), Client_Conn(Client), InternalReason);
Conn_Close(Client_Conn(Client), NULL, Conn_Close(Client_Conn(Client), InternalReason,
"Access denied! Bad password?", true); "Access denied! Bad password?", true);
} }
@ -1062,9 +1062,12 @@ Reject_Client(CLIENT *Client)
static bool static bool
Hello_User_PostAuth(CLIENT *Client) Hello_User_PostAuth(CLIENT *Client)
{ {
if (Class_IsMember(CLASS_GLINE, Client) || if (Class_IsMember(CLASS_GLINE, Client)) {
Class_IsMember(CLASS_KLINE, Client)) { Reject_Client(Client, "G-Line'd");
Reject_Client(Client); return DISCONNECTED;
}
if (Class_IsMember(CLASS_KLINE, Client)) {
Reject_Client(Client, "K-Line'd");
return DISCONNECTED; return DISCONNECTED;
} }