Thread: Miscellaneous Hacks - IPV6 Support in VB3
View Single Post
  #10  
Old 05-31-2012, 12:40 PM
GHDpro's Avatar
GHDpro GHDpro is offline
 
Join Date: Mar 2002
Posts: 4
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by empire10 View Post
Unfortunately this does not work anymore in 4.2. Is there any other workaround to use?
I've just hacked together the following, which seems to be working (in vB 4.2):

PHP Code:
function FixIPv6($ip) {
  
// No colon = No IPv6 (return unaltered)
  
if (stristr($ip,':') === false)
    return 
$ip;
  
// Remove IPv6 encapsulation from IPv4 address
  
if (strtolower(substr($ip,0,7)) == '::ffff:')
    return 
substr($ip,7);
  
// Else: Pack IPv6 address into IPv4 address
  
$crc sprintf('%x',crc32($ip));
  
$b ord(pack('H*',substr($crc,0,2)));
  
$c ord(pack('H*',substr($crc,2,2)));
  
$d ord(pack('H*',substr($crc,4,2)));
  
$ip '10.'.$b.'.'.$c.'.'.$d;
  return 
$ip;
}

$_SERVER['REMOTE_ADDR'] = FixIPv6($_SERVER['REMOTE_ADDR']);
$this->ipaddress FixIPv6($this->ipaddress); 

Put above code somewhere in /includes/config.php (the normal vB config file), for example just before the last line (with ?>).

Warning: you might want to make a backup of the config file as messing up editing it will probably cause your forum to stop loading (just blank pages).

I'm also not 100% sure if putting the hack in config.php is quite the right location, as ideally it should of course be run before any vB code that uses IP addresses. But (in v4.2) at least the config file is included (executed) right before the IPADDRESS constant is defined (from the $this->ipaddress variable), so it should work alright.

My main motivation for trying to put it in the config file is that you can now easily upgrade your forum without the need to re-apply the hacks to init.php (which the plugin does require every time).

Note that in my solution I've changed the way IPv6 addresses are encoded; so encoded IPv6 will not look the same as the plugin.
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01177 seconds
  • Memory Usage 1,781KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)bbcode_php
  • (1)bbcode_quote
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • showpost_complete