diff options
author | shennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2012-11-09 19:17:17 +0000 |
---|---|---|
committer | shennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2012-11-09 19:17:17 +0000 |
commit | a37549d260bb341f567dd99f6daf5cb06836c149 (patch) | |
tree | 43313c639f8d74d68d14c64b793912256649c46d /src/login | |
parent | 27fe462f9792345bcc4917891cd48f2d24b8ee73 (diff) | |
download | hercules-a37549d260bb341f567dd99f6daf5cb06836c149.tar.gz hercules-a37549d260bb341f567dd99f6daf5cb06836c149.tar.bz2 hercules-a37549d260bb341f567dd99f6daf5cb06836c149.tar.xz hercules-a37549d260bb341f567dd99f6daf5cb06836c149.zip |
1. Follow up r16891 small improvement over there by dropping a pointless entry in the trace hierarchy
2. Modified DNSBL check on login server to stop looking up addresses on the first match, also applied my curly brace love in the way.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16893 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/login')
-rw-r--r-- | src/login/login.c | 66 |
1 files changed, 22 insertions, 44 deletions
diff --git a/src/login/login.c b/src/login/login.c index 9efd28a53..457a25f64 100644 --- a/src/login/login.c +++ b/src/login/login.c @@ -919,8 +919,7 @@ int parse_fromchar(int fd) //------------------------------------- // Make new account //------------------------------------- -int mmo_auth_new(const char* userid, const char* pass, const char sex, const char* last_ip) -{ +int mmo_auth_new(const char* userid, const char* pass, const char sex, const char* last_ip) { static int num_regs = 0; // registration counter static unsigned int new_reg_tick = 0; unsigned int tick = gettick(); @@ -929,8 +928,7 @@ int mmo_auth_new(const char* userid, const char* pass, const char sex, const cha //Account Registration Flood Protection by [Kevin] if( new_reg_tick == 0 ) new_reg_tick = gettick(); - if( DIFF_TICK(tick, new_reg_tick) < 0 && num_regs >= allowed_regs ) - { + if( DIFF_TICK(tick, new_reg_tick) < 0 && num_regs >= allowed_regs ) { ShowNotice("Account registration denied (registration limit exceeded)\n"); return 3; } @@ -943,8 +941,7 @@ int mmo_auth_new(const char* userid, const char* pass, const char sex, const cha return 0; // 0 = Unregistered ID // check if the account doesn't exist already - if( accounts->load_str(accounts, &acc, userid) ) - { + if( accounts->load_str(accounts, &acc, userid) ) { ShowNotice("Attempt of creation of an already existant account (account: %s_%c, pass: %s, received pass: %s)\n", userid, sex, acc.pass, pass); return 1; // 1 = Incorrect Password } @@ -965,8 +962,7 @@ int mmo_auth_new(const char* userid, const char* pass, const char sex, const cha ShowNotice("Account creation (account %s, id: %d, pass: %s, sex: %c)\n", acc.userid, acc.account_id, acc.pass, acc.sex); - if( DIFF_TICK(tick, new_reg_tick) > 0 ) - {// Update the registration check. + if( DIFF_TICK(tick, new_reg_tick) > 0 ) {// Update the registration check. num_regs = 0; new_reg_tick = tick + time_allowed*1000; } @@ -978,8 +974,7 @@ int mmo_auth_new(const char* userid, const char* pass, const char sex, const cha //----------------------------------------------------- // Check/authentication of a connection //----------------------------------------------------- -int mmo_auth(struct login_session_data* sd, bool isServer) -{ +int mmo_auth(struct login_session_data* sd, bool isServer) { struct mmo_account acc; int len; @@ -987,28 +982,22 @@ int mmo_auth(struct login_session_data* sd, bool isServer) ip2str(session[sd->fd]->client_addr, ip); // DNS Blacklist check - if( login_config.use_dnsbl ) - { + if( login_config.use_dnsbl ) { char r_ip[16]; char ip_dnsbl[256]; char* dnsbl_serv; - bool matched = false; uint8* sin_addr = (uint8*)&session[sd->fd]->client_addr; sprintf(r_ip, "%u.%u.%u.%u", sin_addr[0], sin_addr[1], sin_addr[2], sin_addr[3]); - for( dnsbl_serv = strtok(login_config.dnsbl_servs,","); !matched && dnsbl_serv != NULL; dnsbl_serv = strtok(NULL,",") ) - { + for( dnsbl_serv = strtok(login_config.dnsbl_servs,","); dnsbl_serv != NULL; dnsbl_serv = strtok(NULL,",") ) { sprintf(ip_dnsbl, "%s.%s", r_ip, trim(dnsbl_serv)); - if( host2ip(ip_dnsbl) ) - matched = true; + if( host2ip(ip_dnsbl) ) { + ShowInfo("DNSBL: (%s) Blacklisted. User Kicked.\n", r_ip); + return 3; + } } - if( matched ) - { - ShowInfo("DNSBL: (%s) Blacklisted. User Kicked.\n", r_ip); - return 3; - } } //Client Version check @@ -1018,8 +1007,7 @@ int mmo_auth(struct login_session_data* sd, bool isServer) len = strnlen(sd->userid, NAME_LENGTH); // Account creation with _M/_F - if( login_config.new_account_flag ) - { + if( login_config.new_account_flag ) { if( len > 2 && strnlen(sd->passwd, NAME_LENGTH) > 0 && // valid user and password lengths sd->passwdenc == 0 && // unencoded password sd->userid[len-2] == '_' && memchr("FfMm", sd->userid[len-1], 4) ) // _M/_F suffix @@ -1036,53 +1024,44 @@ int mmo_auth(struct login_session_data* sd, bool isServer) } } - if( !accounts->load_str(accounts, &acc, sd->userid) ) - { + if( !accounts->load_str(accounts, &acc, sd->userid) ) { ShowNotice("Unknown account (account: %s, received pass: %s, ip: %s)\n", sd->userid, sd->passwd, ip); return 0; // 0 = Unregistered ID } - if( !check_password(sd->md5key, sd->passwdenc, sd->passwd, acc.pass) ) - { + if( !check_password(sd->md5key, sd->passwdenc, sd->passwd, acc.pass) ) { ShowNotice("Invalid password (account: '%s', pass: '%s', received pass: '%s', ip: %s)\n", sd->userid, acc.pass, sd->passwd, ip); return 1; // 1 = Incorrect Password } - if( acc.expiration_time != 0 && acc.expiration_time < time(NULL) ) - { + if( acc.expiration_time != 0 && acc.expiration_time < time(NULL) ) { ShowNotice("Connection refused (account: %s, pass: %s, expired ID, ip: %s)\n", sd->userid, sd->passwd, ip); return 2; // 2 = This ID is expired } - if( acc.unban_time != 0 && acc.unban_time > time(NULL) ) - { + if( acc.unban_time != 0 && acc.unban_time > time(NULL) ) { char tmpstr[24]; timestamp2string(tmpstr, sizeof(tmpstr), acc.unban_time, login_config.date_format); ShowNotice("Connection refused (account: %s, pass: %s, banned until %s, ip: %s)\n", sd->userid, sd->passwd, tmpstr, ip); return 6; // 6 = Your are Prohibited to log in until %s } - if( acc.state != 0 ) - { + if( acc.state != 0 ) { ShowNotice("Connection refused (account: %s, pass: %s, state: %d, ip: %s)\n", sd->userid, sd->passwd, acc.state, ip); return acc.state - 1; } - if( login_config.client_hash_check && !isServer ) - { + if( login_config.client_hash_check && !isServer ) { struct client_hash_node *node = login_config.client_hash_nodes; bool match = false; - if( !sd->has_client_hash ) - { + if( !sd->has_client_hash ) { ShowNotice("Client doesn't sent client hash (account: %s, pass: %s, ip: %s)\n", sd->userid, sd->passwd, acc.state, ip); return 5; } - while( node ) - { - if( node->group_id <= acc.group_id && memcmp(node->hash, sd->client_hash, 16) == 0 ) - { + while( node ) { + if( node->group_id <= acc.group_id && memcmp(node->hash, sd->client_hash, 16) == 0 ) { match = true; break; } @@ -1090,8 +1069,7 @@ int mmo_auth(struct login_session_data* sd, bool isServer) node = node->next; } - if( !match ) - { + if( !match ) { char smd5[33]; int i; |