Seite 1 von 2
IPv6-Kompatibilität von phpBB2
Verfasst: 09.06.2011 19:42
von Andreas0815
Hallo,
ich habe hier ein altes phpBB2, das leider aus diversen Gründen (starke Verzahnung mit einem vor Jahren selbst entwickelten "CMS" und Community-Funktionen) nicht auf Version 3 upgedated werden kann. Das Sicherheitsrisiko ist bekannt.
Im Zuge des gestrigen World IPv6 Day ist aufgefallen, das IPv6-Adressen von Beiträgen nicht richtig angezeigt werden, der Rest schien soweit zu funktionieren.
In der Datenbank habe ich die Länge der VARCHAR-Felder, in denen die IP-Adressen encoded gespeichert werden, bereits erhöht.
Augenscheinlich sind encode_ip() und decode_ip() in der includes/fuctions.php dafür verantwortlich - doch leider fehlt mir das Fachwissen, um dort die nötigen Änderungen vorzunehmen.
Hat hier jemand evtl. schon die nötigen Anpassungen gemacht und kann diese zur Verfügung stellen oder "auf die Schnelle" eine passende Lösung für den Dual-Stack-Betrieb erstellen?
Wäre echt super!
Vielen Dank,
Andreas
Re: IPv6-Kompatibilität von phpBB2
Verfasst: 12.06.2011 14:28
von Andreas0815
Gelöst:
Code: Alles auswählen
function encode_ip($dotquad_ip)
{
if (substr_count($dotquad_ip,":") > 0 && substr_count($dotquad_ip,".") == 0){
// ipv6 - "::1" => "0000000000000000000000000001"(hex)
// unconpress - "::1" => "0:0:0:0:0:0:0:1"
if(strstr($dotquad_ip,"::" )){
$e = explode(":", $dotquad_ip);
$s = 8-sizeof($e)+1;
foreach($e as $key=>$val){
if ($val == ""){
for($i==0;$i<=$s;$i++)
$newip[] = 0;
} else {
$newip[] = $val;
}
}
$dotquad_ip = implode(":", $newip);
}
$ip_sep = explode(':', $dotquad_ip);
return sprintf('%04x%04x%04x%04x%04x%04x%04x%04x', hexdec($ip_sep[0]), hexdec($ip_sep[1]), hexdec($ip_sep[2]), hexdec($ip_sep[3]),hexdec($ip_sep[4]), hexdec($ip_sep[5]), hexdec($ip_sep[6]), hexdec($ip_sep[7]));
} else {
// ipv4 - "127.0.0.1" => "7F000001"
$ip_sep = explode('.', $dotquad_ip);
return sprintf('%02x%02x%02x%02x', $ip_sep[0], $ip_sep[1], $ip_sep[2], $ip_sep[3]);
}
}
function decode_ip($int_ip)
{
if ( strlen($int_ip) == 32){
// ipv6 - "..." => ""
$hexipbang = chunk_split($int_ip, 4, ':');
/* $hexipbang = explode(':', chunk_split($int_ip, 4, ':'));
//compress
if(!strstr($hexipbang,"::" )){
$e = explode(":", $hexipbang);
$zeros = array(0);
$result = array_intersect ($e, $zeros );
if (sizeof($result) >= 6){
if ($e[0]==0) {$newip[] = "";}
foreach($e as $key=>$val){
if ($val !=="0"){
$newip[] = $val;
}
}
$hexipbang = implode("::", $newip);
}
}else{
$hexipbang = implode(":", $hexipbang);
}
*/ return $hexipbang;
} else {
// ipv4 - "7F000001" => "127.0.0.1"
$hexipbang = explode('.', chunk_split($int_ip, 2, '.'));
return hexdec($hexipbang[0]). '.' . hexdec($hexipbang[1]) . '.' . hexdec($hexipbang[2]) . '.' . hexdec($hexipbang[3]);
}
}
Re: IPv6-Kompatibilität von phpBB2
Verfasst: 13.06.2011 00:20
von Dungeonwatcher
Moin!
Großes Dankeschön.
Bye
Re: IPv6-Kompatibilität von phpBB2
Verfasst: 13.11.2011 15:28
von MDuss
Hi Leute.
Und in welcher Datei muss ichdiese Änderung machen, bzw. an welcher Stelle?
Wenn ich noch andere Mods verwende, welche mit IP Adressen arbeiten, muss ich dann in den entsprechenden Dateien auch nach den IP-Funktionen suchen, oder reicht die Änderung von oben aus?
Wie ist das da so im allgemeinen?
THX
MfG
MDuss
Re: IPv6-Kompatibilität von phpBB2
Verfasst: 13.11.2011 15:40
von wolfman24
MDuss hat geschrieben:Und in welcher Datei muss ichdiese Änderung machen, bzw. an welcher Stelle?
Steht alles im ersten Beitrag von Andreas0815, Dateiname und die zu ändernden Funktionen.
MDuss hat geschrieben:Wenn ich noch andere Mods verwende, welche mit IP Adressen arbeiten, muss ich dann in den entsprechenden Dateien auch nach den IP-Funktionen suchen, oder reicht die Änderung von oben aus?
Nicht, wenn diese Mods auf die Funktionen encode_ip() und decode_ip() zugreifen. Wenn nicht, dann sind wahrscheinlich Änderungen nötig.
Re: IPv6-Kompatibilität von phpBB2
Verfasst: 13.11.2011 15:54
von MDuss
Hi wolfman24.
Danke für die Nachricht.
Da habe ich wohl vor lauter Bäume den Wald nicht mehr gesehen

.
Aber noch eine andere Frage.
Im Eröffnungspost steht:
In der Datenbank habe ich die Länge der VARCHAR-Felder, in denen die IP-Adressen encoded gespeichert werden, bereits erhöht.
Auf was kann oder soll man die Feldlänge erhöhen?
Bei mir sind die Felder, welche die IP Speichern vom Typ char(8)
Auf welchen Wert muss man diese Felder erhöhen, damit das ganze richtig läuft?
MfG
MDuss
Re: IPv6-Kompatibilität von phpBB2
Verfasst: 13.04.2012 16:18
von Bachsau
Soweit, wie eine IPv6 maximal groß sein kann. Setze sie auf VARCHAR(32). Dadurch wird kein Platz verschwendet, wenn IPv4 genutzt wird.
@Andreas0815: Danke für den Codeschnipsel. Hast du die Kürzungsfunktion im decode-Teil auskommentiert, weil du sie für sinnlos hältst, oder weil sie nicht funktioniert?
Re: IPv6-Kompatibilität von phpBB2
Verfasst: 13.04.2012 16:32
von MDuss
Danke für die Nachricht Bachsau.
MfG
MDuss
Re: IPv6-Kompatibilität von phpBB2
Verfasst: 13.04.2012 16:33
von Bachsau
In deinen Fall hatte sich das denke schon erledigt, oder? Der Post ist ja schon etwas älter.
Re: IPv6-Kompatibilität von phpBB2
Verfasst: 13.04.2012 19:42
von MDuss
Meine Frage war schon etwas älter, dass stimmt, aber in der zwischenzeit und durch einen Wechsel des Servers hatte ich das hier aus den Augen verloren und sogar schon vergessen

.
MfG
MDuss