phpBB2 IPv6-Patch

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
Bachsau
Mitglied
Beiträge: 12
Registriert: 19.10.2011 06:28

phpBB2 IPv6-Patch

Beitrag von Bachsau »

Ausgehend von unvollständigem Code in einem anderen Thread habe ich gerade einen Patch geschrieben, der phpBB2 IPv6-Fähig macht (Sticky?).

Dafür werden zunächst in der Datei includes/functions.php die Funktionen encode_ip und decode_ip durch folgenden Code ersetzt:

Code: Alles auswählen

function encode_ip($dotquad_ip)
{
	if (strpos($dotquad_ip, ':') !== false && strpos($dotquad_ip, '.') === false)
	{
		// ipv6 - "::1" => "0000000000000000000000000001"
		$new_ip = '';
		if(strstr($dotquad_ip,"::" ))
		{
			$ip_sep = array();
			$e = explode(":", $dotquad_ip);
			$s = 8-count($e);
			foreach($e as $value){
				if ($value == '')
				{
					for($i = 0; $i <= $s; $i++) $ip_sep[] = 0;
				}
				else
				{
					$ip_sep[] = $value;
				}
			}
		}
		else
		{
			$ip_sep = explode(':', $dotquad_ip);
		}
		for ($i = 0; $i <= 7; $i++) $new_ip .= str_pad($ip_sep[$i], 4, '0', STR_PAD_LEFT);
		return $new_ip;
	}
	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 - "0000000000000000000000000001" => "::1"
		$hexipbang = array();
		$e = str_split($int_ip, 4);
		foreach($e as $key => $value)
		{
			$value = ltrim($value, '0');
			$hexipbang[] = $value ? $value : '0';
		}
		$new_ip = implode(':', $hexipbang);
		if (preg_match_all('/:(0:)+/s', $new_ip, $zeros, PREG_PATTERN_ORDER))
		{
			rsort($zeros[0], SORT_STRING);
			$new_ip = str_replace($zeros[0][0], '::', $new_ip);
		}
		return $new_ip;
	}
	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]);
	}
}
Anschließen müssen in der Datenbank noch folgende Felder auf VARCHAR(32) geändert werden:
banlist.ban_ip, posts.poster_ip, privmsgs.privmsgs_ip, sessions.session_ip, sessions_keys.last_ip, vote_voters.vote_user_ip

Euer phpBB2 ist jetzt, mit Ausnahme der Bann-Funktion, IPv6-fähig. Das heißt, ihr könnt niemand anhand einer IPv6 bannen. Gebannte Accounts sind natürlich auch über IPv6 gebannt! Da ich mir den Code nicht angesehen habe, ist es besser, gar nicht per IP zu bannen, um Fehlfunktionen zu vermeiden.


Anwender von PHP 4 ersetzen bitte die Zeile 44

Code: Alles auswählen

      $e = str_split($int_ip, 4);
durch

Code: Alles auswählen

      $e = explode(':', chunk_split($int_ip, 4, ':'));
MDuss
Mitglied
Beiträge: 267
Registriert: 06.02.2008 10:21

Re: phpBB2 IPv6-Patch

Beitrag von MDuss »

Danke für den Post.

Werde das nachher (am Wochenede) ins Forum einbauen.

Was stimmt denn mit der Bannfunktion nicht, bzw. was genau läuft da verkehrt?
Denn iin meinem Forum habe ich ein paar IPs gebannt, die aus China stammen. Eventuell Bots????

MfG
MDuss
Benutzeravatar
Bachsau
Mitglied
Beiträge: 12
Registriert: 19.10.2011 06:28

Re: phpBB2 IPv6-Patch

Beitrag von Bachsau »

Hab ich nicht untersucht. Auf jeden Fall geht die von IPv4 aus. Aber wenn man keine Schreibrechte für Gäste hat, muss man in der Regel keine IPs bannen. Vielleicht fix ich's irgendwann, aber da ich's nicht brauch', und grad keine Zeit hab, kann das dauern.
Andreas0815
Mitglied
Beiträge: 3
Registriert: 09.06.2011 19:36

Re: phpBB2 IPv6-Patch

Beitrag von Andreas0815 »

Hallo Bachsau,

zuerst einmal vielen Dank für Deine PN mit Hinweis auf diesen Thread :)

Den von Dir überarbeiteten Code habe ich mal eingebaut und er scheint gut zu funktionieren - sogar das ACP geht jetzt wieder, da bin ich mit IPv6 zuvor immer rausgeflogen :D

Wenn es noch was gibt bitte wieder per PN benachrichtigen - ich schaue hier im Normalfall nicht vorbei und bekomme dann nur durch die E-Mail-Benachrichtigung bei neuer PN mit, das nach mir verlangt wird.
Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

Re: phpBB2 IPv6-Patch

Beitrag von Dungeonwatcher »

Hi! 8)
Bachsau hat geschrieben:Ausgehend von unvollständigem Code in einem anderen Thread habe ich gerade einen Patch geschrieben, der phpBB2 IPv6-Fähig macht (Sticky?).
Großes Danke. :)

Bye
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“