updated according to bnetdocs - will test using D2 client later today

This commit is contained in:
pandaemonium 2007-08-07 15:28:35 +00:00
parent 84510b462b
commit 10fc28a405
2 changed files with 14 additions and 8 deletions
pvpgn/src

View file

@ -1573,7 +1573,8 @@ static int _client_loginreq2(t_connection * c, t_packet const *const packet)
if (prefs_get_max_concurrent_logins() > 0) {
if (prefs_get_max_concurrent_logins() <= connlist_login_get_length()) {
eventlog(eventlog_level_error, __FUNCTION__, "[%d] login denied, too many concurrent logins. max: %d. current: %d.", conn_get_socket(c), prefs_get_max_concurrent_logins(), connlist_login_get_length());
bn_int_set(&rpacket->u.server_loginreply2.message, SERVER_LOGINREPLY2_MESSAGE_BADPASS);
bn_int_set(&rpacket->u.server_loginreply2.message, SERVER_LOGINREPLY2_MESSAGE_LOCKED);
packet_append_string(rpacket, "Too many concurrent logins. Try again later.");
return -1;
}
}
@ -1581,18 +1582,21 @@ static int _client_loginreq2(t_connection * c, t_packet const *const packet)
/* fail if no account */
if (!(account = accountlist_find_account(username))) {
eventlog(eventlog_level_info, __FUNCTION__, "[%d] login for \"%s\" refused (no such account)", conn_get_socket(c), username);
bn_int_set(&rpacket->u.server_loginreply2.message, SERVER_LOGINREPLY2_MESSAGE_BADPASS);
bn_int_set(&rpacket->u.server_loginreply2.message, SERVER_LOGINREPLY2_MESSAGE_NONEXIST);
}
/* already logged in */
else if (connlist_find_connection_by_account(account) && prefs_get_kick_old_login() == 0) {
eventlog(eventlog_level_info, __FUNCTION__, "[%d] login for \"%s\" refused (already logged in)", conn_get_socket(c), username);
bn_int_set(&rpacket->u.server_loginreply2.message, SERVER_LOGINREPLY2_MESSAGE_ALREADY);
bn_int_set(&rpacket->u.server_loginreply2.message, SERVER_LOGINREPLY2_MESSAGE_LOCKED);
packet_append_string(rpacket, "This account is allready logged in.");
} else if (account_get_auth_bnetlogin(account) == 0) { /* default to true */
eventlog(eventlog_level_info, __FUNCTION__, "[%d] login for \"%s\" refused (no bnet access)", conn_get_socket(c), username);
bn_int_set(&rpacket->u.server_loginreply2.message, SERVER_LOGINREPLY2_MESSAGE_BADPASS);
bn_int_set(&rpacket->u.server_loginreply2.message, SERVER_LOGINREPLY2_MESSAGE_LOCKED);
packet_append_string(rpacket, "This account is barred from bnet access.");
} else if (account_get_auth_lock(account) == 1) { /* default to false */
eventlog(eventlog_level_info, __FUNCTION__, "[%d] login for \"%s\" refused (this account is locked)", conn_get_socket(c), username);
bn_int_set(&rpacket->u.server_loginreply1.message, SERVER_LOGINREPLY2_MESSAGE_BADPASS);
bn_int_set(&rpacket->u.server_loginreply1.message, SERVER_LOGINREPLY2_MESSAGE_LOCKED);
packet_append_string(rpacket, "This account has been locked.");
} else if (conn_get_sessionkey(c) != bn_int_get(packet->u.client_loginreq2.sessionkey)) {
eventlog(eventlog_level_error, __FUNCTION__, "[%d] login for \"%s\" refused (expected session key 0x%08x, got 0x%08x)", conn_get_socket(c), username, conn_get_sessionkey(c), bn_int_get(packet->u.client_loginreq2.sessionkey));
bn_int_set(&rpacket->u.server_loginreply2.message, SERVER_LOGINREPLY2_MESSAGE_BADPASS);

View file

@ -1774,10 +1774,12 @@ typedef struct
{
t_bnet_header h;
bn_int message;
/* reason for account lock */
} PACKED_ATTR() t_server_loginreply2;
#define SERVER_LOGINREPLY2_MESSAGE_SUCCESS 0x00000000
#define SERVER_LOGINREPLY2_MESSAGE_ALREADY 0x00000001 /* Account already exists */
#define SERVER_LOGINREPLY2_MESSAGE_BADPASS 0x00000002 /* Bad password */
#define SERVER_LOGINREPLY2_MESSAGE_SUCCESS 0x00000000
#define SERVER_LOGINREPLY2_MESSAGE_NONEXIST 0x00000001 /* Account does not exist */
#define SERVER_LOGINREPLY2_MESSAGE_BADPASS 0x00000002 /* Bad password */
#define SERVER_LOGINREPLY2_MESSAGE_LOCKED 0x00000006 /* Account is locked */
/******************************************************/