Format handle_telnet.cpp
This commit is contained in:
parent
4ea1291b70
commit
101c041330
1 changed files with 170 additions and 170 deletions
|
@ -46,9 +46,9 @@ namespace pvpgn
|
|||
namespace bnetd
|
||||
{
|
||||
|
||||
extern int handle_telnet_packet(t_connection * c, t_packet const * const packet)
|
||||
extern int handle_telnet_packet(t_connection* c, t_packet const* const packet)
|
||||
{
|
||||
t_packet * rpacket;
|
||||
t_packet* rpacket;
|
||||
|
||||
if (!c)
|
||||
{
|
||||
|
@ -67,7 +67,7 @@ namespace pvpgn
|
|||
}
|
||||
|
||||
{
|
||||
char const * const linestr = packet_get_str_const(packet, 0, MAX_MESSAGE_LEN);
|
||||
char const* const linestr = packet_get_str_const(packet, 0, MAX_MESSAGE_LEN);
|
||||
|
||||
if (packet_get_size(packet) < 2) /* empty line */
|
||||
return 0;
|
||||
|
@ -84,7 +84,7 @@ namespace pvpgn
|
|||
conn_set_clienttag(c, CLIENTTAG_BNCHATBOT_UINT);
|
||||
|
||||
{
|
||||
char const * temp = linestr;
|
||||
char const* temp = linestr;
|
||||
|
||||
if (temp[0] == '\004') /* FIXME: no echo, ignore for now (we always do no echo) */
|
||||
temp = &temp[1];
|
||||
|
@ -101,7 +101,7 @@ namespace pvpgn
|
|||
eventlog(eventlog_level_error, __FUNCTION__, "[{}] could not set username to \"{}\"", conn_get_socket(c), temp);
|
||||
|
||||
{
|
||||
char const * const msg = "\r\nPassword: ";
|
||||
char const* const msg = "\r\nPassword: ";
|
||||
|
||||
if (!(rpacket = packet_create(packet_class_raw)))
|
||||
{
|
||||
|
@ -125,7 +125,7 @@ namespace pvpgn
|
|||
eventlog(eventlog_level_error, __FUNCTION__, "[{}] could not set username to \"{}\"", conn_get_socket(c), linestr);
|
||||
|
||||
{
|
||||
char const * const temp = "\r\nPassword: ";
|
||||
char const* const temp = "\r\nPassword: ";
|
||||
|
||||
if (!(rpacket = packet_create(packet_class_raw)))
|
||||
{
|
||||
|
@ -143,205 +143,205 @@ namespace pvpgn
|
|||
|
||||
case conn_state_bot_password:
|
||||
{
|
||||
char const * const tempa = "\r\nLogin failed.\r\n\r\nUsername: ";
|
||||
char const * const tempb = "\r\nAccount has no bot access.\r\n\r\nUsername: ";
|
||||
char const * const loggeduser = conn_get_loggeduser(c);
|
||||
t_account * account;
|
||||
char const * oldstrhash1;
|
||||
t_hash trypasshash1;
|
||||
t_hash oldpasshash1;
|
||||
char * testpass;
|
||||
char const* const tempa = "\r\nLogin failed.\r\n\r\nUsername: ";
|
||||
char const* const tempb = "\r\nAccount has no bot access.\r\n\r\nUsername: ";
|
||||
char const* const loggeduser = conn_get_loggeduser(c);
|
||||
t_account* account;
|
||||
char const* oldstrhash1;
|
||||
t_hash trypasshash1;
|
||||
t_hash oldpasshash1;
|
||||
char* testpass;
|
||||
|
||||
if (!loggeduser) /* error earlier in login */
|
||||
{
|
||||
/* no std::log message... */
|
||||
conn_set_state(c, conn_state_bot_username);
|
||||
if (!loggeduser) /* error earlier in login */
|
||||
{
|
||||
/* no std::log message... */
|
||||
conn_set_state(c, conn_state_bot_username);
|
||||
|
||||
if (!(rpacket = packet_create(packet_class_raw)))
|
||||
{
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "[{}] could not create rpacket", conn_get_socket(c));
|
||||
break;
|
||||
}
|
||||
if (!(rpacket = packet_create(packet_class_raw)))
|
||||
{
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "[{}] could not create rpacket", conn_get_socket(c));
|
||||
break;
|
||||
}
|
||||
|
||||
packet_append_ntstring(rpacket, tempa);
|
||||
conn_push_outqueue(c, rpacket);
|
||||
packet_del_ref(rpacket);
|
||||
break;
|
||||
}
|
||||
if (connlist_find_connection_by_accountname(loggeduser))
|
||||
{
|
||||
eventlog(eventlog_level_info, __FUNCTION__, "[{}] bot login for \"{}\" refused (already logged in)", conn_get_socket(c), loggeduser);
|
||||
conn_set_state(c, conn_state_bot_username);
|
||||
packet_append_ntstring(rpacket, tempa);
|
||||
conn_push_outqueue(c, rpacket);
|
||||
packet_del_ref(rpacket);
|
||||
break;
|
||||
}
|
||||
if (connlist_find_connection_by_accountname(loggeduser))
|
||||
{
|
||||
eventlog(eventlog_level_info, __FUNCTION__, "[{}] bot login for \"{}\" refused (already logged in)", conn_get_socket(c), loggeduser);
|
||||
conn_set_state(c, conn_state_bot_username);
|
||||
|
||||
if (!(rpacket = packet_create(packet_class_raw)))
|
||||
{
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "[{}] could not create rpacket", conn_get_socket(c));
|
||||
break;
|
||||
}
|
||||
if (!(rpacket = packet_create(packet_class_raw)))
|
||||
{
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "[{}] could not create rpacket", conn_get_socket(c));
|
||||
break;
|
||||
}
|
||||
|
||||
packet_append_ntstring(rpacket, tempa);
|
||||
conn_push_outqueue(c, rpacket);
|
||||
packet_del_ref(rpacket);
|
||||
break;
|
||||
}
|
||||
if (!(account = accountlist_find_account(loggeduser)))
|
||||
{
|
||||
eventlog(eventlog_level_info, __FUNCTION__, "[{}] bot login for \"{}\" refused (bad account)", conn_get_socket(c), loggeduser);
|
||||
conn_set_state(c, conn_state_bot_username);
|
||||
packet_append_ntstring(rpacket, tempa);
|
||||
conn_push_outqueue(c, rpacket);
|
||||
packet_del_ref(rpacket);
|
||||
break;
|
||||
}
|
||||
if (!(account = accountlist_find_account(loggeduser)))
|
||||
{
|
||||
eventlog(eventlog_level_info, __FUNCTION__, "[{}] bot login for \"{}\" refused (bad account)", conn_get_socket(c), loggeduser);
|
||||
conn_set_state(c, conn_state_bot_username);
|
||||
|
||||
if (!(rpacket = packet_create(packet_class_raw)))
|
||||
{
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "[{}] could not create rpacket", conn_get_socket(c));
|
||||
break;
|
||||
}
|
||||
if (!(rpacket = packet_create(packet_class_raw)))
|
||||
{
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "[{}] could not create rpacket", conn_get_socket(c));
|
||||
break;
|
||||
}
|
||||
|
||||
packet_append_ntstring(rpacket, tempa);
|
||||
conn_push_outqueue(c, rpacket);
|
||||
packet_del_ref(rpacket);
|
||||
break;
|
||||
}
|
||||
if ((oldstrhash1 = account_get_pass(account)))
|
||||
{
|
||||
if (hash_set_str(&oldpasshash1, oldstrhash1) < 0)
|
||||
{
|
||||
eventlog(eventlog_level_info, __FUNCTION__, "[{}] bot login for \"{}\" refused (corrupted passhash1?)", conn_get_socket(c), account_get_name(account));
|
||||
conn_set_state(c, conn_state_bot_username);
|
||||
packet_append_ntstring(rpacket, tempa);
|
||||
conn_push_outqueue(c, rpacket);
|
||||
packet_del_ref(rpacket);
|
||||
break;
|
||||
}
|
||||
if ((oldstrhash1 = account_get_pass(account)))
|
||||
{
|
||||
if (hash_set_str(&oldpasshash1, oldstrhash1) < 0)
|
||||
{
|
||||
eventlog(eventlog_level_info, __FUNCTION__, "[{}] bot login for \"{}\" refused (corrupted passhash1?)", conn_get_socket(c), account_get_name(account));
|
||||
conn_set_state(c, conn_state_bot_username);
|
||||
|
||||
if (!(rpacket = packet_create(packet_class_raw)))
|
||||
{
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "[{}] could not create rpacket", conn_get_socket(c));
|
||||
break;
|
||||
}
|
||||
if (!(rpacket = packet_create(packet_class_raw)))
|
||||
{
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "[{}] could not create rpacket", conn_get_socket(c));
|
||||
break;
|
||||
}
|
||||
|
||||
packet_append_ntstring(rpacket, tempa);
|
||||
conn_push_outqueue(c, rpacket);
|
||||
packet_del_ref(rpacket);
|
||||
break;
|
||||
}
|
||||
packet_append_ntstring(rpacket, tempa);
|
||||
conn_push_outqueue(c, rpacket);
|
||||
packet_del_ref(rpacket);
|
||||
break;
|
||||
}
|
||||
|
||||
testpass = xstrdup(linestr);
|
||||
{
|
||||
strtolower(testpass);
|
||||
}
|
||||
if (bnet_hash(&trypasshash1, std::strlen(testpass), testpass) < 0) /* FIXME: force to lowercase */
|
||||
{
|
||||
eventlog(eventlog_level_info, __FUNCTION__, "[{}] bot login for \"{}\" refused (unable to hash password)", conn_get_socket(c), account_get_name(account));
|
||||
xfree(testpass);
|
||||
testpass = xstrdup(linestr);
|
||||
{
|
||||
strtolower(testpass);
|
||||
}
|
||||
if (bnet_hash(&trypasshash1, std::strlen(testpass), testpass) < 0) /* FIXME: force to lowercase */
|
||||
{
|
||||
eventlog(eventlog_level_info, __FUNCTION__, "[{}] bot login for \"{}\" refused (unable to hash password)", conn_get_socket(c), account_get_name(account));
|
||||
xfree(testpass);
|
||||
|
||||
conn_set_state(c, conn_state_bot_username);
|
||||
conn_set_state(c, conn_state_bot_username);
|
||||
|
||||
if (!(rpacket = packet_create(packet_class_raw)))
|
||||
{
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "[{}] could not create rpacket", conn_get_socket(c));
|
||||
break;
|
||||
}
|
||||
if (!(rpacket = packet_create(packet_class_raw)))
|
||||
{
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "[{}] could not create rpacket", conn_get_socket(c));
|
||||
break;
|
||||
}
|
||||
|
||||
packet_append_ntstring(rpacket, tempa);
|
||||
conn_push_outqueue(c, rpacket);
|
||||
packet_del_ref(rpacket);
|
||||
break;
|
||||
}
|
||||
xfree(testpass);
|
||||
if (hash_eq(trypasshash1, oldpasshash1) != 1)
|
||||
{
|
||||
eventlog(eventlog_level_info, __FUNCTION__, "[{}] bot login for \"{}\" refused (wrong password)", conn_get_socket(c), account_get_name(account));
|
||||
conn_increment_passfail_count(c);
|
||||
conn_set_state(c, conn_state_bot_username);
|
||||
packet_append_ntstring(rpacket, tempa);
|
||||
conn_push_outqueue(c, rpacket);
|
||||
packet_del_ref(rpacket);
|
||||
break;
|
||||
}
|
||||
xfree(testpass);
|
||||
if (hash_eq(trypasshash1, oldpasshash1) != 1)
|
||||
{
|
||||
eventlog(eventlog_level_info, __FUNCTION__, "[{}] bot login for \"{}\" refused (wrong password)", conn_get_socket(c), account_get_name(account));
|
||||
conn_increment_passfail_count(c);
|
||||
conn_set_state(c, conn_state_bot_username);
|
||||
|
||||
if (!(rpacket = packet_create(packet_class_raw)))
|
||||
{
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "[{}] could not create rpacket", conn_get_socket(c));
|
||||
break;
|
||||
}
|
||||
if (!(rpacket = packet_create(packet_class_raw)))
|
||||
{
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "[{}] could not create rpacket", conn_get_socket(c));
|
||||
break;
|
||||
}
|
||||
|
||||
packet_append_ntstring(rpacket, tempa);
|
||||
conn_push_outqueue(c, rpacket);
|
||||
packet_del_ref(rpacket);
|
||||
break;
|
||||
}
|
||||
packet_append_ntstring(rpacket, tempa);
|
||||
conn_push_outqueue(c, rpacket);
|
||||
packet_del_ref(rpacket);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (account_get_auth_botlogin(account) != 1) /* default to false */
|
||||
{
|
||||
eventlog(eventlog_level_info, __FUNCTION__, "[{}] bot login for \"{}\" refused (no bot access)", conn_get_socket(c), account_get_name(account));
|
||||
conn_set_state(c, conn_state_bot_username);
|
||||
if (account_get_auth_botlogin(account) != 1) /* default to false */
|
||||
{
|
||||
eventlog(eventlog_level_info, __FUNCTION__, "[{}] bot login for \"{}\" refused (no bot access)", conn_get_socket(c), account_get_name(account));
|
||||
conn_set_state(c, conn_state_bot_username);
|
||||
|
||||
if (!(rpacket = packet_create(packet_class_raw)))
|
||||
{
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "[{}] could not create rpacket", conn_get_socket(c));
|
||||
break;
|
||||
}
|
||||
if (!(rpacket = packet_create(packet_class_raw)))
|
||||
{
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "[{}] could not create rpacket", conn_get_socket(c));
|
||||
break;
|
||||
}
|
||||
|
||||
packet_append_ntstring(rpacket, tempb);
|
||||
conn_push_outqueue(c, rpacket);
|
||||
packet_del_ref(rpacket);
|
||||
break;
|
||||
}
|
||||
else if (account_get_auth_lock(account) == 1) /* default to false */
|
||||
{
|
||||
eventlog(eventlog_level_info, __FUNCTION__, "[{}] bot login for \"{}\" refused (this account is locked)", conn_get_socket(c), account_get_name(account));
|
||||
conn_set_state(c, conn_state_bot_username);
|
||||
packet_append_ntstring(rpacket, tempb);
|
||||
conn_push_outqueue(c, rpacket);
|
||||
packet_del_ref(rpacket);
|
||||
break;
|
||||
}
|
||||
else if (account_get_auth_lock(account) == 1) /* default to false */
|
||||
{
|
||||
eventlog(eventlog_level_info, __FUNCTION__, "[{}] bot login for \"{}\" refused (this account is locked)", conn_get_socket(c), account_get_name(account));
|
||||
conn_set_state(c, conn_state_bot_username);
|
||||
|
||||
if (!(rpacket = packet_create(packet_class_raw)))
|
||||
{
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "[{}] could not create rpacket", conn_get_socket(c));
|
||||
break;
|
||||
}
|
||||
if (!(rpacket = packet_create(packet_class_raw)))
|
||||
{
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "[{}] could not create rpacket", conn_get_socket(c));
|
||||
break;
|
||||
}
|
||||
|
||||
packet_append_ntstring(rpacket, tempb);
|
||||
conn_push_outqueue(c, rpacket);
|
||||
packet_del_ref(rpacket);
|
||||
break;
|
||||
}
|
||||
packet_append_ntstring(rpacket, tempb);
|
||||
conn_push_outqueue(c, rpacket);
|
||||
packet_del_ref(rpacket);
|
||||
break;
|
||||
}
|
||||
|
||||
eventlog(eventlog_level_info, __FUNCTION__, "[{}] \"{}\" bot logged in (correct password)", conn_get_socket(c), account_get_name(account));
|
||||
eventlog(eventlog_level_info, __FUNCTION__, "[{}] \"{}\" bot logged in (correct password)", conn_get_socket(c), account_get_name(account));
|
||||
#ifdef WITH_LUA
|
||||
if (lua_handle_user(c, NULL, NULL, luaevent_user_login) == 1)
|
||||
{
|
||||
// feature to break login from Lua
|
||||
conn_set_state(c, conn_state_destroy);
|
||||
break;
|
||||
}
|
||||
if (lua_handle_user(c, NULL, NULL, luaevent_user_login) == 1)
|
||||
{
|
||||
// feature to break login from Lua
|
||||
conn_set_state(c, conn_state_destroy);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else
|
||||
eventlog(eventlog_level_info, __FUNCTION__, "[{}] \"{}\" bot logged in (no password)", conn_get_socket(c), account_get_name(account));
|
||||
}
|
||||
else
|
||||
eventlog(eventlog_level_info, __FUNCTION__, "[{}] \"{}\" bot logged in (no password)", conn_get_socket(c), account_get_name(account));
|
||||
|
||||
if (!(rpacket = packet_create(packet_class_raw))) /* if we got this far, let them std::log in even if this fails */
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "[{}] could not create rpacket", conn_get_socket(c));
|
||||
else
|
||||
{
|
||||
packet_append_ntstring(rpacket, "\r\n");
|
||||
conn_push_outqueue(c, rpacket);
|
||||
packet_del_ref(rpacket);
|
||||
}
|
||||
message_send_text(c, message_type_uniqueid, c, loggeduser);
|
||||
if (!(rpacket = packet_create(packet_class_raw))) /* if we got this far, let them std::log in even if this fails */
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "[{}] could not create rpacket", conn_get_socket(c));
|
||||
else
|
||||
{
|
||||
packet_append_ntstring(rpacket, "\r\n");
|
||||
conn_push_outqueue(c, rpacket);
|
||||
packet_del_ref(rpacket);
|
||||
}
|
||||
message_send_text(c, message_type_uniqueid, c, loggeduser);
|
||||
|
||||
conn_login(c, account, loggeduser);
|
||||
conn_login(c, account, loggeduser);
|
||||
|
||||
if (conn_set_channel(c, CHANNEL_NAME_CHAT) < 0)
|
||||
conn_set_channel(c, CHANNEL_NAME_BANNED); /* should not fail */
|
||||
if (conn_set_channel(c, CHANNEL_NAME_CHAT) < 0)
|
||||
conn_set_channel(c, CHANNEL_NAME_BANNED); /* should not fail */
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
case conn_state_loggedin:
|
||||
{
|
||||
t_channel const * channel;
|
||||
t_channel const* channel;
|
||||
|
||||
conn_set_idletime(c);
|
||||
conn_set_idletime(c);
|
||||
|
||||
if ((channel = conn_get_channel(c)))
|
||||
channel_message_log(channel, c, 1, linestr);
|
||||
/* we don't log game commands currently */
|
||||
if ((channel = conn_get_channel(c)))
|
||||
channel_message_log(channel, c, 1, linestr);
|
||||
/* we don't log game commands currently */
|
||||
|
||||
if (linestr[0] == '/')
|
||||
handle_command(c, linestr);
|
||||
else
|
||||
if (channel && !conn_quota_exceeded(c, linestr))
|
||||
channel_message_send(channel, message_type_talk, c, linestr);
|
||||
/* else discard */
|
||||
if (linestr[0] == '/')
|
||||
handle_command(c, linestr);
|
||||
else
|
||||
if (channel && !conn_quota_exceeded(c, linestr))
|
||||
channel_message_send(channel, message_type_talk, c, linestr);
|
||||
/* else discard */
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
default:
|
||||
eventlog(eventlog_level_error, __FUNCTION__, "[{}] unknown telnet connection state {}", conn_get_socket(c), (int)conn_get_state(c));
|
||||
|
|
Loading…
Add table
Reference in a new issue