New function Client_Reject() to reject clients on connect

This commit is contained in:
Alexander Barton 2012-01-22 18:17:28 +01:00
parent 6e28f4a7d1
commit 51a6a33056
2 changed files with 36 additions and 0 deletions

View File

@ -1097,6 +1097,39 @@ Client_StartTime(CLIENT *Client)
} /* Client_Uptime */
/**
* Reject a client when logging in.
*
* This function is called when a client isn't allowed to connect to this
* server. Possible reasons are bad server password, bad PAM password,
* or that the client is G/K-Line'd.
*
* After calling this function, the client isn't connected any more.
*
* @param Client The client to reject.
* @param Reason The reason why the client has been rejected.
* @param InformClient If true, send the exact reason to the client.
*/
GLOBAL void
Client_Reject(CLIENT *Client, const char *Reason, bool InformClient)
{
char info[COMMAND_LEN];
assert(Client != NULL);
assert(Reason != NULL);
if (InformClient)
snprintf(info, sizeof(info), "Access denied: %s", Reason);
else
strcpy(info, "Access denied: Bad password?");
Log(LOG_ERR,
"User \"%s\" rejected (connection %d): %s!",
Client_Mask(Client), Client_Conn(Client), Reason);
Conn_Close(Client_Conn(Client), Reason, info, true);
}
static unsigned long
Count( CLIENT_TYPE Type )
{

View File

@ -163,6 +163,9 @@ GLOBAL void Client_RegisterWhowas PARAMS(( CLIENT *Client ));
GLOBAL const char *Client_TypeText PARAMS((CLIENT *Client));
GLOBAL void Client_Reject PARAMS((CLIENT *Client, const char *Reason,
bool InformClient));
#ifdef DEBUG
GLOBAL void Client_DebugDump PARAMS((void));
#endif