From 7da3e16ffd950f4eac02658168b393777737a23e Mon Sep 17 00:00:00 2001 From: Jim Wigginton Date: Sun, 11 Jan 2009 16:30:58 +0000 Subject: Fixed bug #40015 - ban list table isn't updated upon user deletion Authorised by: acydburn git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@9249 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/functions_user.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'phpBB/includes/functions_user.php') diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index ea62a75306..3a3c5188bf 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -501,6 +501,11 @@ function user_delete($mode, $user_id, $post_username = false) $cache->destroy('sql', MODERATOR_CACHE_TABLE); + // Delete the user_id from the banlist + $sql = 'DELETE FROM ' . BANLIST_TABLE . ' + WHERE ban_userid = ' . $user_id; + $db->sql_query($sql); + // Remove any undelivered mails... $sql = 'SELECT msg_id, user_id FROM ' . PRIVMSGS_TO_TABLE . ' @@ -3356,4 +3361,4 @@ function group_update_listings($group_id) } } -?> \ No newline at end of file +?> -- cgit v1.2.1 From 0b313ad33300342570e7d367fc4270301cb8c3ac Mon Sep 17 00:00:00 2001 From: Chris Smith Date: Sun, 11 Jan 2009 23:46:40 +0000 Subject: Remove new lines added in r9249 git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@9250 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/functions_user.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'phpBB/includes/functions_user.php') diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index 3a3c5188bf..d1b0fc7e0d 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -3361,4 +3361,4 @@ function group_update_listings($group_id) } } -?> +?> \ No newline at end of file -- cgit v1.2.1 From 14438749e0a4384f8596014878db54dce8ffb44c Mon Sep 17 00:00:00 2001 From: Chris Smith Date: Sat, 7 Feb 2009 20:15:31 +0000 Subject: Whois now works reliably for RIRs other than APNIC and RIPE git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@9315 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/functions_user.php | 47 +++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 19 deletions(-) (limited to 'phpBB/includes/functions_user.php') diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index d1b0fc7e0d..b38f7a049e 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -1151,16 +1151,9 @@ function user_ipwhois($ip) return ''; } - $match = array( - '#RIPE\.NET#is' => 'whois.ripe.net', - '#whois\.apnic\.net#is' => 'whois.apnic.net', - '#nic\.ad\.jp#is' => 'whois.nic.ad.jp', - '#whois\.registro\.br#is' => 'whois.registro.br' - ); - if (($fsk = @fsockopen('whois.arin.net', 43))) { - fputs($fsk, "$ip\n"); + fputs($fsk, "$ip\r\n"); while (!feof($fsk)) { $ipwhois .= fgets($fsk, 1024); @@ -1168,22 +1161,38 @@ function user_ipwhois($ip) @fclose($fsk); } - foreach (array_keys($match) as $server) + $match = array(); + + // Test for referrals from ARIN to other whois databases, roll on rwhois + if (preg_match('#ReferralServer: whois://(.+)#im', $ipwhois, $match)) { - if (preg_match($server, $ipwhois)) + if (strpos($match[1], ':') !== false) + { + $pos = strrpos($match[1], ':'); + $server = substr($match[1], 0, $pos); + $port = (int) substr($match[1], $pos + 1); + unset($pos); + } + else + { + $server = $match[1]; + $port = 43; + } + + $buffer = ''; + + if (($fsk = @fsockopen($server, $port))) { - $ipwhois = ''; - if (($fsk = @fsockopen($match[$server], 43))) + fputs($fsk, "$ip\r\n"); + while (!feof($fsk)) { - fputs($fsk, "$ip\n"); - while (!feof($fsk)) - { - $ipwhois .= fgets($fsk, 1024); - } - @fclose($fsk); + $buffer .= fgets($fsk, 1024); } - break; + @fclose($fsk); } + + // Use the result from ARIN if we don't get any result here + $ipwhois = (empty($buffer)) ? $ipwhois : $buffer; } $ipwhois = htmlspecialchars($ipwhois); -- cgit v1.2.1 From 6c38ee10bd9ba88318d8501ecd6f6e4233612d21 Mon Sep 17 00:00:00 2001 From: Chris Smith Date: Sat, 7 Feb 2009 21:08:28 +0000 Subject: Small addition to r3915, add comments about RFC git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@9317 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/functions_user.php | 3 +++ 1 file changed, 3 insertions(+) (limited to 'phpBB/includes/functions_user.php') diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index b38f7a049e..a65ba9f6e3 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -1139,6 +1139,8 @@ function user_unban($mode, $ban) /** * Whois facility +* +* @link http://tools.ietf.org/html/rfc3912 RFC3912: WHOIS Protocol Specification */ function user_ipwhois($ip) { @@ -1153,6 +1155,7 @@ function user_ipwhois($ip) if (($fsk = @fsockopen('whois.arin.net', 43))) { + // CRLF as per RFC3912 fputs($fsk, "$ip\r\n"); while (!feof($fsk)) { -- cgit v1.2.1 From 2e50df9e1a140f322e091d74500e05b6545a54e1 Mon Sep 17 00:00:00 2001 From: Jim Wigginton Date: Thu, 26 Feb 2009 23:46:46 +0000 Subject: Fixed bug #'ers 41295, 41385, 41955, 41705 and 41985 Authorised by: acydburn git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@9342 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/functions_user.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'phpBB/includes/functions_user.php') diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index a65ba9f6e3..82d20e90a7 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -490,7 +490,7 @@ function user_delete($mode, $user_id, $post_username = false) $db->sql_transaction('begin'); - $table_ary = array(USERS_TABLE, USER_GROUP_TABLE, TOPICS_WATCH_TABLE, FORUMS_WATCH_TABLE, ACL_USERS_TABLE, TOPICS_TRACK_TABLE, TOPICS_POSTED_TABLE, FORUMS_TRACK_TABLE, PROFILE_FIELDS_DATA_TABLE, MODERATOR_CACHE_TABLE, DRAFTS_TABLE, BOOKMARKS_TABLE); + $table_ary = array(USERS_TABLE, USER_GROUP_TABLE, TOPICS_WATCH_TABLE, FORUMS_WATCH_TABLE, ACL_USERS_TABLE, TOPICS_TRACK_TABLE, TOPICS_POSTED_TABLE, FORUMS_TRACK_TABLE, PROFILE_FIELDS_DATA_TABLE, MODERATOR_CACHE_TABLE, DRAFTS_TABLE, BOOKMARKS_TABLE, SESSIONS_KEYS_TABLE); foreach ($table_ary as $table) { @@ -506,6 +506,11 @@ function user_delete($mode, $user_id, $post_username = false) WHERE ban_userid = ' . $user_id; $db->sql_query($sql); + // Delete the user_id from the session table + $sql = 'DELETE FROM ' . SESSIONS_TABLE . ' + WHERE session_user_id = ' . $user_id; + $db->sql_query($sql); + // Remove any undelivered mails... $sql = 'SELECT msg_id, user_id FROM ' . PRIVMSGS_TO_TABLE . ' -- cgit v1.2.1 From 62973fa50416cebd78b46aba7e29f9746e949032 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Sat, 28 Feb 2009 19:22:27 +0000 Subject: - adjust db_tools again to not remove any schema (they may be required) - fill dbms version if not yet filled git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@9351 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/functions_user.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'phpBB/includes/functions_user.php') diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index 82d20e90a7..3cdf18449d 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -502,7 +502,7 @@ function user_delete($mode, $user_id, $post_username = false) $cache->destroy('sql', MODERATOR_CACHE_TABLE); // Delete the user_id from the banlist - $sql = 'DELETE FROM ' . BANLIST_TABLE . ' + $sql = 'DELETE FROM ' . BANLIST_TABLE . ' WHERE ban_userid = ' . $user_id; $db->sql_query($sql); -- cgit v1.2.1 From d597eacce54708f0a5e6788f9cb90c84678e94fb Mon Sep 17 00:00:00 2001 From: Chris Smith Date: Sun, 1 Mar 2009 00:11:20 +0000 Subject: Correct mbstring regular expression for the allowable username characters. #42325 git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@9352 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/functions_user.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'phpBB/includes/functions_user.php') diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index 3cdf18449d..f8589b274f 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -1436,7 +1436,7 @@ function validate_username($username, $allowed_username = false) } else if ($mbstring) { - $regex = '[-\]_+ [[:upper:][:lower:][:digit:]]+'; + $regex = '[-\]_+ \[[:upper:][:lower:][:digit:]]+'; } else { -- cgit v1.2.1 From f515a8ee73df551b19914174d91343e65c48d2b7 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Tue, 17 Mar 2009 15:10:51 +0000 Subject: Bug #41175 - wrong call to mb_ereg_search_init() git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@9385 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/functions_user.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'phpBB/includes/functions_user.php') diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index f8589b274f..65a723d3ae 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -1461,8 +1461,7 @@ function validate_username($username, $allowed_username = false) } else if ($mbstring) { - $matches = array(); - mb_ereg_search_init('^' . $username . '$', $regex, $matches); + mb_ereg_search_init('^' . $username . '$', $regex); if (!mb_ereg_search()) { return 'INVALID_CHARS'; -- cgit v1.2.1 From 7a23115600099375c1fdbd53084f0d2815ecfd38 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Tue, 17 Mar 2009 15:16:24 +0000 Subject: Bug #41175 - wrong call to mb_ereg_search_init() (second commit) git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@9386 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/functions_user.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'phpBB/includes/functions_user.php') diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index 65a723d3ae..8006cb5fd3 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -1461,7 +1461,7 @@ function validate_username($username, $allowed_username = false) } else if ($mbstring) { - mb_ereg_search_init('^' . $username . '$', $regex); + mb_ereg_search_init($username, '^' . $regex . '$'); if (!mb_ereg_search()) { return 'INVALID_CHARS'; -- cgit v1.2.1 From bcabff8a1fe82452366b6f278782fd284effece4 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Thu, 19 Mar 2009 14:27:12 +0000 Subject: do not use coppa group as failover if disabled (remove user from group) git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@9397 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/functions_user.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'phpBB/includes/functions_user.php') diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index 8006cb5fd3..108e884abd 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -2734,9 +2734,16 @@ function group_user_add($group_id, $user_id_ary = false, $username_ary = false, */ function group_user_del($group_id, $user_id_ary = false, $username_ary = false, $group_name = false) { - global $db, $auth; + global $db, $auth, $config; - $group_order = array('ADMINISTRATORS', 'GLOBAL_MODERATORS', 'REGISTERED_COPPA', 'REGISTERED', 'BOTS', 'GUESTS'); + if ($config['coppa_enable']) + { + $group_order = array('ADMINISTRATORS', 'GLOBAL_MODERATORS', 'REGISTERED_COPPA', 'REGISTERED', 'BOTS', 'GUESTS'); + } + else + { + $group_order = array('ADMINISTRATORS', 'GLOBAL_MODERATORS', 'REGISTERED', 'BOTS', 'GUESTS'); + } // We need both username and user_id info $result = user_get_id_name($user_id_ary, $username_ary); -- cgit v1.2.1 From e461162847b1ac9287870de680e8dbd17e9f2fc1 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Thu, 19 Mar 2009 17:01:59 +0000 Subject: Fix race condition for updating post/topic/etc. counter. (reported by BartVB) please do not try such fixes at home - the correct solution would be to create a second config table with integer columns. ;) git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@9398 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/functions_user.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'phpBB/includes/functions_user.php') diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index 108e884abd..6a45011977 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -280,7 +280,7 @@ function user_add($user_row, $cp_data = false) { set_config('newest_user_id', $user_id, true); set_config('newest_username', $user_row['username'], true); - set_config('num_users', $config['num_users'] + 1, true); + set_config_count('num_users', 1, true); $sql = 'SELECT group_colour FROM ' . GROUPS_TABLE . ' @@ -579,7 +579,7 @@ function user_delete($mode, $user_id, $post_username = false) // Decrement number of users if this user is active if ($user_row['user_type'] != USER_INACTIVE && $user_row['user_type'] != USER_IGNORE) { - set_config('num_users', $config['num_users'] - 1, true); + set_config_count('num_users', -1, true); } return false; @@ -660,12 +660,12 @@ function user_active_flip($mode, $user_id_ary, $reason = INACTIVE_MANUAL) if ($deactivated) { - set_config('num_users', $config['num_users'] - $deactivated, true); + set_config_count('num_users', $deactivated * (-1), true); } if ($activated) { - set_config('num_users', $config['num_users'] + $activated, true); + set_config_count('num_users', $activated, true); } // Update latest username -- cgit v1.2.1 From f5467430bd98059530dc33e7bcf1e18b64cb8c4c Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Fri, 27 Mar 2009 16:39:19 +0000 Subject: speed up group deletion and correctly display user parameter if group membership changed in acp -> users -> groups git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@9409 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/functions_user.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'phpBB/includes/functions_user.php') diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index 6a45011977..027db39751 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -2807,13 +2807,14 @@ function group_user_del($group_id, $user_id_ary = false, $username_ary = false, $temp_ary = array(); while ($row = $db->sql_fetchrow($result)) { - if ($default_groups[$row['user_id']] == $group_id && (!isset($temp_ary[$row['user_id']]) || array_search($row['group_name'], $group_order) < $temp_ary[$row['user_id']])) + if ($default_groups[$row['user_id']] == $group_id && (!isset($temp_ary[$row['user_id']]) || $group_order_id[$row['group_name']] < $temp_ary[$row['user_id']])) { $temp_ary[$row['user_id']] = $row['group_id']; } } $db->sql_freeresult($result); + // sql_where_ary holds the new default groups and their users $sql_where_ary = array(); foreach ($temp_ary as $uid => $gid) { @@ -2825,7 +2826,7 @@ function group_user_del($group_id, $user_id_ary = false, $username_ary = false, { if (isset($sql_where_ary[$gid]) && sizeof($sql_where_ary[$gid])) { - remove_default_rank($group_id, $sql_where_ary[$gid]); + remove_default_rank($gid, $sql_where_ary[$gid]); remove_default_avatar($group_id, $sql_where_ary[$gid]); group_set_user_default($gid, $sql_where_ary[$gid], $default_data_ary); } -- cgit v1.2.1