updated according to bnetdocs - will test using D2 client later today
This commit is contained in:
parent
84510b462b
commit
10fc28a405
2 changed files with 14 additions and 8 deletions
pvpgn/src
|
@ -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);
|
||||
|
|
|
@ -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 */
|
||||
/******************************************************/
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue