[Admin] Fix: Hinzufügen von IP-Adressen unter PHP 5.6 nicht möglich

Hi,

ich habe mich gestern Abend und heute Vormittag mit dem Problem
auseinandergesetzt, dass Netmon keine IP-Adressen hinzufügt und habe bis auf
weitere Tests von euch auch einen Fix dafür gefunden.

Das Problem liegt in der isInNetwork()-Methode der Ip.class.php. Netmon kennt
unsere verwendeten Netzwerke (fe80::/64 für ipv6 link locals und 10.18.0.0/16
für ipv4). Wenn eine neue IP-Adresse hinzugefügt werden soll, prüft Netmon ob
diese überhaupt zu einem der konfigurierten Netze gehört, damit wir keinen
Datenmüll und private Adressen sammeln.

Dazu wird die Adresse des Netzwerks sowie die hinzuzufügende Adresse inklusive
der Netzmasken in einen Binärstring konvertiert und dann der zur Netzmaske
gehörende Teil verglichen. Sind beide gleich, kann die Adresse hinzugefügt
werden.

Bei diesem Verfahren wird die PHP Methode inet_pton() verwendet, die eine
Menschenlesbare Adresse in eine Maschinenlesbare Adresse umwandelt. Zwischen
den PHP Versionen 5.4 und 5.6 hat sich jedoch anscheinend das Ergebnis dieser
Methode geändert was zu einem Fehler führt (als Füllzeichen werden jetzt
Nullen statt Leerzeichen genommen). Beim ausführen von unpack() auf einer IP-
Adresse muss also "a16" (php 5.6) statt "A16" (php 5.4) als Formatstring
genutzt werden.

Das ganze hat auf srv01 immer problemlos funktioniert, weil wir dort noch PHP
5.4 fahren. Auf srv06 läuft allerdings bereits PHP 5.6. An der kritischen
Stelle wird jetzt einfach eine Versionsunterscheidung gemacht.

Sobald der Server für das Gitlab wieder tut gibts auch einen commit im Gitlab.

LG
Clemens

Hi Clemens,

danke für den Bugfix!
Ich schaue grade mal wegen dem Client-Count, da scheint irgendwas mit
der Übergabe zwischen data datei und Netmon nicht zu klappen.

Vg,

Stefan

das ist eher was für dev ... :wink:

Ich hab auch schon ein haufen commits bei mir auf dem Rechner geparkt
und werde die sobald der Server wieder läuft puschen allerdings für die
Firmware :wink:

LG
Tarek